@blueking/ai-ui-sdk 0.4.1-beta.1 → 0.4.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/render-agent/agent-type.vue.css +3 -3
- package/dist/components/render-agent/agent-type.vue.js +1 -1
- package/dist/components/render-auto-height-textarea/index.vue.css +11 -11
- package/dist/components/render-auto-height-textarea/index.vue.js +1 -1
- package/dist/components/render-auto-refresh/index.vue.css +8 -8
- package/dist/components/render-auto-refresh/index.vue.js +1 -1
- package/dist/components/render-card/agent/prefix-info-tool.vue.css +5 -5
- package/dist/components/render-card/agent/prefix-info-tool.vue.js +1 -1
- package/dist/components/render-card/base.vue.css +12 -12
- package/dist/components/render-card/base.vue.js +1 -1
- package/dist/components/render-card/llm/corner-badge.vue.css +3 -3
- package/dist/components/render-card/llm/corner-badge.vue.js +1 -1
- package/dist/components/render-card/llm/icons.vue.css +2 -2
- package/dist/components/render-card/llm/icons.vue.js +1 -1
- package/dist/components/render-card/llm/info.vue.css +1 -1
- package/dist/components/render-card/llm/info.vue.js +1 -1
- package/dist/components/render-card/llm/tag-prefix.vue.css +3 -3
- package/dist/components/render-card/llm/tag-prefix.vue.js +1 -1
- package/dist/components/render-card/mcp/name-suffix.vue.css +2 -2
- package/dist/components/render-card/mcp/name-suffix.vue.js +1 -1
- package/dist/components/render-card/prompt/icons.vue.css +1 -1
- package/dist/components/render-card/prompt/icons.vue.js +1 -1
- package/dist/components/render-card/skill/tag-prefix.vue.css +3 -3
- package/dist/components/render-card/skill/tag-prefix.vue.js +1 -1
- package/dist/components/render-checkbox/index.vue.css +9 -9
- package/dist/components/render-checkbox/index.vue.js +1 -1
- package/dist/components/render-choose-tag/index.vue.css +7 -7
- package/dist/components/render-choose-tag/index.vue.js +1 -1
- package/dist/components/render-collapse/index.vue.css +2 -2
- package/dist/components/render-collapse/index.vue.js +1 -1
- package/dist/components/render-collection/actions/index.script.vue.js.js +19 -80
- package/dist/components/render-collection/content/index.script.vue.js +3 -4
- package/dist/components/render-collection/content/index.vue.css +4 -4
- package/dist/components/render-collection/content/index.vue.js +1 -1
- package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.css +3 -3
- package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.js +1 -1
- package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.css +1 -1
- package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.js +1 -1
- package/dist/components/render-dataset/components/dataset-data-tool-icons/index.script.vue.js +1 -1
- package/dist/components/render-dataset/components/dataset-data-valid/index.vue.css +1 -1
- package/dist/components/render-dataset/components/dataset-data-valid/index.vue.js +1 -1
- package/dist/components/render-dataset/components/edit-dataset-data/index.vue.css +3 -3
- package/dist/components/render-dataset/components/edit-dataset-data/index.vue.js +1 -1
- package/dist/components/render-dataset/components/operation-record/index.vue.css +4 -4
- package/dist/components/render-dataset/components/operation-record/index.vue.js +1 -1
- package/dist/components/render-dataset/components/operation-record/table/index.vue.css +1 -1
- package/dist/components/render-dataset/components/operation-record/table/index.vue.js +1 -1
- package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.css +2 -2
- package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.js +1 -1
- package/dist/components/render-dataset/components/plus-dataset/index.vue.css +1 -1
- package/dist/components/render-dataset/components/plus-dataset/index.vue.js +1 -1
- package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.css +2 -2
- package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.js +1 -1
- package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.css +1 -1
- package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.js +1 -1
- package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.css +1 -1
- package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.js +1 -1
- package/dist/components/render-dataset/components/review-dataset-data/index.vue.css +10 -10
- package/dist/components/render-dataset/components/review-dataset-data/index.vue.js +1 -1
- package/dist/components/render-dataset-detail-origin-data/index.vue.css +3 -3
- package/dist/components/render-dataset-detail-origin-data/index.vue.js +1 -1
- package/dist/components/render-dataset-list/components/main.vue.css +3 -3
- package/dist/components/render-dataset-list/components/main.vue.js +1 -1
- package/dist/components/render-dataset-list/index.vue.css +2 -2
- package/dist/components/render-dataset-list/index.vue.js +1 -1
- package/dist/components/render-dialog/choose-resource.vue.css +3 -3
- package/dist/components/render-dialog/choose-resource.vue.js +1 -1
- package/dist/components/render-dialog/choose-result.vue.css +14 -14
- package/dist/components/render-dialog/choose-result.vue.js +1 -1
- package/dist/components/render-dialog/choose-space.vue.css +9 -9
- package/dist/components/render-dialog/choose-space.vue.js +1 -1
- package/dist/components/render-dialog/index.vue.css +6 -6
- package/dist/components/render-dialog/index.vue.js +1 -1
- package/dist/components/render-dropdown/index.vue.d.ts +2 -2
- package/dist/components/render-file-card/index.vue.css +11 -11
- package/dist/components/render-file-card/index.vue.js +1 -1
- package/dist/components/render-file-type-icon/index.vue.css +6 -6
- package/dist/components/render-file-type-icon/index.vue.js +1 -1
- package/dist/components/render-generate-tag/index.vue.css +5 -5
- package/dist/components/render-generate-tag/index.vue.js +1 -1
- package/dist/components/render-header/index.vue.css +3 -3
- package/dist/components/render-header/index.vue.js +1 -1
- package/dist/components/render-knowledge/icon/index.vue.css +1 -1
- package/dist/components/render-knowledge/icon/index.vue.js +1 -1
- package/dist/components/render-prompt/actions/index.script.vue.js.js +21 -76
- package/dist/components/render-prompt/content/index.vue.css +1 -1
- package/dist/components/render-prompt/content/index.vue.js +1 -1
- package/dist/components/render-reference/index.vue.css +2 -2
- package/dist/components/render-reference/index.vue.js +1 -1
- package/dist/components/render-resource-version/index.vue.css +2 -2
- package/dist/components/render-resource-version/index.vue.js +1 -1
- package/dist/components/render-router-tab/index.vue.css +3 -3
- package/dist/components/render-router-tab/index.vue.js +1 -1
- package/dist/components/render-select-plus-extension/index.vue.css +3 -3
- package/dist/components/render-select-plus-extension/index.vue.js +1 -1
- package/dist/components/render-t-table/index.vue.css +27 -27
- package/dist/components/render-t-table/index.vue.js +1 -1
- package/dist/components/render-tag-tree/index.vue.css +7 -7
- package/dist/components/render-tag-tree/index.vue.js +1 -1
- package/dist/components/render-tags/index.vue.css +6 -6
- package/dist/components/render-tags/index.vue.js +1 -1
- package/dist/components.d.ts +1 -2
- package/dist/components.ts.js +1 -2
- package/dist/css/g-utilities.css +2 -10
- package/dist/css/g-utilities.manifest.json +0 -2
- package/dist/hooks/use-style.ts.js +2 -9
- package/dist/hooks.d.ts +0 -4
- package/dist/hooks.ts.js +0 -4
- package/dist/http/helper/agent.d.ts +1 -7
- package/dist/http/helper/agent.ts.js +0 -26
- package/dist/http/helper/permission.ts.js +8 -2
- package/dist/https.d.ts +0 -1
- package/dist/https.ts.js +0 -1
- package/dist/transforms.d.ts +0 -1
- package/dist/transforms.ts.js +0 -1
- package/dist/types/agent.d.ts +0 -39
- package/dist/types/common.d.ts +2 -2
- package/dist/types/enum.d.ts +4 -48
- package/dist/types/enum.ts.js +3 -51
- package/dist/types/permission.d.ts +6 -0
- package/dist/types.d.ts +0 -1
- package/dist/types.ts.js +0 -1
- package/package.json +2 -8
- package/dist/common/chart-helper.d.ts +0 -39
- package/dist/common/chart-helper.ts.js +0 -196
- package/dist/components/render-like/index.script.vue.js.js +0 -312
- package/dist/components/render-like/index.vue.css +0 -20
- package/dist/components/render-like/index.vue.d.ts +0 -31
- package/dist/components/render-like/index.vue.js +0 -5
- package/dist/helpers.d.ts +0 -1
- package/dist/helpers.ts.js +0 -1
- package/dist/hooks/use-chat.d.ts +0 -1083
- package/dist/hooks/use-chat.ts.js +0 -678
- package/dist/hooks/use-reference-doc.d.ts +0 -14
- package/dist/hooks/use-reference-doc.ts.js +0 -176
- package/dist/hooks/use-session-http.d.ts +0 -38
- package/dist/hooks/use-session-http.ts.js +0 -159
- package/dist/hooks/use-summary.d.ts +0 -9
- package/dist/hooks/use-summary.ts.js +0 -55
- package/dist/hooks/use-think.d.ts +0 -21
- package/dist/hooks/use-think.ts.js +0 -136
- package/dist/http/helper/session.d.ts +0 -65
- package/dist/http/helper/session.ts.js +0 -267
- package/dist/types/session.d.ts +0 -199
- package/dist/types/session.ts.js +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../types/session';
|
|
2
|
-
/**
|
|
3
|
-
* 获取引用资料的 HTML 内容
|
|
4
|
-
* @param documents
|
|
5
|
-
* @returns
|
|
6
|
-
*/
|
|
7
|
-
export declare const getHtmlContentFromDocuments: (documents: Document[], hideReferenceDocIcon?: boolean) => string;
|
|
8
|
-
/**
|
|
9
|
-
* 移除引用资料的 HTML 内容
|
|
10
|
-
* @param content
|
|
11
|
-
* @returns
|
|
12
|
-
*/
|
|
13
|
-
export declare const removeReferenceDoc: (content: string) => string;
|
|
14
|
-
export declare const useReferenceDoc: () => void;
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { onBeforeMount, onBeforeUnmount } from 'vue';
|
|
2
|
-
/**
|
|
3
|
-
* 获取引用资料的 HTML 内容
|
|
4
|
-
* @param documents
|
|
5
|
-
* @returns
|
|
6
|
-
*/ export const getHtmlContentFromDocuments = (documents, hideReferenceDocIcon)=>{
|
|
7
|
-
let htmlContent = `<section class="knowledge-head click-close"><svg class="ai-ui-sdk-wenzhang"><use href="#ai-ui-sdk-wenzhang"></use></svg>找到 ${documents.length} 篇资料参考<i class="ai-ui-sdk-icon ai-ui-sdk-angle-up"></i></section><ul class="knowledge-body">`;
|
|
8
|
-
documents.forEach((document1)=>{
|
|
9
|
-
const { path, file_path: filePath, display_name: displayName, preview_path: previewPath } = document1.metadata;
|
|
10
|
-
const title = displayName || filePath.split('/').pop();
|
|
11
|
-
const textPath = hideReferenceDocIcon ? path : previewPath;
|
|
12
|
-
htmlContent += `<li class="knowledge-item"><i class="ai-ui-sdk-icon ai-ui-sdk-zhishiku"></i><a href="${textPath}" title="${title} (${textPath})" target="_blank" class="knowledge-link g-flex-truncate">${title}</a>${!hideReferenceDocIcon ? `<a href="${path}" title="预览原文" target="_blank" class="knowledge-link hover-show"><i class="ai-ui-sdk-icon ai-ui-sdk-yanjing-kejian"></i></a>` : ''}</li>`;
|
|
13
|
-
});
|
|
14
|
-
htmlContent += '</ul>';
|
|
15
|
-
return htmlContent;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* 移除引用资料的 HTML 内容
|
|
19
|
-
* @param content
|
|
20
|
-
* @returns
|
|
21
|
-
*/ export const removeReferenceDoc = (content)=>{
|
|
22
|
-
return content.replace(/<section class="knowledge-head click-close">[\s\S]*?<\/section>/, '').replace(/<ul class="knowledge-body">[\s\S]*?<\/ul>/, '').replace(/<section class="knowledge-tips">[\s\S]*?<\/section>/, '');
|
|
23
|
-
};
|
|
24
|
-
export const useReferenceDoc = ()=>{
|
|
25
|
-
let styleEle = null;
|
|
26
|
-
const addReferenceDocStyle = ()=>{
|
|
27
|
-
// 旧版知识样式
|
|
28
|
-
const oldStyle = `.knowledge-tips {
|
|
29
|
-
position: relative;
|
|
30
|
-
padding: 6px 8px;
|
|
31
|
-
margin-bottom: 14px;
|
|
32
|
-
line-height: 22px;
|
|
33
|
-
background: #f5f7fa;
|
|
34
|
-
border-radius: 4px;
|
|
35
|
-
|
|
36
|
-
&.closed {
|
|
37
|
-
.ai-ui-sdk-angle-up {
|
|
38
|
-
transform: rotate(180deg);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.knowledge-summary {
|
|
42
|
-
margin-bottom: 0;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.knowledge-link {
|
|
46
|
-
display: none;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.ai-ui-sdk-angle-up {
|
|
51
|
-
position: absolute;
|
|
52
|
-
top: 4px;
|
|
53
|
-
right: 0px;
|
|
54
|
-
font-size: 22px;
|
|
55
|
-
color: #979ba5;
|
|
56
|
-
cursor: pointer;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.ai-ui-sdk-help-document {
|
|
60
|
-
margin-right: 4px;
|
|
61
|
-
font-size: 19px;
|
|
62
|
-
color: #3a84ff;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.knowledge-summary {
|
|
66
|
-
display: block;
|
|
67
|
-
margin-bottom: 4px;
|
|
68
|
-
color: #313238;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.knowledge-link {
|
|
72
|
-
display: block;
|
|
73
|
-
color: #3a84ff;
|
|
74
|
-
text-decoration: none;
|
|
75
|
-
cursor: pointer;
|
|
76
|
-
|
|
77
|
-
.ai-ui-sdk-cc-jump-link {
|
|
78
|
-
font-size: 14px;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
&:last-child {
|
|
82
|
-
margin-bottom: 2px;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}`;
|
|
86
|
-
// 新版知识样式
|
|
87
|
-
const newStyle = `.knowledge-head {
|
|
88
|
-
display: flex;
|
|
89
|
-
align-items: center;
|
|
90
|
-
padding: 0 8px 0 6px;
|
|
91
|
-
margin-bottom: 8px;
|
|
92
|
-
line-height: 28px;
|
|
93
|
-
background: #F0F1F5;
|
|
94
|
-
border-radius: 4px;
|
|
95
|
-
font-size: 12px;
|
|
96
|
-
color: #313238;
|
|
97
|
-
cursor: pointer;
|
|
98
|
-
width: fit-content;
|
|
99
|
-
|
|
100
|
-
.ai-ui-sdk-wenzhang {
|
|
101
|
-
width: 14px;
|
|
102
|
-
height: 14px;
|
|
103
|
-
margin-right: 6px;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.ai-ui-sdk-angle-up {
|
|
107
|
-
font-size: 22px;
|
|
108
|
-
color: #4D4F56;
|
|
109
|
-
margin-left: 4px;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
&.closed {
|
|
113
|
-
margin-bottom: 16px;
|
|
114
|
-
|
|
115
|
-
.ai-ui-sdk-angle-up {
|
|
116
|
-
transform: rotate(180deg);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
&~ .knowledge-body {
|
|
120
|
-
display: none;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
&:hover {
|
|
125
|
-
background: #EAEBF0;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
.knowledge-body {
|
|
129
|
-
background: #F5F7FA;
|
|
130
|
-
padding: 16px 0 !important;
|
|
131
|
-
.knowledge-item {
|
|
132
|
-
padding-left: 10px;
|
|
133
|
-
display: flex;
|
|
134
|
-
align-items: center;
|
|
135
|
-
line-height: 28px;
|
|
136
|
-
.hover-show {
|
|
137
|
-
display: none;
|
|
138
|
-
}
|
|
139
|
-
a {
|
|
140
|
-
margin-right: 10px;
|
|
141
|
-
&:has(i) {
|
|
142
|
-
padding: 0 10px;
|
|
143
|
-
margin-right: 0;
|
|
144
|
-
text-decoration: none !important;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
.ai-ui-sdk-zhishiku {
|
|
148
|
-
color: #D66F6B;
|
|
149
|
-
font-size: 14px;
|
|
150
|
-
margin-right: 6px;
|
|
151
|
-
}
|
|
152
|
-
&:hover {
|
|
153
|
-
background: #EAEBF0;
|
|
154
|
-
.hover-show {
|
|
155
|
-
display: inline;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}`;
|
|
160
|
-
styleEle = document.createElement('style');
|
|
161
|
-
styleEle.textContent = oldStyle + newStyle;
|
|
162
|
-
document.head.appendChild(styleEle);
|
|
163
|
-
};
|
|
164
|
-
const removeReferenceDocStyle = ()=>{
|
|
165
|
-
if (styleEle) {
|
|
166
|
-
styleEle.remove();
|
|
167
|
-
styleEle = null;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
onBeforeMount(()=>{
|
|
171
|
-
addReferenceDocStyle();
|
|
172
|
-
});
|
|
173
|
-
onBeforeUnmount(()=>{
|
|
174
|
-
removeReferenceDocStyle();
|
|
175
|
-
});
|
|
176
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { RequestHookData } from '@/types/common';
|
|
2
|
-
import type { IChatGroup, IChatGroupRequest, ISession, ISessionContent, ISessionFeedback } from '@/types/session';
|
|
3
|
-
export declare const useSessionHttp: ({ apiPrefix, headers, beforeRequest, afterRequest, }: {
|
|
4
|
-
apiPrefix: string;
|
|
5
|
-
headers?: Record<string, string>;
|
|
6
|
-
beforeRequest?: (data: RequestHookData) => RequestHookData;
|
|
7
|
-
afterRequest?: (data: RequestHookData, response: Response) => void;
|
|
8
|
-
}) => {
|
|
9
|
-
getAgentInfo: () => Promise<import("@/types/agent").IAgentInfo>;
|
|
10
|
-
clearSession: (sessionCode: string) => Promise<unknown>;
|
|
11
|
-
getSessions: () => Promise<ISession[]>;
|
|
12
|
-
plusSession: (data: ISession) => Promise<ISession>;
|
|
13
|
-
modifySession: (data: ISession) => Promise<ISession>;
|
|
14
|
-
deleteSession: (sessionCode: string) => Promise<unknown>;
|
|
15
|
-
batchDeleteSessions: (sessionCodes: string[]) => Promise<number>;
|
|
16
|
-
getSession: (sessionCode: string) => Promise<ISession>;
|
|
17
|
-
getSessionContents: (sessionCode: string) => Promise<ISessionContent[]>;
|
|
18
|
-
plusSessionContent: (data: ISessionContent) => Promise<ISessionContent>;
|
|
19
|
-
modifySessionContent: (data: ISessionContent) => Promise<ISessionContent>;
|
|
20
|
-
deleteSessionContent: (id: number) => Promise<ISessionContent>;
|
|
21
|
-
batchDeleteSessionContents: (ids: number[]) => Promise<number>;
|
|
22
|
-
renameSession: (sessionCode: string) => Promise<ISession>;
|
|
23
|
-
getChatGroup: (data: IChatGroupRequest) => Promise<IChatGroup>;
|
|
24
|
-
postSessionFeedback: (data: ISessionFeedback) => Promise<{
|
|
25
|
-
sessionCode: string;
|
|
26
|
-
sessionContentIds: number[];
|
|
27
|
-
rate: number;
|
|
28
|
-
comment: string;
|
|
29
|
-
labels: string[];
|
|
30
|
-
}>;
|
|
31
|
-
getSessionFeedbackLabels: (rate: number) => Promise<string[]>;
|
|
32
|
-
stopSessionContent: () => Promise<unknown>;
|
|
33
|
-
shareSession: (data: {
|
|
34
|
-
session_code: string;
|
|
35
|
-
content_ids: number[];
|
|
36
|
-
expired_at?: number;
|
|
37
|
-
}) => Promise<unknown>;
|
|
38
|
-
};
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import fetch from '../http/fetch/index.ts.js';
|
|
2
|
-
import { transferAgentInfoApi2AgentInfo } from '../http/helper/agent.ts.js';
|
|
3
|
-
import { transferSession2SessionApi, transferSessionApi2Session, transferSessionContent2SessionContentApi, transferSessionContentApi2SessionContent, transferSessionFeedback2SessionFeedbackApi, transferSessionFeedbackApi2SessionFeedback } from '../http/helper/session.ts.js';
|
|
4
|
-
// session 相关接口
|
|
5
|
-
export const useSessionHttp = ({ apiPrefix, headers, beforeRequest, afterRequest })=>{
|
|
6
|
-
// 获取 agent 信息
|
|
7
|
-
const getAgentInfo = ()=>fetch.get(`${apiPrefix}/agent/info/`, undefined, {
|
|
8
|
-
headers,
|
|
9
|
-
beforeRequest,
|
|
10
|
-
afterRequest
|
|
11
|
-
}).then((res)=>transferAgentInfoApi2AgentInfo(res));
|
|
12
|
-
// 清除聊天上下文
|
|
13
|
-
const clearSession = (sessionCode)=>fetch.post(`${apiPrefix}/chat_completion/${sessionCode}/clear/`, undefined, {
|
|
14
|
-
headers,
|
|
15
|
-
beforeRequest,
|
|
16
|
-
afterRequest
|
|
17
|
-
});
|
|
18
|
-
// 获取会话列表
|
|
19
|
-
const getSessions = ()=>fetch.get(`${apiPrefix}/session/`, undefined, {
|
|
20
|
-
headers,
|
|
21
|
-
beforeRequest,
|
|
22
|
-
afterRequest
|
|
23
|
-
}).then((res)=>res.map(transferSessionApi2Session));
|
|
24
|
-
// 新增会话
|
|
25
|
-
const plusSession = (data)=>fetch.post(`${apiPrefix}/session/`, transferSession2SessionApi(data), {
|
|
26
|
-
headers,
|
|
27
|
-
beforeRequest,
|
|
28
|
-
afterRequest
|
|
29
|
-
}).then((res)=>transferSessionApi2Session(res));
|
|
30
|
-
// 修改会话
|
|
31
|
-
const modifySession = (data)=>fetch.put(`${apiPrefix}/session/${data.sessionCode}/`, transferSession2SessionApi(data), {
|
|
32
|
-
headers,
|
|
33
|
-
beforeRequest,
|
|
34
|
-
afterRequest
|
|
35
|
-
}).then((res)=>transferSessionApi2Session(res));
|
|
36
|
-
// 删除会话
|
|
37
|
-
const deleteSession = (sessionCode)=>fetch.delete(`${apiPrefix}/session/${sessionCode}/`, undefined, {
|
|
38
|
-
headers,
|
|
39
|
-
beforeRequest,
|
|
40
|
-
afterRequest
|
|
41
|
-
});
|
|
42
|
-
// 批量删除会话
|
|
43
|
-
const batchDeleteSessions = (sessionCodes)=>fetch.post(`${apiPrefix}/session/batch_delete/`, {
|
|
44
|
-
session_codes: sessionCodes
|
|
45
|
-
}, {
|
|
46
|
-
headers,
|
|
47
|
-
beforeRequest,
|
|
48
|
-
afterRequest
|
|
49
|
-
});
|
|
50
|
-
// 获取会话资源
|
|
51
|
-
const getSession = (sessionCode)=>fetch.get(`${apiPrefix}/session/${sessionCode}/`, undefined, {
|
|
52
|
-
headers,
|
|
53
|
-
beforeRequest,
|
|
54
|
-
afterRequest
|
|
55
|
-
}).then((res)=>transferSessionApi2Session(res));
|
|
56
|
-
// 提交会话反馈
|
|
57
|
-
const postSessionFeedback = (data)=>fetch.post(`${apiPrefix}/session_feedback/`, transferSessionFeedback2SessionFeedbackApi(data), {
|
|
58
|
-
headers,
|
|
59
|
-
beforeRequest,
|
|
60
|
-
afterRequest
|
|
61
|
-
}).then((res)=>transferSessionFeedbackApi2SessionFeedback(res));
|
|
62
|
-
// 获取反馈标签列表
|
|
63
|
-
const getSessionFeedbackLabels = (rate)=>fetch.get(`${apiPrefix}/session_feedback/reasons/`, {
|
|
64
|
-
rate
|
|
65
|
-
}, {
|
|
66
|
-
headers,
|
|
67
|
-
beforeRequest,
|
|
68
|
-
afterRequest
|
|
69
|
-
});
|
|
70
|
-
// 获取会话内容列表
|
|
71
|
-
const getSessionContents = (sessionCode)=>fetch.get(`${apiPrefix}/session_content/content/`, {
|
|
72
|
-
session_code: sessionCode
|
|
73
|
-
}, {
|
|
74
|
-
headers,
|
|
75
|
-
beforeRequest,
|
|
76
|
-
afterRequest
|
|
77
|
-
}).then((res)=>res.map(transferSessionContentApi2SessionContent));
|
|
78
|
-
// 新增会话内容
|
|
79
|
-
const plusSessionContent = (data)=>fetch.post(`${apiPrefix}/session_content/`, transferSessionContent2SessionContentApi(data), {
|
|
80
|
-
headers,
|
|
81
|
-
beforeRequest,
|
|
82
|
-
afterRequest
|
|
83
|
-
});
|
|
84
|
-
// 修改会话内容
|
|
85
|
-
const modifySessionContent = (data)=>fetch.put(`${apiPrefix}/session_content/${data.id}/`, transferSessionContent2SessionContentApi(data), {
|
|
86
|
-
headers,
|
|
87
|
-
beforeRequest,
|
|
88
|
-
afterRequest
|
|
89
|
-
});
|
|
90
|
-
// 删除会话内容
|
|
91
|
-
const deleteSessionContent = (id)=>fetch.delete(`${apiPrefix}/session_content/${id}/`, undefined, {
|
|
92
|
-
headers,
|
|
93
|
-
beforeRequest,
|
|
94
|
-
afterRequest
|
|
95
|
-
});
|
|
96
|
-
// 批量删除聊天内容
|
|
97
|
-
const batchDeleteSessionContents = (ids)=>fetch.post(`${apiPrefix}/session_content/batch_delete/`, {
|
|
98
|
-
ids
|
|
99
|
-
}, {
|
|
100
|
-
headers,
|
|
101
|
-
beforeRequest,
|
|
102
|
-
afterRequest
|
|
103
|
-
});
|
|
104
|
-
// 会话重命名
|
|
105
|
-
const renameSession = (sessionCode)=>fetch.post(`${apiPrefix}/session/${sessionCode}/ai_rename/`, undefined, {
|
|
106
|
-
headers,
|
|
107
|
-
beforeRequest,
|
|
108
|
-
afterRequest
|
|
109
|
-
}).then((res)=>({
|
|
110
|
-
sessionCode: res.session_code,
|
|
111
|
-
sessionName: res.session_name
|
|
112
|
-
}));
|
|
113
|
-
// 获取聊天组信息
|
|
114
|
-
const getChatGroup = (data)=>fetch.post(`${apiPrefix}/chat_group/`, data, {
|
|
115
|
-
headers,
|
|
116
|
-
beforeRequest,
|
|
117
|
-
afterRequest
|
|
118
|
-
});
|
|
119
|
-
// 停止会话内容 用于通知后台前端异常界面关闭
|
|
120
|
-
const stopSessionContent = ()=>fetch.post(`${apiPrefix}/session_content/stop/`, undefined, {
|
|
121
|
-
headers,
|
|
122
|
-
beforeRequest,
|
|
123
|
-
afterRequest
|
|
124
|
-
});
|
|
125
|
-
// 分享会话
|
|
126
|
-
const shareSession = (data)=>{
|
|
127
|
-
var _data_expired_at;
|
|
128
|
-
return fetch.post(`${apiPrefix}/share/`, {
|
|
129
|
-
session_code: data.session_code,
|
|
130
|
-
content_ids: data.content_ids,
|
|
131
|
-
expired_at: (_data_expired_at = data.expired_at) !== null && _data_expired_at !== void 0 ? _data_expired_at : 0
|
|
132
|
-
}, {
|
|
133
|
-
headers,
|
|
134
|
-
beforeRequest,
|
|
135
|
-
afterRequest
|
|
136
|
-
});
|
|
137
|
-
};
|
|
138
|
-
return {
|
|
139
|
-
getAgentInfo,
|
|
140
|
-
clearSession,
|
|
141
|
-
getSessions,
|
|
142
|
-
plusSession,
|
|
143
|
-
modifySession,
|
|
144
|
-
deleteSession,
|
|
145
|
-
batchDeleteSessions,
|
|
146
|
-
getSession,
|
|
147
|
-
getSessionContents,
|
|
148
|
-
plusSessionContent,
|
|
149
|
-
modifySessionContent,
|
|
150
|
-
deleteSessionContent,
|
|
151
|
-
batchDeleteSessionContents,
|
|
152
|
-
renameSession,
|
|
153
|
-
getChatGroup,
|
|
154
|
-
postSessionFeedback,
|
|
155
|
-
getSessionFeedbackLabels,
|
|
156
|
-
stopSessionContent,
|
|
157
|
-
shareSession
|
|
158
|
-
};
|
|
159
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SummaryCallbacks } from '../types/session';
|
|
2
|
-
export declare const useSummary: ({ handleStart, handleEnd, handleError, }?: SummaryCallbacks) => {
|
|
3
|
-
summary: ({ content, url, headers, model, }: {
|
|
4
|
-
content: string;
|
|
5
|
-
url: string;
|
|
6
|
-
headers?: Record<string, string>;
|
|
7
|
-
model?: string;
|
|
8
|
-
}) => void;
|
|
9
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ChatHelper } from '../common/chart-helper.ts.js';
|
|
2
|
-
import { removeReferenceDoc } from './use-reference-doc.ts.js';
|
|
3
|
-
import { removeThink } from './use-think.ts.js';
|
|
4
|
-
import { SessionPromptRole } from '../types/enum.ts.js';
|
|
5
|
-
// ai 总结
|
|
6
|
-
export const useSummary = ({ handleStart, handleEnd, handleError } = {})=>{
|
|
7
|
-
let summaryText = '';
|
|
8
|
-
const handleStartChat = ()=>{
|
|
9
|
-
summaryText = '';
|
|
10
|
-
return handleStart === null || handleStart === void 0 ? void 0 : handleStart();
|
|
11
|
-
};
|
|
12
|
-
const handleTextChat = (sessionCode, message, cover)=>{
|
|
13
|
-
if (cover || summaryText === '正在思考...') {
|
|
14
|
-
summaryText = message;
|
|
15
|
-
} else {
|
|
16
|
-
summaryText += message;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const handleEndChat = ()=>{
|
|
20
|
-
if (summaryText === '无话可说') {
|
|
21
|
-
summaryText = '';
|
|
22
|
-
}
|
|
23
|
-
return handleEnd === null || handleEnd === void 0 ? void 0 : handleEnd(summaryText);
|
|
24
|
-
};
|
|
25
|
-
const handleErrorChat = (sessionCode, message, code)=>{
|
|
26
|
-
return handleError === null || handleError === void 0 ? void 0 : handleError(message, code);
|
|
27
|
-
};
|
|
28
|
-
const chatHelper = new ChatHelper({
|
|
29
|
-
handleStart: handleStartChat,
|
|
30
|
-
handleText: handleTextChat,
|
|
31
|
-
handleEnd: handleEndChat,
|
|
32
|
-
handleError: handleErrorChat
|
|
33
|
-
});
|
|
34
|
-
const summary = ({ content, url, headers, model })=>{
|
|
35
|
-
const filterContent = removeThink(removeReferenceDoc(content));
|
|
36
|
-
const prompts = [
|
|
37
|
-
{
|
|
38
|
-
role: SessionPromptRole.User,
|
|
39
|
-
content: `你是一个总结大师,请帮助我对下面这段话进行总结。要求总结精炼,不超过 15 个字!且末尾没有标点符号!请注意:如果你无法总结,请回复“无话可说”!\n文字如下:\n${filterContent}`
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
chatHelper.stream({
|
|
43
|
-
sessionCode: 'summary',
|
|
44
|
-
url,
|
|
45
|
-
data: {
|
|
46
|
-
prompts,
|
|
47
|
-
model
|
|
48
|
-
},
|
|
49
|
-
headers
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
return {
|
|
53
|
-
summary
|
|
54
|
-
};
|
|
55
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 获取思考的 HTML 内容
|
|
3
|
-
* @param chatContent 聊天内容
|
|
4
|
-
* @param content 思考内容
|
|
5
|
-
* @param elapsedTime 思考时间
|
|
6
|
-
* @returns 完整的 chatContent
|
|
7
|
-
*/
|
|
8
|
-
export declare const getHtmlContentFromThink: (chatContent: string, content: string, cover?: boolean, elapsedTime?: number) => string;
|
|
9
|
-
/**
|
|
10
|
-
* 移除思考的 HTML 内容
|
|
11
|
-
* @param content
|
|
12
|
-
* @returns
|
|
13
|
-
*/
|
|
14
|
-
export declare const removeThink: (content: string) => string;
|
|
15
|
-
/**
|
|
16
|
-
* 判断是否是思考中
|
|
17
|
-
* @param content
|
|
18
|
-
* @returns
|
|
19
|
-
*/
|
|
20
|
-
export declare const isThinking: (content: string) => boolean;
|
|
21
|
-
export declare const useThink: () => void;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { onBeforeMount, onBeforeUnmount } from 'vue';
|
|
2
|
-
import { durationFormatter } from '../common/util.ts.js';
|
|
3
|
-
/**
|
|
4
|
-
* 获取思考的 HTML 内容
|
|
5
|
-
* @param chatContent 聊天内容
|
|
6
|
-
* @param content 思考内容
|
|
7
|
-
* @param elapsedTime 思考时间
|
|
8
|
-
* @returns 完整的 chatContent
|
|
9
|
-
*/ export const getHtmlContentFromThink = (chatContent, content, cover, elapsedTime)=>{
|
|
10
|
-
let htmlContent = chatContent === '内容正在生成中...' || cover ? '' : chatContent;
|
|
11
|
-
// 思考开始
|
|
12
|
-
if (!htmlContent.includes('<section class="think-head click-close">')) {
|
|
13
|
-
htmlContent += `<section class="think-head click-close">
|
|
14
|
-
<i class="ai-ui-sdk-icon ai-ui-sdk-sikao"></i>思考中...<i class="ai-ui-sdk-icon ai-ui-sdk-angle-up"></i>
|
|
15
|
-
</section>
|
|
16
|
-
<section class="think-body">
|
|
17
|
-
${content}
|
|
18
|
-
</section>`;
|
|
19
|
-
} else {
|
|
20
|
-
// 补充思考内容
|
|
21
|
-
const thinkBodyMatch = htmlContent.match(/<section class="think-body">([\s\S]*?)<\/section>/);
|
|
22
|
-
if (thinkBodyMatch) {
|
|
23
|
-
// 原有思考内容
|
|
24
|
-
const thinkContent = thinkBodyMatch[1];
|
|
25
|
-
// 在最后的换行符前面添加新的思考内容
|
|
26
|
-
const newThinkContent = thinkContent.replace(/\n$/g, `${content}\n`);
|
|
27
|
-
htmlContent = htmlContent.replace(thinkContent, newThinkContent);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// 思考结束
|
|
31
|
-
if (elapsedTime) {
|
|
32
|
-
htmlContent = htmlContent.replace('思考中...', `已完成思考 (耗时:${durationFormatter(elapsedTime)})`);
|
|
33
|
-
htmlContent = htmlContent.replace('think-head click-close', 'think-head click-close closed');
|
|
34
|
-
}
|
|
35
|
-
return htmlContent;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* 移除思考的 HTML 内容
|
|
39
|
-
* @param content
|
|
40
|
-
* @returns
|
|
41
|
-
*/ export const removeThink = (content)=>{
|
|
42
|
-
// 移除思考头部
|
|
43
|
-
const afterRemoveThinkHead = content.replace(/<section class="think-head click-close">[\s\S]*<\/section>/, '');
|
|
44
|
-
// 移除思考内容
|
|
45
|
-
let afterRemoveThinkBody = afterRemoveThinkHead.replace(/<section class="think-body">[\s\S]*<\/section>/, '');
|
|
46
|
-
// 如果内容只有思考,那就给ai传递思考内容
|
|
47
|
-
if (afterRemoveThinkBody.trim() === '') {
|
|
48
|
-
const thinkBodyMatch = content.match(/<section class="think-body">([\s\S]*?)<\/section>/);
|
|
49
|
-
if (thinkBodyMatch) {
|
|
50
|
-
[, afterRemoveThinkBody] = thinkBodyMatch;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return afterRemoveThinkBody;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* 判断是否是思考中
|
|
57
|
-
* @param content
|
|
58
|
-
* @returns
|
|
59
|
-
*/ export const isThinking = (content)=>{
|
|
60
|
-
// 是否开始思考
|
|
61
|
-
const isStartThinking = content === '正在思考...';
|
|
62
|
-
// 判断是否空思考
|
|
63
|
-
const thinkBodyMatch = content.match(/<section class="think-body">([\s\S]*?)<\/section>$/);
|
|
64
|
-
const isEmptyThinking = thinkBodyMatch && thinkBodyMatch[1].trim() === '';
|
|
65
|
-
return isStartThinking || isEmptyThinking;
|
|
66
|
-
};
|
|
67
|
-
// 思考
|
|
68
|
-
export const useThink = ()=>{
|
|
69
|
-
let styleEle = null;
|
|
70
|
-
const addThinkStyle = ()=>{
|
|
71
|
-
const style = `.think-head {
|
|
72
|
-
display: flex;
|
|
73
|
-
align-items: center;
|
|
74
|
-
padding: 0 8px 0 6px;
|
|
75
|
-
margin-bottom: 8px;
|
|
76
|
-
line-height: 28px;
|
|
77
|
-
background: #F0F1F5;
|
|
78
|
-
border-radius: 4px;
|
|
79
|
-
font-size: 12px;
|
|
80
|
-
color: #313238;
|
|
81
|
-
cursor: pointer;
|
|
82
|
-
width: fit-content;
|
|
83
|
-
.ai-ui-sdk-sikao {
|
|
84
|
-
font-size: 14px;
|
|
85
|
-
color: #979ba5;
|
|
86
|
-
margin-right: 4px;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.ai-ui-sdk-angle-up {
|
|
90
|
-
font-size: 22px;
|
|
91
|
-
color: #4D4F56;
|
|
92
|
-
margin-left: 4px;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
&.closed {
|
|
96
|
-
margin-bottom: 16px;
|
|
97
|
-
|
|
98
|
-
.ai-ui-sdk-angle-up {
|
|
99
|
-
transform: rotate(180deg);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
&~ .think-body {
|
|
103
|
-
display: none;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
&:hover {
|
|
108
|
-
background: #EAEBF0;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
.think-body {
|
|
112
|
-
background: #F5F7FA;
|
|
113
|
-
color: #979BA5;
|
|
114
|
-
padding: 16px;
|
|
115
|
-
margin-bottom: 16px;
|
|
116
|
-
&~ .knowledge-head {
|
|
117
|
-
margin-bottom: 8px;
|
|
118
|
-
}
|
|
119
|
-
}`;
|
|
120
|
-
styleEle = document.createElement('style');
|
|
121
|
-
styleEle.textContent = style;
|
|
122
|
-
document.head.appendChild(styleEle);
|
|
123
|
-
};
|
|
124
|
-
const removeThinkStyle = ()=>{
|
|
125
|
-
if (styleEle) {
|
|
126
|
-
styleEle.remove();
|
|
127
|
-
styleEle = null;
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
onBeforeMount(()=>{
|
|
131
|
-
addThinkStyle();
|
|
132
|
-
});
|
|
133
|
-
onBeforeUnmount(()=>{
|
|
134
|
-
removeThinkStyle();
|
|
135
|
-
});
|
|
136
|
-
};
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { SessionContentRole } from '@/types/enum';
|
|
2
|
-
import type { ISession, ISessionApi, ISessionContent, ISessionContentApi, ISessionFeedback, ISessionFeedbackApi, ISessionPrompt } from '@/types/session';
|
|
3
|
-
/**
|
|
4
|
-
* 将 sessionContent 转换为 sessionPrompt
|
|
5
|
-
* @param sessionContent sessionContent
|
|
6
|
-
* @returns sessionPrompt
|
|
7
|
-
*/
|
|
8
|
-
export declare const transferSessionContent2SessionPrompt: (sessionContent: ISessionContent) => ISessionPrompt;
|
|
9
|
-
/**
|
|
10
|
-
* 将前端使用的 session 提示数据转换为前端使用的 session 内容数据
|
|
11
|
-
* @param prompt 前端使用的 session 提示数据
|
|
12
|
-
* @returns 前端使用的 session 内容数据
|
|
13
|
-
*/
|
|
14
|
-
export declare const transferSessionPrompt2SessionContent: (prompt: ISessionPrompt) => {
|
|
15
|
-
role: SessionContentRole;
|
|
16
|
-
content: string;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* 将 API 返回的 session 数据转换为前端使用的 session 数据
|
|
20
|
-
* @param data API 返回的 session 数据
|
|
21
|
-
* @returns 前端使用的 session 数据
|
|
22
|
-
*/
|
|
23
|
-
export declare const transferSessionApi2Session: (data: ISessionApi) => ISession;
|
|
24
|
-
/**
|
|
25
|
-
* 将前端使用的 session 数据转换为 API 使用的 session 数据
|
|
26
|
-
* @param data 前端使用的 session 数据
|
|
27
|
-
* @returns API 使用的 session 数据
|
|
28
|
-
*/
|
|
29
|
-
export declare const transferSession2SessionApi: (data: ISession) => ISessionApi;
|
|
30
|
-
/**
|
|
31
|
-
* 将 API 返回的 session 内容数据转换为前端使用的 session 内容数据
|
|
32
|
-
* @param data API 返回的 session 内容数据
|
|
33
|
-
* @returns 前端使用的 session 内容数据
|
|
34
|
-
*/
|
|
35
|
-
export declare const transferSessionContentApi2SessionContent: (data: ISessionContentApi) => ISessionContent;
|
|
36
|
-
/**
|
|
37
|
-
* 将前端使用的 session 内容数据转换为 API 使用的 session 内容数据
|
|
38
|
-
* @param data 前端使用的 session 内容数据
|
|
39
|
-
* @returns API 使用的 session 内容数据
|
|
40
|
-
*/
|
|
41
|
-
export declare const transferSessionContent2SessionContentApi: (data: ISessionContent) => ISessionContentApi;
|
|
42
|
-
/**
|
|
43
|
-
* 将前端使用的 session 反馈数据转换为 API 使用的 session 反馈数据
|
|
44
|
-
* @param data 前端使用的 session 反馈数据
|
|
45
|
-
* @returns API 使用的 session 反馈数据
|
|
46
|
-
*/
|
|
47
|
-
export declare const transferSessionFeedback2SessionFeedbackApi: (data: ISessionFeedback) => {
|
|
48
|
-
session_code: string;
|
|
49
|
-
session_content_ids: number[];
|
|
50
|
-
rate: number;
|
|
51
|
-
comment: string;
|
|
52
|
-
labels: string[];
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* 将 API 返回的 session 反馈数据转换为前端使用的 session 反馈数据
|
|
56
|
-
* @param data API 返回的 session 反馈数据
|
|
57
|
-
* @returns 前端使用的 session 反馈数据
|
|
58
|
-
*/
|
|
59
|
-
export declare const transferSessionFeedbackApi2SessionFeedback: (data: ISessionFeedbackApi) => {
|
|
60
|
-
sessionCode: string;
|
|
61
|
-
sessionContentIds: number[];
|
|
62
|
-
rate: number;
|
|
63
|
-
comment: string;
|
|
64
|
-
labels: string[];
|
|
65
|
-
};
|