@blueking/ai-ui-sdk 0.4.1-beta.1 → 0.4.1-beta.3
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-search.script.vue.js.js +1 -1
- 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/approval-strategy-popover.script.vue.js.js +7 -7
- 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-card/tool/prefix-info-tool.script.vue.js.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.script.vue.js.js +2 -2
- 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-search-select/index.script.vue.js.js +6 -6
- package/dist/components/render-search-select/index.vue.d.ts +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/render-tree/index.script.vue.js +3 -3
- 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-scroll-load.d.ts +1 -0
- package/dist/hooks/use-scroll-load.ts.js +2 -1
- 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 +4 -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 +2 -48
- package/dist/types/enum.ts.js +1 -51
- package/dist/types/permission.d.ts +2 -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,678 +0,0 @@
|
|
|
1
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
-
try {
|
|
3
|
-
var info = gen[key](arg);
|
|
4
|
-
var value = info.value;
|
|
5
|
-
} catch (error) {
|
|
6
|
-
reject(error);
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
if (info.done) {
|
|
10
|
-
resolve(value);
|
|
11
|
-
} else {
|
|
12
|
-
Promise.resolve(value).then(_next, _throw);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _async_to_generator(fn) {
|
|
16
|
-
return function() {
|
|
17
|
-
var self = this, args = arguments;
|
|
18
|
-
return new Promise(function(resolve, reject) {
|
|
19
|
-
var gen = fn.apply(self, args);
|
|
20
|
-
function _next(value) {
|
|
21
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
-
}
|
|
23
|
-
function _throw(err) {
|
|
24
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
-
}
|
|
26
|
-
_next(undefined);
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function _define_property(obj, key, value) {
|
|
31
|
-
if (key in obj) {
|
|
32
|
-
Object.defineProperty(obj, key, {
|
|
33
|
-
value: value,
|
|
34
|
-
enumerable: true,
|
|
35
|
-
configurable: true,
|
|
36
|
-
writable: true
|
|
37
|
-
});
|
|
38
|
-
} else {
|
|
39
|
-
obj[key] = value;
|
|
40
|
-
}
|
|
41
|
-
return obj;
|
|
42
|
-
}
|
|
43
|
-
function _object_spread(target) {
|
|
44
|
-
for(var i = 1; i < arguments.length; i++){
|
|
45
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
46
|
-
var ownKeys = Object.keys(source);
|
|
47
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
48
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
49
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
ownKeys.forEach(function(key) {
|
|
53
|
-
_define_property(target, key, source[key]);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return target;
|
|
57
|
-
}
|
|
58
|
-
function ownKeys(object, enumerableOnly) {
|
|
59
|
-
var keys = Object.keys(object);
|
|
60
|
-
if (Object.getOwnPropertySymbols) {
|
|
61
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
62
|
-
if (enumerableOnly) {
|
|
63
|
-
symbols = symbols.filter(function(sym) {
|
|
64
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
keys.push.apply(keys, symbols);
|
|
68
|
-
}
|
|
69
|
-
return keys;
|
|
70
|
-
}
|
|
71
|
-
function _object_spread_props(target, source) {
|
|
72
|
-
source = source != null ? source : {};
|
|
73
|
-
if (Object.getOwnPropertyDescriptors) {
|
|
74
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
75
|
-
} else {
|
|
76
|
-
ownKeys(Object(source)).forEach(function(key) {
|
|
77
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return target;
|
|
81
|
-
}
|
|
82
|
-
import { computed, ref } from 'vue';
|
|
83
|
-
import { ChatHelper } from '../common/chart-helper.ts.js';
|
|
84
|
-
import { throttle } from '../common/util.ts.js';
|
|
85
|
-
import { getHtmlContentFromDocuments, removeReferenceDoc } from './use-reference-doc.ts.js';
|
|
86
|
-
import { useSessionHttp } from './use-session-http.ts.js';
|
|
87
|
-
import { getHtmlContentFromThink, isThinking, removeThink } from './use-think.ts.js';
|
|
88
|
-
import { transferSessionContent2SessionPrompt, transferSessionPrompt2SessionContent } from '../http/helper/session.ts.js';
|
|
89
|
-
import { HttpErrorCode, SessionContentRole, SessionContentStatus } from '../types/enum.ts.js';
|
|
90
|
-
// ai 聊天
|
|
91
|
-
export const useChat = ({ handleStart, handleText, handleReferenceDoc, handleThink, handleEnd, handleError, requestOptions, otherOptions })=>{
|
|
92
|
-
// 创建一个变量保存当前的API实现
|
|
93
|
-
let apiImpl = useSessionHttp({
|
|
94
|
-
apiPrefix: requestOptions.url,
|
|
95
|
-
headers: requestOptions.headers,
|
|
96
|
-
beforeRequest: requestOptions.beforeRequest,
|
|
97
|
-
afterRequest: requestOptions.afterRequest
|
|
98
|
-
});
|
|
99
|
-
// start message
|
|
100
|
-
const startMessage = '内容正在生成中...';
|
|
101
|
-
// 用 ref 存储 requestOptions,使其可更新
|
|
102
|
-
const currentRequestOptions = ref(requestOptions);
|
|
103
|
-
// 聊天上下文
|
|
104
|
-
const currentSession = ref();
|
|
105
|
-
const sessionLoadingMap = ref({});
|
|
106
|
-
const sessionContents = ref([]);
|
|
107
|
-
const sessionContentsMap = {};
|
|
108
|
-
const sessionWaitingPromptsMap = {};
|
|
109
|
-
const isLoadingSessionContents = ref(false);
|
|
110
|
-
// 通过计算得到的会话列表
|
|
111
|
-
const calculatedSessionContents = computed(()=>{
|
|
112
|
-
const calculatedSessionContents = [];
|
|
113
|
-
for(let index = sessionContents.value.length - 1; index >= 0; index--){
|
|
114
|
-
const sessionContent = sessionContents.value[index];
|
|
115
|
-
// 向下找到下一个ai回复
|
|
116
|
-
let nextAiSessionContentIndex = index + 1;
|
|
117
|
-
let nextAiSessionContent = sessionContents.value[nextAiSessionContentIndex];
|
|
118
|
-
while(nextAiSessionContent && ![
|
|
119
|
-
SessionContentRole.Ai,
|
|
120
|
-
SessionContentRole.TokenExpired,
|
|
121
|
-
SessionContentRole.ImageNotSupported,
|
|
122
|
-
SessionContentRole.Pause,
|
|
123
|
-
SessionContentRole.Guide
|
|
124
|
-
].includes(nextAiSessionContent.role)){
|
|
125
|
-
nextAiSessionContentIndex += 1;
|
|
126
|
-
nextAiSessionContent = sessionContents.value[nextAiSessionContentIndex];
|
|
127
|
-
}
|
|
128
|
-
// 系统消息,退出
|
|
129
|
-
if (sessionContent.role === SessionContentRole.System) {
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
// 倒叙添加当前聊天上下文 排除异常答复、异常问题 & 系统消息和时间消息
|
|
133
|
-
if (sessionContent.status !== SessionContentStatus.Fail && !((nextAiSessionContent === null || nextAiSessionContent === void 0 ? void 0 : nextAiSessionContent.status) === SessionContentStatus.Fail && [
|
|
134
|
-
SessionContentRole.User,
|
|
135
|
-
SessionContentRole.UserImage
|
|
136
|
-
].includes(sessionContent.role)) && ![
|
|
137
|
-
SessionContentRole.Time,
|
|
138
|
-
SessionContentRole.System
|
|
139
|
-
].includes(sessionContent.role)) {
|
|
140
|
-
calculatedSessionContents.unshift(sessionContent);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return calculatedSessionContents;
|
|
144
|
-
});
|
|
145
|
-
// 当前会话是否正在加载
|
|
146
|
-
const currentSessionLoading = computed(()=>{
|
|
147
|
-
var _currentSession_value;
|
|
148
|
-
const sessionCode = (_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : _currentSession_value.sessionCode;
|
|
149
|
-
return sessionCode ? sessionLoadingMap.value[sessionCode] : false;
|
|
150
|
-
});
|
|
151
|
-
// 计算当前的 prompt
|
|
152
|
-
const prompts = computed(()=>{
|
|
153
|
-
var _currentSession_value_roleInfo_content, _currentSession_value_roleInfo, _currentSession_value;
|
|
154
|
-
const rolePrompts = [];
|
|
155
|
-
const userPrompts = [];
|
|
156
|
-
const prompts = [];
|
|
157
|
-
// build rolePrompts
|
|
158
|
-
const latestMatchIndex = sessionContents.value.findLastIndex((sessionContent)=>sessionContent.role === SessionContentRole.System && [
|
|
159
|
-
'已启用角色',
|
|
160
|
-
'已启用模型'
|
|
161
|
-
].some((key)=>sessionContent.content.includes(key)));
|
|
162
|
-
let index = 0;
|
|
163
|
-
(_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : (_currentSession_value_roleInfo = _currentSession_value.roleInfo) === null || _currentSession_value_roleInfo === void 0 ? void 0 : (_currentSession_value_roleInfo_content = _currentSession_value_roleInfo.content) === null || _currentSession_value_roleInfo_content === void 0 ? void 0 : _currentSession_value_roleInfo_content.forEach((roleContent)=>{
|
|
164
|
-
const sessionContent = sessionContents.value[latestMatchIndex + 1 + index];
|
|
165
|
-
let nextSessionContent = sessionContents.value[latestMatchIndex + 2 + index];
|
|
166
|
-
if ((sessionContent === null || sessionContent === void 0 ? void 0 : sessionContent.content) === roleContent.content && sessionContent.role !== SessionContentRole.System) {
|
|
167
|
-
rolePrompts.push(transferSessionContent2SessionPrompt(sessionContent));
|
|
168
|
-
index += 1;
|
|
169
|
-
if ((sessionContent === null || sessionContent === void 0 ? void 0 : sessionContent.role) === SessionContentRole.Pause) {
|
|
170
|
-
while(nextSessionContent && nextSessionContent.role === SessionContentRole.System){
|
|
171
|
-
index += 1;
|
|
172
|
-
nextSessionContent = sessionContents.value[latestMatchIndex + 1 + index];
|
|
173
|
-
}
|
|
174
|
-
while(nextSessionContent && [
|
|
175
|
-
SessionContentRole.User,
|
|
176
|
-
SessionContentRole.UserImage
|
|
177
|
-
].includes(nextSessionContent.role)){
|
|
178
|
-
rolePrompts.push(transferSessionContent2SessionPrompt(nextSessionContent));
|
|
179
|
-
index += 1;
|
|
180
|
-
nextSessionContent = sessionContents.value[latestMatchIndex + 1 + index];
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
// build userPrompts
|
|
186
|
-
userPrompts.push(...calculatedSessionContents.value.map(transferSessionContent2SessionPrompt));
|
|
187
|
-
const isSameContent = (startIndex)=>{
|
|
188
|
-
let isSame = true;
|
|
189
|
-
for(let index = startIndex; index < rolePrompts.length; index++){
|
|
190
|
-
var _userPrompts_;
|
|
191
|
-
const rolePrompt = rolePrompts[index];
|
|
192
|
-
if (rolePrompt.content !== ((_userPrompts_ = userPrompts[index - startIndex]) === null || _userPrompts_ === void 0 ? void 0 : _userPrompts_.content)) {
|
|
193
|
-
isSame = false;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return isSame;
|
|
197
|
-
};
|
|
198
|
-
// 排除在一个系统消息里面,重复的情况
|
|
199
|
-
for(let index = 0; index < rolePrompts.length; index++){
|
|
200
|
-
const rolePrompt = rolePrompts[index];
|
|
201
|
-
if (isSameContent(index)) {
|
|
202
|
-
break;
|
|
203
|
-
} else {
|
|
204
|
-
prompts.push(rolePrompt);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
prompts.push(...userPrompts);
|
|
208
|
-
// 删除引用资料
|
|
209
|
-
prompts.forEach((prompt)=>{
|
|
210
|
-
prompt.content = removeThink(prompt.content);
|
|
211
|
-
prompt.content = removeReferenceDoc(prompt.content);
|
|
212
|
-
});
|
|
213
|
-
return prompts;
|
|
214
|
-
});
|
|
215
|
-
const chatHelper = new ChatHelper({
|
|
216
|
-
handleStart: handleStartChat,
|
|
217
|
-
handleText: handleTextChat,
|
|
218
|
-
handleReferenceDoc: handleReferenceDocChat,
|
|
219
|
-
handleThink: handleThinkChat,
|
|
220
|
-
handleEnd: handleEndChat,
|
|
221
|
-
handleError: handleErrorChat,
|
|
222
|
-
beforeRequest: requestOptions.beforeRequest,
|
|
223
|
-
afterRequest: requestOptions.afterRequest
|
|
224
|
-
});
|
|
225
|
-
// 更新 requestOptions 的方法
|
|
226
|
-
function updateRequestOptions(newOptions) {
|
|
227
|
-
// 合并新旧配置
|
|
228
|
-
currentRequestOptions.value = _object_spread({}, currentRequestOptions.value, newOptions);
|
|
229
|
-
// 如果 URL 变更,重新获取 API
|
|
230
|
-
if (newOptions.url || newOptions.headers) {
|
|
231
|
-
apiImpl = useSessionHttp({
|
|
232
|
-
apiPrefix: currentRequestOptions.value.url,
|
|
233
|
-
headers: currentRequestOptions.value.headers,
|
|
234
|
-
beforeRequest: currentRequestOptions.value.beforeRequest,
|
|
235
|
-
afterRequest: currentRequestOptions.value.afterRequest
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
// 新增 db
|
|
240
|
-
function plusSessionContent2Db(sessionContent) {
|
|
241
|
-
return apiImpl.plusSessionContent(sessionContent).then((result)=>{
|
|
242
|
-
sessionContent.id = result.id;
|
|
243
|
-
sessionContent.createdAt = result.createdAt;
|
|
244
|
-
return sessionContent;
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
// 防抖更新 db
|
|
248
|
-
const throttleModifySessionContentApi = throttle((id, sessionContent)=>apiImpl.modifySessionContent(sessionContent), 1000);
|
|
249
|
-
// 设置 currentSession
|
|
250
|
-
function setCurrentSession(session) {
|
|
251
|
-
currentSession.value = session;
|
|
252
|
-
// 空session,不处理
|
|
253
|
-
if (!(session === null || session === void 0 ? void 0 : session.sessionCode)) return;
|
|
254
|
-
if (!sessionContentsMap[session.sessionCode]) {
|
|
255
|
-
sessionContentsMap[session.sessionCode] = [];
|
|
256
|
-
}
|
|
257
|
-
sessionContents.value = sessionContentsMap[session.sessionCode];
|
|
258
|
-
}
|
|
259
|
-
// 设置 sessionContents
|
|
260
|
-
function setSessionContents(data) {
|
|
261
|
-
if (!currentSession.value) return;
|
|
262
|
-
sessionContentsMap[currentSession.value.sessionCode] = data;
|
|
263
|
-
sessionContents.value = data;
|
|
264
|
-
}
|
|
265
|
-
function setCurrentSessionChain(session) {
|
|
266
|
-
return _setCurrentSessionChain.apply(this, arguments);
|
|
267
|
-
}
|
|
268
|
-
function _setCurrentSessionChain() {
|
|
269
|
-
_setCurrentSessionChain = // 自动设置 currentSession 以及当然 sessionConetnts内容
|
|
270
|
-
_async_to_generator(function*(session) {
|
|
271
|
-
currentSession.value = session;
|
|
272
|
-
try {
|
|
273
|
-
isLoadingSessionContents.value = true;
|
|
274
|
-
const data = yield apiImpl.getSessionContents(session.sessionCode);
|
|
275
|
-
sessionContentsMap[currentSession.value.sessionCode] = data;
|
|
276
|
-
sessionContents.value = data;
|
|
277
|
-
isLoadingSessionContents.value = false;
|
|
278
|
-
} catch (error) {
|
|
279
|
-
isLoadingSessionContents.value = false;
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
return _setCurrentSessionChain.apply(this, arguments);
|
|
283
|
-
}
|
|
284
|
-
// 获取 SessionContent 通过 id
|
|
285
|
-
function getSessionContentById(id, sessionCode) {
|
|
286
|
-
const sessionContents = getSessionContentsBySessionCode(sessionCode);
|
|
287
|
-
return sessionContents.find((item)=>item.id === id);
|
|
288
|
-
}
|
|
289
|
-
// 获取执行中的 SessionContent(最后一个)
|
|
290
|
-
function getLastSessionContentBySessionCode(sessionCode) {
|
|
291
|
-
var _currentSession_value;
|
|
292
|
-
if (((_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : _currentSession_value.sessionCode) === sessionCode) {
|
|
293
|
-
return sessionContents.value.at(-1);
|
|
294
|
-
}
|
|
295
|
-
return sessionContentsMap[sessionCode].at(-1);
|
|
296
|
-
}
|
|
297
|
-
// 获取 SessionContents
|
|
298
|
-
function getSessionContentsBySessionCode(sessionCode) {
|
|
299
|
-
var _currentSession_value;
|
|
300
|
-
if (((_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : _currentSession_value.sessionCode) === sessionCode) {
|
|
301
|
-
return sessionContents.value;
|
|
302
|
-
}
|
|
303
|
-
return sessionContentsMap[sessionCode];
|
|
304
|
-
}
|
|
305
|
-
// 新增 sessionContent
|
|
306
|
-
function plusSessionContent(sessionCode, sessionContent) {
|
|
307
|
-
const sessionContents = getSessionContentsBySessionCode(sessionCode);
|
|
308
|
-
sessionContents.push(sessionContent);
|
|
309
|
-
return plusSessionContent2Db(sessionContent);
|
|
310
|
-
}
|
|
311
|
-
// 更新 chatContent
|
|
312
|
-
function updateSessionContent(sessionContent) {
|
|
313
|
-
var _currentSession_value;
|
|
314
|
-
const currentSessionContents = ((_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : _currentSession_value.sessionCode) === sessionContent.sessionCode ? sessionContents.value : sessionContentsMap[sessionContent.sessionCode];
|
|
315
|
-
const currentSessionContent = currentSessionContents.find((item)=>+(item.id || 0) === +(sessionContent.id || 0));
|
|
316
|
-
if (currentSessionContent) {
|
|
317
|
-
Object.assign(currentSessionContent, sessionContent);
|
|
318
|
-
}
|
|
319
|
-
return throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
320
|
-
}
|
|
321
|
-
// 获取待删除的会话id,并从会话列表中删除
|
|
322
|
-
function getDeleteSessionContents(sessionCode, sessionContentIds, relatedDelete) {
|
|
323
|
-
var _currentSession_value;
|
|
324
|
-
const currentSessionContents = ((_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : _currentSession_value.sessionCode) === sessionCode ? sessionContents.value : sessionContentsMap[sessionCode];
|
|
325
|
-
const deleteSessionContentIds = [];
|
|
326
|
-
sessionContentIds.forEach((sessionContentId)=>{
|
|
327
|
-
const index = currentSessionContents.findIndex((sessionContent)=>sessionContent.id === sessionContentId);
|
|
328
|
-
if (index > -1) {
|
|
329
|
-
const preSessionContent = currentSessionContents[index - 1];
|
|
330
|
-
const nextSessionContent = currentSessionContents[index + 1];
|
|
331
|
-
const nextNextSessionContent = currentSessionContents[index + 2];
|
|
332
|
-
// 删除当前会话
|
|
333
|
-
currentSessionContents.splice(index, 1);
|
|
334
|
-
deleteSessionContentIds.push(sessionContentId);
|
|
335
|
-
// 如果前一个是 hidden 也需要删除
|
|
336
|
-
if ([
|
|
337
|
-
SessionContentRole.Hidden
|
|
338
|
-
].includes(preSessionContent === null || preSessionContent === void 0 ? void 0 : preSessionContent.role)) {
|
|
339
|
-
const hiddenIndex = currentSessionContents.findIndex((sessionContent)=>sessionContent.id === preSessionContent.id);
|
|
340
|
-
currentSessionContents.splice(hiddenIndex, 1);
|
|
341
|
-
deleteSessionContentIds.push(preSessionContent.id);
|
|
342
|
-
}
|
|
343
|
-
// 如果下一个是ai回复,也需要删掉
|
|
344
|
-
if ((nextSessionContent === null || nextSessionContent === void 0 ? void 0 : nextSessionContent.role) === SessionContentRole.Ai || relatedDelete && [
|
|
345
|
-
SessionContentRole.Ai,
|
|
346
|
-
SessionContentRole.Guide,
|
|
347
|
-
SessionContentRole.TokenExpired,
|
|
348
|
-
SessionContentRole.ImageNotSupported,
|
|
349
|
-
SessionContentRole.Pause
|
|
350
|
-
].includes(nextSessionContent === null || nextSessionContent === void 0 ? void 0 : nextSessionContent.role)) {
|
|
351
|
-
const nextIndex = currentSessionContents.findIndex((sessionContent)=>sessionContent.id === nextSessionContent.id);
|
|
352
|
-
currentSessionContents.splice(nextIndex, 1);
|
|
353
|
-
deleteSessionContentIds.push(nextSessionContent.id);
|
|
354
|
-
}
|
|
355
|
-
// 如果下下个是 guide,需要删除
|
|
356
|
-
if ([
|
|
357
|
-
SessionContentRole.Guide
|
|
358
|
-
].includes(nextNextSessionContent === null || nextNextSessionContent === void 0 ? void 0 : nextNextSessionContent.role) && relatedDelete) {
|
|
359
|
-
const nextNextIndex = currentSessionContents.findIndex((sessionContent)=>sessionContent.id === nextNextSessionContent.id);
|
|
360
|
-
currentSessionContents.splice(nextNextIndex, 1);
|
|
361
|
-
deleteSessionContentIds.push(nextNextSessionContent.id);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
});
|
|
365
|
-
return deleteSessionContentIds;
|
|
366
|
-
}
|
|
367
|
-
// 删除聊天内容
|
|
368
|
-
function deleteSessionContent(sessionCode, contentId) {
|
|
369
|
-
const deleteSessionContentIds = getDeleteSessionContents(sessionCode, [
|
|
370
|
-
contentId
|
|
371
|
-
], true);
|
|
372
|
-
return apiImpl.batchDeleteSessionContents(deleteSessionContentIds);
|
|
373
|
-
}
|
|
374
|
-
// 批量删除
|
|
375
|
-
function deleteSessionContents(sessionCode, contentIds) {
|
|
376
|
-
const deleteSessionContentIds = getDeleteSessionContents(sessionCode, contentIds, false);
|
|
377
|
-
return apiImpl.batchDeleteSessionContents(deleteSessionContentIds);
|
|
378
|
-
}
|
|
379
|
-
function handleStartChat(sessionCode) {
|
|
380
|
-
return _handleStartChat.apply(this, arguments);
|
|
381
|
-
}
|
|
382
|
-
function _handleStartChat() {
|
|
383
|
-
_handleStartChat = // 聊天开始
|
|
384
|
-
_async_to_generator(function*(sessionCode) {
|
|
385
|
-
sessionLoadingMap.value[sessionCode] = true;
|
|
386
|
-
const sessionContent = {
|
|
387
|
-
sessionCode,
|
|
388
|
-
role: SessionContentRole.Ai,
|
|
389
|
-
status: SessionContentStatus.Loading,
|
|
390
|
-
content: startMessage
|
|
391
|
-
};
|
|
392
|
-
// 画布新增
|
|
393
|
-
yield plusSessionContent(sessionCode, sessionContent);
|
|
394
|
-
// 调用cb
|
|
395
|
-
return handleStart === null || handleStart === void 0 ? void 0 : handleStart(sessionCode, sessionContent);
|
|
396
|
-
});
|
|
397
|
-
return _handleStartChat.apply(this, arguments);
|
|
398
|
-
}
|
|
399
|
-
function handleReferenceDocChat(sessionCode, documents, cover) {
|
|
400
|
-
return _handleReferenceDocChat.apply(this, arguments);
|
|
401
|
-
}
|
|
402
|
-
function _handleReferenceDocChat() {
|
|
403
|
-
_handleReferenceDocChat = // 引用资料
|
|
404
|
-
_async_to_generator(function*(sessionCode, documents, cover) {
|
|
405
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
406
|
-
const content = getHtmlContentFromDocuments(documents, otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.hideReferenceDocIcon);
|
|
407
|
-
sessionContent.content = cover ? content : sessionContent.content + content;
|
|
408
|
-
yield throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
409
|
-
yield handleReferenceDoc === null || handleReferenceDoc === void 0 ? void 0 : handleReferenceDoc(sessionCode, sessionContent);
|
|
410
|
-
});
|
|
411
|
-
return _handleReferenceDocChat.apply(this, arguments);
|
|
412
|
-
}
|
|
413
|
-
function handleThinkChat(sessionCode, content, cover, elapsedTime) {
|
|
414
|
-
return _handleThinkChat.apply(this, arguments);
|
|
415
|
-
}
|
|
416
|
-
function _handleThinkChat() {
|
|
417
|
-
_handleThinkChat = // 思考
|
|
418
|
-
_async_to_generator(function*(sessionCode, content, cover, elapsedTime) {
|
|
419
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
420
|
-
// 获取思考的html
|
|
421
|
-
sessionContent.content = getHtmlContentFromThink(sessionContent.content, content, cover, elapsedTime);
|
|
422
|
-
// 更新 db
|
|
423
|
-
yield throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
424
|
-
// 调用cb
|
|
425
|
-
yield handleThink === null || handleThink === void 0 ? void 0 : handleThink(sessionCode, sessionContent);
|
|
426
|
-
});
|
|
427
|
-
return _handleThinkChat.apply(this, arguments);
|
|
428
|
-
}
|
|
429
|
-
function handleTextChat(sessionCode, message, cover) {
|
|
430
|
-
return _handleTextChat.apply(this, arguments);
|
|
431
|
-
}
|
|
432
|
-
function _handleTextChat() {
|
|
433
|
-
_handleTextChat = // 文本
|
|
434
|
-
_async_to_generator(function*(sessionCode, message, cover) {
|
|
435
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
436
|
-
if (sessionContent.content === startMessage) {
|
|
437
|
-
sessionContent.content = message;
|
|
438
|
-
} else if (sessionContent.status === SessionContentStatus.Loading) {
|
|
439
|
-
sessionContent.content = cover ? message : sessionContent.content + message;
|
|
440
|
-
} else {
|
|
441
|
-
return;
|
|
442
|
-
}
|
|
443
|
-
// 更新 db
|
|
444
|
-
yield throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
445
|
-
// 调用cb
|
|
446
|
-
yield handleText === null || handleText === void 0 ? void 0 : handleText(sessionCode, sessionContent);
|
|
447
|
-
});
|
|
448
|
-
return _handleTextChat.apply(this, arguments);
|
|
449
|
-
}
|
|
450
|
-
function handleEndChat(sessionCode, message) {
|
|
451
|
-
return _handleEndChat.apply(this, arguments);
|
|
452
|
-
}
|
|
453
|
-
function _handleEndChat() {
|
|
454
|
-
_handleEndChat = // 聊天结束
|
|
455
|
-
_async_to_generator(function*(sessionCode, message) {
|
|
456
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
457
|
-
// 内容正在生成中或者正在思考中
|
|
458
|
-
if (sessionContent.content === startMessage || isThinking(sessionContent.content)) {
|
|
459
|
-
handleErrorChat(sessionCode, '聊天内容已中断');
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
// 防止 error 的情况下异步触发 end 更新了数据
|
|
463
|
-
if (sessionContent.status === SessionContentStatus.Loading) {
|
|
464
|
-
sessionLoadingMap.value[sessionCode] = false;
|
|
465
|
-
// end 的时候,如果 message 有值,则更新 content
|
|
466
|
-
if (message) {
|
|
467
|
-
sessionContent.content = message;
|
|
468
|
-
}
|
|
469
|
-
// 更新状态
|
|
470
|
-
sessionContent.status = SessionContentStatus.Success;
|
|
471
|
-
// 更新 db
|
|
472
|
-
yield throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
473
|
-
// 调用cb
|
|
474
|
-
yield handleEnd === null || handleEnd === void 0 ? void 0 : handleEnd(sessionCode, sessionContent);
|
|
475
|
-
}
|
|
476
|
-
});
|
|
477
|
-
return _handleEndChat.apply(this, arguments);
|
|
478
|
-
}
|
|
479
|
-
function handleErrorChat(sessionCode, message, code) {
|
|
480
|
-
return _handleErrorChat.apply(this, arguments);
|
|
481
|
-
}
|
|
482
|
-
function _handleErrorChat() {
|
|
483
|
-
_handleErrorChat = // 聊天异常
|
|
484
|
-
_async_to_generator(function*(sessionCode, message, code) {
|
|
485
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
486
|
-
sessionContent.status = SessionContentStatus.Fail;
|
|
487
|
-
sessionContent.content = message;
|
|
488
|
-
sessionLoadingMap.value[sessionCode] = false;
|
|
489
|
-
// token 超了,提示 token 不足
|
|
490
|
-
if (code === HttpErrorCode.TokenExpired) {
|
|
491
|
-
var _currentSession_value_sessionProperty, _currentSession_value;
|
|
492
|
-
sessionContent.content = '抱歉,您的剩余 Token 不足,无法返回回答内容,请先清空当前会话(上下文仍会作为历史记录保留))';
|
|
493
|
-
sessionContent.role = SessionContentRole.TokenExpired;
|
|
494
|
-
if ((_currentSession_value = currentSession.value) === null || _currentSession_value === void 0 ? void 0 : (_currentSession_value_sessionProperty = _currentSession_value.sessionProperty) === null || _currentSession_value_sessionProperty === void 0 ? void 0 : _currentSession_value_sessionProperty.isAutoClear) {
|
|
495
|
-
var _currentSession_value1;
|
|
496
|
-
yield plusSessionContent(sessionCode, {
|
|
497
|
-
sessionCode,
|
|
498
|
-
role: SessionContentRole.System,
|
|
499
|
-
content: '由于Token超限,已自动清理会话,后续会话不会携带先前的会话信息'
|
|
500
|
-
});
|
|
501
|
-
yield apiImpl.clearSession((_currentSession_value1 = currentSession.value) === null || _currentSession_value1 === void 0 ? void 0 : _currentSession_value1.sessionCode);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
if (code === HttpErrorCode.ImageNotSupported) {
|
|
505
|
-
sessionContent.content = '抱歉,当前模型不支持图片内容解析';
|
|
506
|
-
sessionContent.role = SessionContentRole.ImageNotSupported;
|
|
507
|
-
}
|
|
508
|
-
// 更新 db
|
|
509
|
-
yield throttleModifySessionContentApi(sessionContent.id, sessionContent);
|
|
510
|
-
// 调用cb
|
|
511
|
-
yield handleError === null || handleError === void 0 ? void 0 : handleError(sessionCode, sessionContent, code);
|
|
512
|
-
});
|
|
513
|
-
return _handleErrorChat.apply(this, arguments);
|
|
514
|
-
}
|
|
515
|
-
function handleCompleteRole(sessionCode, prompts) {
|
|
516
|
-
return _handleCompleteRole.apply(this, arguments);
|
|
517
|
-
}
|
|
518
|
-
function _handleCompleteRole() {
|
|
519
|
-
_handleCompleteRole = // 完成角色演绎
|
|
520
|
-
_async_to_generator(function*(sessionCode, prompts) {
|
|
521
|
-
let isPaused = false;
|
|
522
|
-
sessionWaitingPromptsMap[sessionCode] = [];
|
|
523
|
-
for (const prompt of prompts){
|
|
524
|
-
if (isPaused) {
|
|
525
|
-
sessionWaitingPromptsMap[sessionCode].push(prompt);
|
|
526
|
-
} else {
|
|
527
|
-
const sessionContent = _object_spread_props(_object_spread({}, transferSessionPrompt2SessionContent(prompt)), {
|
|
528
|
-
sessionCode,
|
|
529
|
-
status: SessionContentStatus.Success
|
|
530
|
-
});
|
|
531
|
-
yield plusSessionContent(sessionCode, sessionContent);
|
|
532
|
-
// 遇到 pause 就暂停
|
|
533
|
-
if (sessionContent.role === SessionContentRole.Pause) {
|
|
534
|
-
isPaused = true;
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
});
|
|
539
|
-
return _handleCompleteRole.apply(this, arguments);
|
|
540
|
-
}
|
|
541
|
-
// 重新生成对话 仅支持重新生成 ai 的回复
|
|
542
|
-
function reGenerateChat(sessionCode, sessionContent, sessionIndex) {
|
|
543
|
-
if (sessionContent.role !== SessionContentRole.Ai) {
|
|
544
|
-
return;
|
|
545
|
-
}
|
|
546
|
-
// 重新生成时,删除当前的 ai 回复和下方的所有内容
|
|
547
|
-
const sessionIds = sessionContents.value.slice(sessionIndex, sessionContents.value.length).map((item)=>item.id).filter((item)=>item !== undefined);
|
|
548
|
-
if (sessionIds.length > 0) {
|
|
549
|
-
deleteSessionContents(sessionCode, sessionIds);
|
|
550
|
-
}
|
|
551
|
-
const userSessionContent = sessionContents.value[sessionIndex - 1];
|
|
552
|
-
userSessionContent && chat(userSessionContent);
|
|
553
|
-
}
|
|
554
|
-
// 聊天
|
|
555
|
-
function chat({ sessionCode, url, data, headers }) {
|
|
556
|
-
const sessionWaitingPrompts = sessionWaitingPromptsMap[sessionCode];
|
|
557
|
-
if ((sessionWaitingPrompts === null || sessionWaitingPrompts === void 0 ? void 0 : sessionWaitingPrompts.length) > 0) {
|
|
558
|
-
handleCompleteRole(sessionCode, sessionWaitingPrompts);
|
|
559
|
-
} else {
|
|
560
|
-
streamChat(sessionCode, data, url, headers);
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
// stream 聊天
|
|
564
|
-
function streamChat(sessionCode, data, url, headers) {
|
|
565
|
-
var _currentRequestOptions_value;
|
|
566
|
-
const sessionContent = getLastSessionContentBySessionCode(sessionCode);
|
|
567
|
-
// 发送请求
|
|
568
|
-
chatHelper.stream({
|
|
569
|
-
sessionCode,
|
|
570
|
-
url: url || `${currentRequestOptions.value.url}/chat_completion/`,
|
|
571
|
-
data: _object_spread({
|
|
572
|
-
session_content_id: sessionContent === null || sessionContent === void 0 ? void 0 : sessionContent.id,
|
|
573
|
-
session_code: sessionCode,
|
|
574
|
-
execute_kwargs: {
|
|
575
|
-
stream: true
|
|
576
|
-
}
|
|
577
|
-
}, data, currentRequestOptions.value.data),
|
|
578
|
-
headers: headers || ((_currentRequestOptions_value = currentRequestOptions.value) === null || _currentRequestOptions_value === void 0 ? void 0 : _currentRequestOptions_value.headers)
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
|
-
function reSendChat(sessionCode, sessionContent, sessionIndex) {
|
|
582
|
-
return _reSendChat.apply(this, arguments);
|
|
583
|
-
}
|
|
584
|
-
function _reSendChat() {
|
|
585
|
-
_reSendChat = // 重新发送聊天, 需要将当前聊天内容以及下方的所有内容删除
|
|
586
|
-
_async_to_generator(function*(sessionCode, sessionContent, sessionIndex) {
|
|
587
|
-
var _sessionContent_property_extra, _sessionContent_property, _sessionContent_property_extra1, _sessionContent_property1;
|
|
588
|
-
if (sessionContent.role !== SessionContentRole.User) {
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
const sessionIds = sessionContents.value.slice(sessionIndex, sessionContents.value.length).map((item)=>item.id).filter((item)=>item !== undefined);
|
|
592
|
-
if (sessionIds.length > 0) {
|
|
593
|
-
deleteSessionContents(sessionCode, sessionIds);
|
|
594
|
-
}
|
|
595
|
-
yield plusSessionContent(sessionCode, {
|
|
596
|
-
role: SessionContentRole.User,
|
|
597
|
-
content: sessionContent.content,
|
|
598
|
-
sessionCode,
|
|
599
|
-
property: {
|
|
600
|
-
extra: {
|
|
601
|
-
cite: (_sessionContent_property = sessionContent.property) === null || _sessionContent_property === void 0 ? void 0 : (_sessionContent_property_extra = _sessionContent_property.extra) === null || _sessionContent_property_extra === void 0 ? void 0 : _sessionContent_property_extra.cite,
|
|
602
|
-
command: (_sessionContent_property1 = sessionContent.property) === null || _sessionContent_property1 === void 0 ? void 0 : (_sessionContent_property_extra1 = _sessionContent_property1.extra) === null || _sessionContent_property_extra1 === void 0 ? void 0 : _sessionContent_property_extra1.command
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
});
|
|
606
|
-
chat(sessionContent);
|
|
607
|
-
});
|
|
608
|
-
return _reSendChat.apply(this, arguments);
|
|
609
|
-
}
|
|
610
|
-
/**
|
|
611
|
-
* 删除聊天内容
|
|
612
|
-
* @param index 要删除的聊天内容索引
|
|
613
|
-
* @description
|
|
614
|
-
* - 如果删除的是用户消息,则同时删除该消息及其对应的AI回复(共2条)
|
|
615
|
-
* - 如果删除的是其他类型消息(如AI回复),则只删除该条消息
|
|
616
|
-
*/ function deleteChat(index, sessionCode) {
|
|
617
|
-
let sessionIds = [];
|
|
618
|
-
const chat = sessionContents.value[index];
|
|
619
|
-
if (chat.role === SessionContentRole.User) {
|
|
620
|
-
sessionIds = sessionContents.value.slice(index, index + 2).map((item)=>item.id).filter((item)=>item !== undefined);
|
|
621
|
-
deleteSessionContents(sessionCode, sessionIds);
|
|
622
|
-
return;
|
|
623
|
-
}
|
|
624
|
-
sessionIds = sessionContents.value.slice(index - 1, index + 1).map((item)=>item.id).filter((item)=>item !== undefined);
|
|
625
|
-
deleteSessionContents(sessionCode, sessionIds);
|
|
626
|
-
}
|
|
627
|
-
// 停止聊天
|
|
628
|
-
function stopChat(sessionCode) {
|
|
629
|
-
chatHelper.stop(sessionCode);
|
|
630
|
-
}
|
|
631
|
-
// 返回包装函数,这些函数会在调用时使用当前的apiImpl
|
|
632
|
-
return {
|
|
633
|
-
currentSession,
|
|
634
|
-
sessionContents,
|
|
635
|
-
sessionContentsMap,
|
|
636
|
-
sessionLoadingMap,
|
|
637
|
-
prompts,
|
|
638
|
-
currentSessionLoading,
|
|
639
|
-
isLoadingSessionContents,
|
|
640
|
-
chat,
|
|
641
|
-
stopChat,
|
|
642
|
-
plusSessionContent,
|
|
643
|
-
updateSessionContent,
|
|
644
|
-
getSessionContentById,
|
|
645
|
-
getLastSessionContentBySessionCode,
|
|
646
|
-
getSessionContentsBySessionCode,
|
|
647
|
-
setCurrentSession,
|
|
648
|
-
setCurrentSessionChain,
|
|
649
|
-
setSessionContents,
|
|
650
|
-
deleteSessionContent,
|
|
651
|
-
deleteSessionContents,
|
|
652
|
-
handleStartChat,
|
|
653
|
-
handleErrorChat,
|
|
654
|
-
handleCompleteRole,
|
|
655
|
-
reGenerateChat,
|
|
656
|
-
reSendChat,
|
|
657
|
-
deleteChat,
|
|
658
|
-
// API 方法包装器,使用正确的类型签名
|
|
659
|
-
getAgentInfoApi: (...args)=>apiImpl.getAgentInfo(...args),
|
|
660
|
-
clearSessionApi: (...args)=>apiImpl.clearSession(...args),
|
|
661
|
-
getSessionsApi: (...args)=>apiImpl.getSessions(...args),
|
|
662
|
-
plusSessionApi: (...args)=>apiImpl.plusSession(...args),
|
|
663
|
-
modifySessionApi: (...args)=>apiImpl.modifySession(...args),
|
|
664
|
-
deleteSessionApi: (...args)=>apiImpl.deleteSession(...args),
|
|
665
|
-
batchDeleteSessionsApi: (...args)=>apiImpl.batchDeleteSessions(...args),
|
|
666
|
-
getSessionApi: (...args)=>apiImpl.getSession(...args),
|
|
667
|
-
getSessionContentsApi: (...args)=>apiImpl.getSessionContents(...args),
|
|
668
|
-
plusSessionContentApi: (...args)=>apiImpl.plusSessionContent(...args),
|
|
669
|
-
modifySessionContentApi: (...args)=>apiImpl.modifySessionContent(...args),
|
|
670
|
-
deleteSessionContentApi: (...args)=>apiImpl.deleteSessionContent(...args),
|
|
671
|
-
batchDeleteSessionContentsApi: (...args)=>apiImpl.batchDeleteSessionContents(...args),
|
|
672
|
-
renameSessionApi: (...args)=>apiImpl.renameSession(...args),
|
|
673
|
-
getChatGroupApi: (...args)=>apiImpl.getChatGroup(...args),
|
|
674
|
-
stopSessionContentApi: (...args)=>apiImpl.stopSessionContent(...args),
|
|
675
|
-
shareSessionApi: (...args)=>apiImpl.shareSession(...args),
|
|
676
|
-
updateRequestOptions
|
|
677
|
-
};
|
|
678
|
-
};
|