diff --git a/components/md/renderer.vue b/components/md/renderer.vue
index a8f2bb745e035b76c3267c392c4a050068541382..b07a27268be636811867448a6cb1edd2ff46ad80 100644
--- a/components/md/renderer.vue
+++ b/components/md/renderer.vue
@@ -23,7 +23,7 @@ const initMarkdownIt = new MarkdownIt({
} catch (__) {}
}
- return '
+
来源
@@ -182,9 +182,11 @@ const handleContinueAsk = (question) => {
if (asking.value) return;
asking.value = true;
}
-// 处理generate
+
+// 处理ai generate
let aiChatController = null; // 用户取消操作方法
const markedEnd = '[DONE]';
+let storeSource = [];
const handleFormFetchData = (fetchData) => {
let message = {};
try {
@@ -195,22 +197,35 @@ const handleFormFetchData = (fetchData) => {
if (Object.keys(message).length === 0) return;
const index = data.value.length === 0 ? 0 : data.value.length - 1;
data.value[index] = data.value[index] || {};
- if (message.meta.type === 'answer') {
+ const { meta, choices } = message;
+ if (meta.type === 'answer') {
Object.assign(data.value[index], {
question: state.query,
article: message.choices[0].message.content
})
- } else if (message.meta.type === 'log') {
- console.log('log', JSON.stringify(message))
- } else if (message.meta.type === 'rephrase_question') {
- Object.assign(data.value[index], {
- description: message.choices[0].message.content
- })
+ return;
+ }
+ if (meta.type === 'log') {
+ if (meta.action === 'rephrase_question') {
+ Object.assign(data.value[index], { description: choices[0].message.content })
+ } else if (meta.action === 'search_file') {
+ let source = choices[0].message.content;
+ storeSource = source.split('\n').map(item => {
+ return {
+ label: item,
+ link: '',
+ repo: ''
+ }
+ });
+ }
}
}
const handleMessage = (event) => {
if (event.data === markedEnd) {
asking.value = false;
+ const index = data.value.length === 0 ? 0 : data.value.length - 1;
+ data.value[index] = data.value[index] || {};
+ Object.assign(data.value[index], { source: storeSource });
return;
}
handleFormFetchData(event.data)