@liujitcn/kratos-admin-system 0.0.64 → 0.0.66
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/README.md +5 -3
- package/dist/package/declarations/src/api/base/v1/ai_knowledge.d.ts +7 -0
- package/dist/package/declarations/src/api/system/admin/v1/ai_provider.d.ts +5 -1
- package/dist/package/declarations/src/api/system/admin/v1/ai_query.d.ts +10 -0
- package/dist/package/declarations/src/api/system/admin/v1/ai_session.d.ts +9 -0
- package/dist/package/declarations/src/locales/generated.d.ts +1405 -1089
- package/dist/package/declarations/src/rpc/base/v1/ai_knowledge.d.ts +22 -0
- package/dist/package/declarations/src/rpc/base/v1/ai_message.d.ts +2 -0
- package/dist/package/declarations/src/rpc/base/v1/ai_provider.d.ts +13 -6
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_provider.d.ts +85 -4
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_query.d.ts +73 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/ai_session.d.ts +114 -0
- package/dist/package/declarations/src/views/ai/chat/components/ChatPanel.vue.d.ts +9 -2
- package/dist/package/declarations/src/views/ai/chat/components/XSender.vue.d.ts +7 -0
- package/dist/package/declarations/src/views/ai/chat/modelDisplay.d.ts +5 -0
- package/dist/package/declarations/src/views/ai/chat/modelSelection.d.ts +9 -0
- package/dist/package/declarations/src/views/ai/query/index.vue.d.ts +3 -0
- package/dist/package/declarations/src/views/ai/session/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/v1/ai_knowledge.ts +22 -0
- package/dist/package/src/api/system/admin/v1/ai_provider.ts +14 -0
- package/dist/package/src/api/system/admin/v1/ai_query.ts +25 -0
- package/dist/package/src/api/system/admin/v1/ai_session.ts +25 -0
- package/dist/package/src/components/account/ChangePasswordForm.vue +1 -1
- package/dist/package/src/components/tenant-project/TenantProjectSelect.vue +21 -4
- package/dist/package/src/locales/en-US.json +351 -272
- package/dist/package/src/locales/ja-JP.json +351 -272
- package/dist/package/src/locales/zh-CN.json +361 -282
- package/dist/package/src/locales/zh-TW.json +351 -272
- package/dist/package/src/rpc/base/v1/ai_knowledge.ts +33 -0
- package/dist/package/src/rpc/base/v1/ai_message.ts +2 -0
- package/dist/package/src/rpc/base/v1/ai_provider.ts +14 -6
- package/dist/package/src/rpc/system/admin/v1/ai_provider.ts +93 -4
- package/dist/package/src/rpc/system/admin/v1/ai_query.ts +89 -0
- package/dist/package/src/rpc/system/admin/v1/ai_session.ts +131 -0
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +22 -1
- package/dist/package/src/views/ai/chat/components/XSender.vue +367 -71
- package/dist/package/src/views/ai/chat/index.vue +46 -8
- package/dist/package/src/views/ai/chat/modelDisplay.ts +67 -0
- package/dist/package/src/views/ai/chat/modelSelection.ts +31 -0
- package/dist/package/src/views/ai/query/index.vue +222 -0
- package/dist/package/src/views/ai/session/index.vue +422 -0
- package/dist/package/src/views/base/ai-provider/index.vue +301 -154
- package/dist/package/src/views/base/api-rate-limit-policy/index.vue +4 -3
- package/dist/package/src/views/base/message-provider/index.vue +9 -5
- package/dist/package/src/views/base/message-template/index.vue +2 -2
- package/dist/package/src/views/base/oauth-provider/index.vue +2 -2
- package/dist/package/src/views/base/rate-limit-rule/index.vue +8 -3
- package/dist/package/src/views/base/tenant-project-grant/index.vue +9 -4
- package/dist/package/src/views/tool/code-gen/config.ts +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.8
|
|
4
|
+
// protoc unknown
|
|
5
|
+
// source: base/v1/ai_knowledge.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
|
|
9
|
+
/** AI知识库选项查询请求。 */
|
|
10
|
+
export interface ListAiKnowledgeOptionsRequest {
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** AI知识库选项查询响应。 */
|
|
14
|
+
export interface ListAiKnowledgeOptionsResponse {
|
|
15
|
+
/** 知识库选项列表 */
|
|
16
|
+
options: AiKnowledgeOption[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** AI知识库选项。 */
|
|
20
|
+
export interface AiKnowledgeOption {
|
|
21
|
+
/** 知识库ID */
|
|
22
|
+
id: number;
|
|
23
|
+
/** 知识库名称 */
|
|
24
|
+
name: string;
|
|
25
|
+
/** 文档数量 */
|
|
26
|
+
doc_count: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** AI 知识库选项查询服务。 */
|
|
30
|
+
export interface AiKnowledgeService {
|
|
31
|
+
/** 查询可用的AI知识库选项。 */
|
|
32
|
+
ListAiKnowledgeOptions(request: ListAiKnowledgeOptionsRequest): Promise<ListAiKnowledgeOptionsResponse>;
|
|
33
|
+
}
|
|
@@ -10,20 +10,28 @@
|
|
|
10
10
|
export interface ListAiProviderModelOptionsRequest {
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/** AI Provider模型选项查询响应。 */
|
|
14
|
+
export interface ListAiProviderModelOptionsResponse {
|
|
15
|
+
/** Provider及其模型列表 */
|
|
16
|
+
providers: AiProviderModelOption[];
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
/** 已启用的AI Provider及其模型选项。 */
|
|
14
20
|
export interface AiProviderModelOption {
|
|
15
21
|
/** Provider ID */
|
|
16
22
|
provider_id: number;
|
|
17
23
|
/** Provider名称 */
|
|
18
24
|
name: string;
|
|
19
|
-
/**
|
|
20
|
-
models:
|
|
25
|
+
/** 模型选项列表 */
|
|
26
|
+
models: AiProviderModel[];
|
|
21
27
|
}
|
|
22
28
|
|
|
23
|
-
/** AI Provider
|
|
24
|
-
export interface
|
|
25
|
-
/**
|
|
26
|
-
|
|
29
|
+
/** AI Provider下的单个模型选项。 */
|
|
30
|
+
export interface AiProviderModel {
|
|
31
|
+
/** 模型名称 */
|
|
32
|
+
model_name: string;
|
|
33
|
+
/** 展示名称 */
|
|
34
|
+
display_name: string;
|
|
27
35
|
}
|
|
28
36
|
|
|
29
37
|
/** AI Provider 可选模型查询服务。 */
|
|
@@ -8,6 +8,24 @@
|
|
|
8
8
|
import type { Status } from "../../../common/v1/enum";
|
|
9
9
|
import type { Empty } from "../../../google/protobuf/empty";
|
|
10
10
|
|
|
11
|
+
/** AI模型分类枚举。 */
|
|
12
|
+
export enum AiModelCategory {
|
|
13
|
+
/** AI_MODEL_CATEGORY_UNSPECIFIED - 未指定AI模型分类。 */
|
|
14
|
+
AI_MODEL_CATEGORY_UNSPECIFIED = 0,
|
|
15
|
+
/** AI_MODEL_CATEGORY_CHAT - 对话模型。 */
|
|
16
|
+
AI_MODEL_CATEGORY_CHAT = 1,
|
|
17
|
+
/** AI_MODEL_CATEGORY_EMBEDDING - 向量模型。 */
|
|
18
|
+
AI_MODEL_CATEGORY_EMBEDDING = 2,
|
|
19
|
+
/** AI_MODEL_CATEGORY_RERANK - 重排序模型。 */
|
|
20
|
+
AI_MODEL_CATEGORY_RERANK = 3,
|
|
21
|
+
/** AI_MODEL_CATEGORY_IMAGE - 图片模型。 */
|
|
22
|
+
AI_MODEL_CATEGORY_IMAGE = 4,
|
|
23
|
+
/** AI_MODEL_CATEGORY_VIDEO - 视频模型。 */
|
|
24
|
+
AI_MODEL_CATEGORY_VIDEO = 5,
|
|
25
|
+
/** AI_MODEL_CATEGORY_AUDIO - 音频模型。 */
|
|
26
|
+
AI_MODEL_CATEGORY_AUDIO = 6,
|
|
27
|
+
}
|
|
28
|
+
|
|
11
29
|
/** AI供应商分页查询条件。 */
|
|
12
30
|
export interface PageAiProviderRequest {
|
|
13
31
|
/** 供应商名称 */
|
|
@@ -48,8 +66,6 @@ export interface AiProviderForm {
|
|
|
48
66
|
api_key: string;
|
|
49
67
|
/** 是否已保存模型密钥 */
|
|
50
68
|
api_key_configured: boolean;
|
|
51
|
-
/** 多模型JSON数组 */
|
|
52
|
-
models_json: string;
|
|
53
69
|
/** 排序值 */
|
|
54
70
|
sort: number;
|
|
55
71
|
/** Provider稳定标识 */
|
|
@@ -58,6 +74,28 @@ export interface AiProviderForm {
|
|
|
58
74
|
config:
|
|
59
75
|
| { [key: string]: any }
|
|
60
76
|
| undefined;
|
|
77
|
+
/** 供应商下的AI模型列表 */
|
|
78
|
+
models: AiProviderModelForm[];
|
|
79
|
+
/** 状态 */
|
|
80
|
+
status: Status;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** AI供应商模型维护表单;provider_id由所属供应商表单隐式给定。 */
|
|
84
|
+
export interface AiProviderModelForm {
|
|
85
|
+
/** 模型ID;新增时为0 */
|
|
86
|
+
id: number;
|
|
87
|
+
/** 模型名称,供应商API标识 */
|
|
88
|
+
model_name: string;
|
|
89
|
+
/** 显示名称 */
|
|
90
|
+
display_name: string;
|
|
91
|
+
/** 模型分类:枚举【AiModelCategory】 */
|
|
92
|
+
category: AiModelCategory;
|
|
93
|
+
/** 分类个性化配置JSON对象 */
|
|
94
|
+
config:
|
|
95
|
+
| { [key: string]: any }
|
|
96
|
+
| undefined;
|
|
97
|
+
/** 排序值 */
|
|
98
|
+
sort: number;
|
|
61
99
|
/** 状态 */
|
|
62
100
|
status: Status;
|
|
63
101
|
}
|
|
@@ -74,6 +112,50 @@ export interface UpdateAiProviderRequest {
|
|
|
74
112
|
ai_provider: AiProviderForm | undefined;
|
|
75
113
|
}
|
|
76
114
|
|
|
115
|
+
/** 测试AI供应商模型请求。 */
|
|
116
|
+
export interface TestAiProviderModelsRequest {
|
|
117
|
+
/** 待测试的AI供应商草稿 */
|
|
118
|
+
ai_provider: AiProviderForm | undefined;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** 单个AI模型连通性测试结果。 */
|
|
122
|
+
export interface AiProviderModelTestResult {
|
|
123
|
+
/** 模型名称 */
|
|
124
|
+
model_name: string;
|
|
125
|
+
/** 测试是否成功 */
|
|
126
|
+
success: boolean;
|
|
127
|
+
/** 测试耗时毫秒 */
|
|
128
|
+
duration_ms: number;
|
|
129
|
+
/** 失败原因;成功时为空 */
|
|
130
|
+
message: string;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/** 测试AI供应商全部模型响应。 */
|
|
134
|
+
export interface TestAiProviderModelsResponse {
|
|
135
|
+
/** 模型测试结果 */
|
|
136
|
+
results: AiProviderModelTestResult[];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** 查询AI供应商选项请求。 */
|
|
140
|
+
export interface ListAiProviderOptionsRequest {
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** 查询AI供应商选项响应。 */
|
|
144
|
+
export interface ListAiProviderOptionsResponse {
|
|
145
|
+
/** 已启用的AI供应商列表 */
|
|
146
|
+
options: AiProviderOption[];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** AI供应商选项。 */
|
|
150
|
+
export interface AiProviderOption {
|
|
151
|
+
/** 供应商ID */
|
|
152
|
+
id: number;
|
|
153
|
+
/** 供应商名称 */
|
|
154
|
+
name: string;
|
|
155
|
+
/** Provider稳定标识 */
|
|
156
|
+
provider: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
77
159
|
/** 删除AI供应商请求。 */
|
|
78
160
|
export interface DeleteAiProviderRequest {
|
|
79
161
|
/** 供应商ID */
|
|
@@ -98,12 +180,12 @@ export interface AiProvider {
|
|
|
98
180
|
base_url: string;
|
|
99
181
|
/** 是否已保存模型密钥 */
|
|
100
182
|
api_key_configured: boolean;
|
|
101
|
-
/** 模型名称列表 */
|
|
102
|
-
model_names: string[];
|
|
103
183
|
/** 排序值 */
|
|
104
184
|
sort: number;
|
|
105
185
|
/** Provider稳定标识 */
|
|
106
186
|
provider: string;
|
|
187
|
+
/** 供应商下的模型名称列表 */
|
|
188
|
+
model_names: string[];
|
|
107
189
|
/** 状态 */
|
|
108
190
|
status: Status;
|
|
109
191
|
/** 创建时间 */
|
|
@@ -116,12 +198,19 @@ export interface AiProvider {
|
|
|
116
198
|
export interface AiProviderService {
|
|
117
199
|
/** 分页查询AI供应商。 */
|
|
118
200
|
PageAiProvider(request: PageAiProviderRequest): Promise<PageAiProviderResponse>;
|
|
201
|
+
/**
|
|
202
|
+
* 查询已启用的AI供应商选项。
|
|
203
|
+
* 字面路径必须先于 /{id} 声明:gorilla mux 按注册顺序匹配,否则会被 {id} 路由抢占。
|
|
204
|
+
*/
|
|
205
|
+
ListAiProviderOptions(request: ListAiProviderOptionsRequest): Promise<ListAiProviderOptionsResponse>;
|
|
119
206
|
/** 查询AI供应商表单。 */
|
|
120
207
|
GetAiProvider(request: GetAiProviderRequest): Promise<AiProviderForm>;
|
|
121
208
|
/** 创建AI供应商。 */
|
|
122
209
|
CreateAiProvider(request: CreateAiProviderRequest): Promise<Empty>;
|
|
123
210
|
/** 更新AI供应商。 */
|
|
124
211
|
UpdateAiProvider(request: UpdateAiProviderRequest): Promise<Empty>;
|
|
212
|
+
/** 测试AI供应商表单中的全部模型。 */
|
|
213
|
+
TestAiProviderModels(request: TestAiProviderModelsRequest): Promise<TestAiProviderModelsResponse>;
|
|
125
214
|
/** 删除AI供应商。 */
|
|
126
215
|
DeleteAiProvider(request: DeleteAiProviderRequest): Promise<Empty>;
|
|
127
216
|
/** 设置AI供应商状态。 */
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.8
|
|
4
|
+
// protoc unknown
|
|
5
|
+
// source: system/admin/v1/ai_query.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
|
|
9
|
+
/** 智能问数状态枚举。 */
|
|
10
|
+
export enum AiQueryStatus {
|
|
11
|
+
/** AI_QUERY_STATUS_UNSPECIFIED - 未指定智能问数状态。 */
|
|
12
|
+
AI_QUERY_STATUS_UNSPECIFIED = 0,
|
|
13
|
+
/** AI_QUERY_STATUS_SUCCESS - 成功。 */
|
|
14
|
+
AI_QUERY_STATUS_SUCCESS = 1,
|
|
15
|
+
/** AI_QUERY_STATUS_FAILED - 失败。 */
|
|
16
|
+
AI_QUERY_STATUS_FAILED = 2,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** 智能问数分页查询条件。 */
|
|
20
|
+
export interface PageAiQueryRequest {
|
|
21
|
+
/** 问题内容 */
|
|
22
|
+
question: string;
|
|
23
|
+
/** 问数状态:枚举【AiQueryStatus】 */
|
|
24
|
+
status?:
|
|
25
|
+
| AiQueryStatus
|
|
26
|
+
| undefined;
|
|
27
|
+
/** 当前页码 */
|
|
28
|
+
page_num: number;
|
|
29
|
+
/** 每页行数 */
|
|
30
|
+
page_size: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** 智能问数分页响应。 */
|
|
34
|
+
export interface PageAiQueryResponse {
|
|
35
|
+
/** 智能问数记录列表 */
|
|
36
|
+
queries: AiQueryRecord[];
|
|
37
|
+
/** 总数 */
|
|
38
|
+
total: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** 查询智能问数记录请求。 */
|
|
42
|
+
export interface GetAiQueryRequest {
|
|
43
|
+
/** 记录ID */
|
|
44
|
+
id: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** 智能问数结果快照行。 */
|
|
48
|
+
export interface AiQueryResultRow {
|
|
49
|
+
/** 行数据 */
|
|
50
|
+
values: string[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** 智能问数记录。 */
|
|
54
|
+
export interface AiQueryRecord {
|
|
55
|
+
/** 记录ID */
|
|
56
|
+
id: number;
|
|
57
|
+
/** 租户ID */
|
|
58
|
+
tenant_id: number;
|
|
59
|
+
/** 用户ID */
|
|
60
|
+
user_id: number;
|
|
61
|
+
/** 用户账号 */
|
|
62
|
+
user_name: string;
|
|
63
|
+
/** 自然语言问题 */
|
|
64
|
+
question: string;
|
|
65
|
+
/** 生成的只读SQL */
|
|
66
|
+
sql: string;
|
|
67
|
+
/** 问数状态:枚举【AiQueryStatus】 */
|
|
68
|
+
status: AiQueryStatus;
|
|
69
|
+
/** 结果行数 */
|
|
70
|
+
row_count: number;
|
|
71
|
+
/** SQL执行耗时毫秒 */
|
|
72
|
+
elapsed_ms: number;
|
|
73
|
+
/** 失败原因 */
|
|
74
|
+
error_msg: string;
|
|
75
|
+
/** 结果快照列名,仅详情返回 */
|
|
76
|
+
result_columns: string[];
|
|
77
|
+
/** 结果快照数据行,仅详情返回 */
|
|
78
|
+
result_rows: AiQueryResultRow[];
|
|
79
|
+
/** 创建时间 */
|
|
80
|
+
created_at: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** 智能问数记录管理服务。 */
|
|
84
|
+
export interface AiQueryService {
|
|
85
|
+
/** 分页查询智能问数记录。 */
|
|
86
|
+
PageAiQuery(request: PageAiQueryRequest): Promise<PageAiQueryResponse>;
|
|
87
|
+
/** 查询智能问数记录详情。 */
|
|
88
|
+
GetAiQuery(request: GetAiQueryRequest): Promise<AiQueryRecord>;
|
|
89
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.8
|
|
4
|
+
// protoc unknown
|
|
5
|
+
// source: system/admin/v1/ai_session.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
import type { AiMessageStatus } from "../../../base/v1/ai_session";
|
|
9
|
+
import type { Terminal } from "../../../base/v1/ai_tool";
|
|
10
|
+
|
|
11
|
+
/** AI会话分页查询条件。 */
|
|
12
|
+
export interface PageAiSessionRequest {
|
|
13
|
+
/** 会话标题 */
|
|
14
|
+
title: string;
|
|
15
|
+
/** 终端类型:枚举【Terminal】 */
|
|
16
|
+
terminal?:
|
|
17
|
+
| Terminal
|
|
18
|
+
| undefined;
|
|
19
|
+
/** 当前页码 */
|
|
20
|
+
page_num: number;
|
|
21
|
+
/** 每页行数 */
|
|
22
|
+
page_size: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** AI会话分页响应。 */
|
|
26
|
+
export interface PageAiSessionResponse {
|
|
27
|
+
/** 会话列表 */
|
|
28
|
+
sessions: AiSessionRecord[];
|
|
29
|
+
/** 总数 */
|
|
30
|
+
total: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** AI会话分页记录。 */
|
|
34
|
+
export interface AiSessionRecord {
|
|
35
|
+
/** 会话ID */
|
|
36
|
+
id: number;
|
|
37
|
+
/** 所属用户ID */
|
|
38
|
+
user_id: number;
|
|
39
|
+
/** 用户账号 */
|
|
40
|
+
user_name: string;
|
|
41
|
+
/** 用户昵称 */
|
|
42
|
+
nick_name: string;
|
|
43
|
+
/** 会话标题 */
|
|
44
|
+
title: string;
|
|
45
|
+
/** 会话摘要 */
|
|
46
|
+
summary: string;
|
|
47
|
+
/** 终端类型:枚举【Terminal】 */
|
|
48
|
+
terminal: Terminal;
|
|
49
|
+
/** 消息轮次数 */
|
|
50
|
+
message_count: number;
|
|
51
|
+
/** 累计输入Token数 */
|
|
52
|
+
input_tokens: number;
|
|
53
|
+
/** 累计输出Token数 */
|
|
54
|
+
output_tokens: number;
|
|
55
|
+
/** 累计缓存Token数 */
|
|
56
|
+
cache_tokens: number;
|
|
57
|
+
/** 累计总Token数 */
|
|
58
|
+
total_tokens: number;
|
|
59
|
+
/** 创建时间 */
|
|
60
|
+
created_at: string;
|
|
61
|
+
/** 更新时间 */
|
|
62
|
+
updated_at: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** 分页查询AI会话消息请求。 */
|
|
66
|
+
export interface PageAiSessionMessageRequest {
|
|
67
|
+
/** 会话ID */
|
|
68
|
+
id: number;
|
|
69
|
+
/** 当前页码 */
|
|
70
|
+
page_num: number;
|
|
71
|
+
/** 每页行数 */
|
|
72
|
+
page_size: number;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** 分页查询AI会话消息响应。 */
|
|
76
|
+
export interface PageAiSessionMessageResponse {
|
|
77
|
+
/** 消息列表 */
|
|
78
|
+
messages: AiSessionMessageRecord[];
|
|
79
|
+
/** 总数 */
|
|
80
|
+
total: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** AI会话消息记录。 */
|
|
84
|
+
export interface AiSessionMessageRecord {
|
|
85
|
+
/** 消息ID */
|
|
86
|
+
id: number;
|
|
87
|
+
/** 用户输入内容 */
|
|
88
|
+
input_content: string;
|
|
89
|
+
/** AI回复内容 */
|
|
90
|
+
output_content: string;
|
|
91
|
+
/** 回复使用的模型名称 */
|
|
92
|
+
model: string;
|
|
93
|
+
/** 消息生成状态:枚举【AiMessageStatus】 */
|
|
94
|
+
status: AiMessageStatus;
|
|
95
|
+
/** 输入Token数 */
|
|
96
|
+
input_tokens: number;
|
|
97
|
+
/** 输出Token数 */
|
|
98
|
+
output_tokens: number;
|
|
99
|
+
/** 缓存Token数 */
|
|
100
|
+
cache_tokens: number;
|
|
101
|
+
/** 总Token数 */
|
|
102
|
+
total_tokens: number;
|
|
103
|
+
/** 首Token耗时毫秒 */
|
|
104
|
+
first_token_ms: number;
|
|
105
|
+
/** 总耗时毫秒 */
|
|
106
|
+
duration_ms: number;
|
|
107
|
+
/** 附件列表 */
|
|
108
|
+
attachments: AiSessionMessageAttachment[];
|
|
109
|
+
/** 创建时间 */
|
|
110
|
+
created_at: string;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** AI会话消息附件。 */
|
|
114
|
+
export interface AiSessionMessageAttachment {
|
|
115
|
+
/** 附件名称 */
|
|
116
|
+
name: string;
|
|
117
|
+
/** 附件大小 */
|
|
118
|
+
size: number;
|
|
119
|
+
/** 附件地址 */
|
|
120
|
+
url: string;
|
|
121
|
+
/** 附件 MIME 类型 */
|
|
122
|
+
mime_type: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** AI会话管理服务。 */
|
|
126
|
+
export interface AiSessionService {
|
|
127
|
+
/** 分页查询AI会话。 */
|
|
128
|
+
PageAiSession(request: PageAiSessionRequest): Promise<PageAiSessionResponse>;
|
|
129
|
+
/** 分页查询AI会话消息。 */
|
|
130
|
+
PageAiSessionMessage(request: PageAiSessionMessageRequest): Promise<PageAiSessionMessageResponse>;
|
|
131
|
+
}
|
|
@@ -53,8 +53,11 @@
|
|
|
53
53
|
:model-providers="modelProviders"
|
|
54
54
|
:provider-id="providerId"
|
|
55
55
|
:model-name="modelName"
|
|
56
|
+
:knowledge-options="knowledgeOptions"
|
|
57
|
+
:knowledge-ids="knowledgeIds"
|
|
56
58
|
@submit="handleSubmit"
|
|
57
59
|
@model-change="handleModelChange"
|
|
60
|
+
@knowledge-change="handleKnowledgeChange"
|
|
58
61
|
/>
|
|
59
62
|
</div>
|
|
60
63
|
</div>
|
|
@@ -78,7 +81,9 @@
|
|
|
78
81
|
>
|
|
79
82
|
{{ item.replySourceTag.text }}
|
|
80
83
|
</span>
|
|
81
|
-
<span v-if="item.model" class="agent-message-meta__model">{{
|
|
84
|
+
<span v-if="item.model" class="agent-message-meta__model">{{
|
|
85
|
+
resolveModelDisplayName(modelProviders, item.model)
|
|
86
|
+
}}</span>
|
|
82
87
|
<span v-if="resolveMessageReplyTime(item)" class="agent-message-meta__time">{{
|
|
83
88
|
resolveMessageReplyTime(item)
|
|
84
89
|
}}</span>
|
|
@@ -334,8 +339,11 @@
|
|
|
334
339
|
:model-providers="modelProviders"
|
|
335
340
|
:provider-id="providerId"
|
|
336
341
|
:model-name="modelName"
|
|
342
|
+
:knowledge-options="knowledgeOptions"
|
|
343
|
+
:knowledge-ids="knowledgeIds"
|
|
337
344
|
@submit="handleSubmit"
|
|
338
345
|
@model-change="handleModelChange"
|
|
346
|
+
@knowledge-change="handleKnowledgeChange"
|
|
339
347
|
/>
|
|
340
348
|
</div>
|
|
341
349
|
</template>
|
|
@@ -354,9 +362,11 @@ import { formatDateTime } from "@liujitcn/kratos-admin-core/format";
|
|
|
354
362
|
import type { AiAction } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_message";
|
|
355
363
|
import { type AiAttachment, type AiSession } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
|
|
356
364
|
import type { AiProviderModelOption } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_provider";
|
|
365
|
+
import type { AiKnowledgeOption } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_knowledge";
|
|
357
366
|
import type { AiShortcut, AiToolCall } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_tool";
|
|
358
367
|
import { AiMessageStatus } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
|
|
359
368
|
import { resolvePersistedMessage } from "../../../../utils/persisted-message";
|
|
369
|
+
import { resolveModelDisplayName } from "../modelDisplay";
|
|
360
370
|
import XSender from "./XSender.vue";
|
|
361
371
|
|
|
362
372
|
// AI Markdown 渲染器依赖较重,仅在真正出现助手消息时再加载。
|
|
@@ -498,6 +508,10 @@ const props = defineProps<{
|
|
|
498
508
|
providerId: number;
|
|
499
509
|
/** 当前选择的模型名称。 */
|
|
500
510
|
modelName: string;
|
|
511
|
+
/** 当前可供选择的知识库。 */
|
|
512
|
+
knowledgeOptions: AiKnowledgeOption[];
|
|
513
|
+
/** 当前选择的知识库编号列表。 */
|
|
514
|
+
knowledgeIds: number[];
|
|
501
515
|
}>();
|
|
502
516
|
|
|
503
517
|
const emit = defineEmits<{
|
|
@@ -505,6 +519,8 @@ const emit = defineEmits<{
|
|
|
505
519
|
submit: [payload: SubmitPayload];
|
|
506
520
|
/** 更新当前选择的供应商和模型。 */
|
|
507
521
|
modelChange: [providerId: number, modelName: string];
|
|
522
|
+
/** 更新当前选择的知识库编号列表。 */
|
|
523
|
+
knowledgeChange: [knowledgeIds: number[]];
|
|
508
524
|
/** 触发消息级操作。 */
|
|
509
525
|
messageAction: [payload: { action: ChatMessageAction; item: ChatMessageItem }];
|
|
510
526
|
/** 提交当前用户消息的文本编辑。 */
|
|
@@ -645,6 +661,11 @@ function handleModelChange(providerId: number, modelName: string) {
|
|
|
645
661
|
emit("modelChange", providerId, modelName);
|
|
646
662
|
}
|
|
647
663
|
|
|
664
|
+
/** 更新当前选择的知识库编号列表。 */
|
|
665
|
+
function handleKnowledgeChange(knowledgeIds: number[]) {
|
|
666
|
+
emit("knowledgeChange", knowledgeIds);
|
|
667
|
+
}
|
|
668
|
+
|
|
648
669
|
/** 点击快捷入口时提交对应入口动作。 */
|
|
649
670
|
function handleShortcutClick(shortcut: AiShortcut) {
|
|
650
671
|
emit("submit", {
|