|
@@ -112,6 +112,7 @@ const sendMessage = () => {
|
|
|
messages.value.push({
|
|
|
id: Date.now(),
|
|
|
role: 'user',
|
|
|
+ render_content: inputMessage.value,
|
|
|
content: inputMessage.value,
|
|
|
timestamp: Date.now(),
|
|
|
})
|
|
@@ -119,13 +120,14 @@ const sendMessage = () => {
|
|
|
const rtn = reactive<Message>({
|
|
|
id: Date.now(),
|
|
|
role: 'assistant',
|
|
|
+ render_content: '',
|
|
|
content: '',
|
|
|
timestamp: Date.now(),
|
|
|
- tools_calls: []
|
|
|
+ tools_calls: [],
|
|
|
})
|
|
|
|
|
|
const fn = watch(
|
|
|
- () => rtn.content,
|
|
|
+ () => rtn.render_content,
|
|
|
(newVal) => console.log(newVal)
|
|
|
)
|
|
|
|
|
@@ -141,6 +143,7 @@ const sendMessage = () => {
|
|
|
{
|
|
|
id: 0,
|
|
|
role: 'system',
|
|
|
+ render_content: prompt.value,
|
|
|
content: prompt.value,
|
|
|
timestamp: Date.now(),
|
|
|
},
|
|
@@ -152,9 +155,30 @@ const sendMessage = () => {
|
|
|
onReceive: (resp: ChatResponse) => {
|
|
|
switch (resp.type) {
|
|
|
case 'message':
|
|
|
+ rtn.render_content += resp.message
|
|
|
rtn.content += resp.message
|
|
|
break
|
|
|
+ case 'toolres': {
|
|
|
+ rtn.render_content += `
|
|
|
+\`\`\`tools-loading
|
|
|
+resp
|
|
|
+${resp.response.name}
|
|
|
+${resp.response.data.replace('\n', '')}
|
|
|
+\`\`\`
|
|
|
+
|
|
|
+`
|
|
|
+ break
|
|
|
+ }
|
|
|
+
|
|
|
case 'toolcall': {
|
|
|
+ rtn.render_content += `
|
|
|
+\`\`\`tools-loading
|
|
|
+request
|
|
|
+${resp.request.name}
|
|
|
+${resp.request.data.replace('\n', '')}
|
|
|
+\`\`\`
|
|
|
+
|
|
|
+`
|
|
|
rtn.tools_calls?.push({
|
|
|
id: 'qwq',
|
|
|
type: 'function',
|
|
@@ -165,19 +189,8 @@ const sendMessage = () => {
|
|
|
})
|
|
|
break
|
|
|
}
|
|
|
- case 'toolres': {
|
|
|
- rtn.content += `
|
|
|
-> ### ${resp.response.name}调用结果
|
|
|
->
|
|
|
->
|
|
|
->\`\`\`json
|
|
|
->${resp.response.data.split('\n').join('\n> ')}
|
|
|
->\`\`\`
|
|
|
-`
|
|
|
- break
|
|
|
- }
|
|
|
case 'error':
|
|
|
- rtn.content += `
|
|
|
+ rtn.render_content += `
|
|
|
> ### 系统报错
|
|
|
>
|
|
|
>
|
|
@@ -194,7 +207,7 @@ const sendMessage = () => {
|
|
|
|
|
|
`
|
|
|
}
|
|
|
- rtn.content += '\n'
|
|
|
+ rtn.render_content += '\n'
|
|
|
chatInstance.value = undefined
|
|
|
},
|
|
|
})
|
|
@@ -364,7 +377,7 @@ const redirectToModelManager = () => router.push('manage/model')
|
|
|
<div v-if="message.role === 'assistant'" class="ai-message-container">
|
|
|
<el-avatar class="message-avatar" :icon="ChatDotRound" />
|
|
|
<div class="message-bubble ai-bubble">
|
|
|
- <Markdown v-if="message.content !== ''" :content="message.content" :plugins="plugins" class="markdown-content" />
|
|
|
+ <Markdown v-if="message.render_content !== ''" :content="message.render_content" :plugins="plugins" class="markdown-content" />
|
|
|
<div v-else class="loading-container">
|
|
|
<div class="loading-dots">
|
|
|
<span class="dot"></span>
|
|
@@ -379,7 +392,7 @@ const redirectToModelManager = () => router.push('manage/model')
|
|
|
<!-- 用户消息 -->
|
|
|
<div v-if="message.role === 'user'" class="user-message-container">
|
|
|
<div class="message-bubble user-bubble">
|
|
|
- {{ message.content }}
|
|
|
+ {{ message.render_content }}
|
|
|
</div>
|
|
|
<el-avatar class="message-avatar" :src="getUserInfos.avatar" :icon="User" />
|
|
|
</div>
|