【增加】chat 增加 modal 切换
This commit is contained in:
parent
27569a746e
commit
cea5b8b138
37
src/api/ai/chat/conversation/index.ts
Normal file
37
src/api/ai/chat/conversation/index.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 聊天VO
|
||||||
|
export interface ChatConversationVO {
|
||||||
|
id: string // 会话编号
|
||||||
|
userId: string // 用户编号
|
||||||
|
title: string // 会话标题
|
||||||
|
pinned: string // 是否置顶
|
||||||
|
roleId: string // 角色编号
|
||||||
|
model: number // 模型标志
|
||||||
|
modelId: number // 模型编号
|
||||||
|
temperature: string // 温度参数
|
||||||
|
maxTokens: string // 单条回复的最大 Token 数量
|
||||||
|
maxContexts: string // 上下文的最大 Message 数量
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ChatConversationUpdateVO {
|
||||||
|
id: string // 会话编号
|
||||||
|
title: string // 会话标题
|
||||||
|
pinned: string // 是否置顶
|
||||||
|
modelId: number // 模型编号
|
||||||
|
temperature: string // 温度参数
|
||||||
|
maxTokens: string // 单条回复的最大 Token 数量
|
||||||
|
maxContexts: string // 上下文的最大 Message 数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// AI chat 聊天
|
||||||
|
export const ChatConversationApi = {
|
||||||
|
// 获取 Conversation
|
||||||
|
get: async (id: number) => {
|
||||||
|
return await request.get({ url: `/ai/chat/conversation/get?id=${id}`})
|
||||||
|
},
|
||||||
|
// 更新 Conversation
|
||||||
|
update: async (data: ChatConversationUpdateVO) => {
|
||||||
|
return await request.put({ url: `/ai/chat/conversation/update`, data})
|
||||||
|
},
|
||||||
|
}
|
@ -72,11 +72,11 @@
|
|||||||
<!-- </el-button>-->
|
<!-- </el-button>-->
|
||||||
<el-dropdown style="margin-right: 12px;" @command="modalClick" >
|
<el-dropdown style="margin-right: 12px;" @command="modalClick" >
|
||||||
<el-button type="primary">
|
<el-button type="primary">
|
||||||
GPT3.5 <Icon icon="ep:setting" style="margin-left: 10px;"/>
|
<span v-html="useModal?.name"></span> <Icon icon="ep:setting" style="margin-left: 10px;"/>
|
||||||
</el-button>
|
</el-button>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu v-for="(item, index) in modalList" :key="index" >
|
<el-dropdown-menu v-for="(item, index) in modalList" :key="index" >
|
||||||
<el-dropdown-item :command="item.model" >{{item.model}}</el-dropdown-item>
|
<el-dropdown-item :command="item" >{{item.name}}</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
@ -176,6 +176,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ChatMessageApi, ChatMessageSendVO, ChatMessageVO} from "@/api/ai/chat/message"
|
import {ChatMessageApi, ChatMessageSendVO, ChatMessageVO} from "@/api/ai/chat/message"
|
||||||
|
import {ChatConversationApi, ChatConversationUpdateVO} from "@/api/ai/chat/conversation"
|
||||||
import {ChatModelApi, ChatModelVO} from "@/api/ai/model/chatModel"
|
import {ChatModelApi, ChatModelVO} from "@/api/ai/model/chatModel"
|
||||||
import {formatDate} from "@/utils/formatTime"
|
import {formatDate} from "@/utils/formatTime"
|
||||||
import {useClipboard} from "@vueuse/core";
|
import {useClipboard} from "@vueuse/core";
|
||||||
@ -230,6 +231,7 @@ const isScrolling = ref(false)//用于判断用户是否在滚动
|
|||||||
/** chat message 列表 */
|
/** chat message 列表 */
|
||||||
// defineOptions({ name: 'chatMessageList' })
|
// defineOptions({ name: 'chatMessageList' })
|
||||||
const list = ref<ChatMessageVO[]>([]) // 列表的数据
|
const list = ref<ChatMessageVO[]>([]) // 列表的数据
|
||||||
|
const useModal = ref<ChatModelVO>() // 使用的modal
|
||||||
const modalList = ref<ChatModelVO[]>([]) // 列表的数据
|
const modalList = ref<ChatModelVO[]>([]) // 列表的数据
|
||||||
|
|
||||||
|
|
||||||
@ -406,12 +408,23 @@ const stopStream = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const modalClick = async (command) => {
|
const modalClick = async (command) => {
|
||||||
console.log('22', command)
|
const update = {
|
||||||
|
id: conversationId.value,
|
||||||
|
modelId: command.id,
|
||||||
|
} as unknown as ChatConversationUpdateVO
|
||||||
|
// 切换 modal
|
||||||
|
useModal.value = command
|
||||||
|
// 更新
|
||||||
|
await ChatConversationApi.update(update)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getModalList = async () => {
|
const getModalList = async () => {
|
||||||
// 获取模型 as unknown as ChatModelVO
|
// 获取模型 as unknown as ChatModelVO
|
||||||
modalList.value = await ChatModelApi.getChatModelSimpleList(0) as unknown as ChatModelVO[]
|
modalList.value = await ChatModelApi.getChatModelSimpleList(0) as unknown as ChatModelVO[]
|
||||||
|
// 默认选中第一个模型
|
||||||
|
if (modalList.value.length) {
|
||||||
|
useModal.value = modalList.value[0]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
|
Loading…
Reference in New Issue
Block a user