@hlw-zbzs/ai 1.0.2 → 1.0.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.
@@ -0,0 +1,418 @@
1
+ import { AiConfig, AiEngine, AiInfo } from '../types';
2
+ export * from './preset';
3
+ /**
4
+ * 默认配置集
5
+ * @returns 默认配置表
6
+ */
7
+ export declare function getDefaults(): Record<AiEngine, AiConfig>;
8
+ /**
9
+ * 状态存储器
10
+ */
11
+ export declare const useAiStore: import('pinia').StoreDefinition<"ai", {
12
+ engine: AiEngine;
13
+ isEnabled: boolean;
14
+ configs: Record<AiEngine, AiConfig>;
15
+ remoteList: AiInfo[];
16
+ }, {
17
+ conf: (state: {
18
+ engine: AiEngine;
19
+ isEnabled: boolean;
20
+ configs: {
21
+ deepseek: {
22
+ key: string;
23
+ url?: string;
24
+ model: string;
25
+ temp?: number;
26
+ tokens?: number;
27
+ sys?: string;
28
+ };
29
+ qwen: {
30
+ key: string;
31
+ url?: string;
32
+ model: string;
33
+ temp?: number;
34
+ tokens?: number;
35
+ sys?: string;
36
+ };
37
+ chatgpt: {
38
+ key: string;
39
+ url?: string;
40
+ model: string;
41
+ temp?: number;
42
+ tokens?: number;
43
+ sys?: string;
44
+ };
45
+ zhipu: {
46
+ key: string;
47
+ url?: string;
48
+ model: string;
49
+ temp?: number;
50
+ tokens?: number;
51
+ sys?: string;
52
+ };
53
+ doubao: {
54
+ key: string;
55
+ url?: string;
56
+ model: string;
57
+ temp?: number;
58
+ tokens?: number;
59
+ sys?: string;
60
+ };
61
+ moonshot: {
62
+ key: string;
63
+ url?: string;
64
+ model: string;
65
+ temp?: number;
66
+ tokens?: number;
67
+ sys?: string;
68
+ };
69
+ claude: {
70
+ key: string;
71
+ url?: string;
72
+ model: string;
73
+ temp?: number;
74
+ tokens?: number;
75
+ sys?: string;
76
+ };
77
+ ollama: {
78
+ key: string;
79
+ url?: string;
80
+ model: string;
81
+ temp?: number;
82
+ tokens?: number;
83
+ sys?: string;
84
+ };
85
+ custom: {
86
+ key: string;
87
+ url?: string;
88
+ model: string;
89
+ temp?: number;
90
+ tokens?: number;
91
+ sys?: string;
92
+ };
93
+ };
94
+ remoteList: {
95
+ type: AiEngine;
96
+ name: string;
97
+ tag: string;
98
+ free?: boolean;
99
+ enable: boolean;
100
+ models: string[];
101
+ model: string;
102
+ apiUrl: string;
103
+ website: string;
104
+ }[];
105
+ } & import('pinia').PiniaCustomStateProperties<{
106
+ engine: AiEngine;
107
+ isEnabled: boolean;
108
+ configs: Record<AiEngine, AiConfig>;
109
+ remoteList: AiInfo[];
110
+ }>) => AiConfig;
111
+ isReady: (state: {
112
+ engine: AiEngine;
113
+ isEnabled: boolean;
114
+ configs: {
115
+ deepseek: {
116
+ key: string;
117
+ url?: string;
118
+ model: string;
119
+ temp?: number;
120
+ tokens?: number;
121
+ sys?: string;
122
+ };
123
+ qwen: {
124
+ key: string;
125
+ url?: string;
126
+ model: string;
127
+ temp?: number;
128
+ tokens?: number;
129
+ sys?: string;
130
+ };
131
+ chatgpt: {
132
+ key: string;
133
+ url?: string;
134
+ model: string;
135
+ temp?: number;
136
+ tokens?: number;
137
+ sys?: string;
138
+ };
139
+ zhipu: {
140
+ key: string;
141
+ url?: string;
142
+ model: string;
143
+ temp?: number;
144
+ tokens?: number;
145
+ sys?: string;
146
+ };
147
+ doubao: {
148
+ key: string;
149
+ url?: string;
150
+ model: string;
151
+ temp?: number;
152
+ tokens?: number;
153
+ sys?: string;
154
+ };
155
+ moonshot: {
156
+ key: string;
157
+ url?: string;
158
+ model: string;
159
+ temp?: number;
160
+ tokens?: number;
161
+ sys?: string;
162
+ };
163
+ claude: {
164
+ key: string;
165
+ url?: string;
166
+ model: string;
167
+ temp?: number;
168
+ tokens?: number;
169
+ sys?: string;
170
+ };
171
+ ollama: {
172
+ key: string;
173
+ url?: string;
174
+ model: string;
175
+ temp?: number;
176
+ tokens?: number;
177
+ sys?: string;
178
+ };
179
+ custom: {
180
+ key: string;
181
+ url?: string;
182
+ model: string;
183
+ temp?: number;
184
+ tokens?: number;
185
+ sys?: string;
186
+ };
187
+ };
188
+ remoteList: {
189
+ type: AiEngine;
190
+ name: string;
191
+ tag: string;
192
+ free?: boolean;
193
+ enable: boolean;
194
+ models: string[];
195
+ model: string;
196
+ apiUrl: string;
197
+ website: string;
198
+ }[];
199
+ } & import('pinia').PiniaCustomStateProperties<{
200
+ engine: AiEngine;
201
+ isEnabled: boolean;
202
+ configs: Record<AiEngine, AiConfig>;
203
+ remoteList: AiInfo[];
204
+ }>) => boolean;
205
+ list: (state: {
206
+ engine: AiEngine;
207
+ isEnabled: boolean;
208
+ configs: {
209
+ deepseek: {
210
+ key: string;
211
+ url?: string;
212
+ model: string;
213
+ temp?: number;
214
+ tokens?: number;
215
+ sys?: string;
216
+ };
217
+ qwen: {
218
+ key: string;
219
+ url?: string;
220
+ model: string;
221
+ temp?: number;
222
+ tokens?: number;
223
+ sys?: string;
224
+ };
225
+ chatgpt: {
226
+ key: string;
227
+ url?: string;
228
+ model: string;
229
+ temp?: number;
230
+ tokens?: number;
231
+ sys?: string;
232
+ };
233
+ zhipu: {
234
+ key: string;
235
+ url?: string;
236
+ model: string;
237
+ temp?: number;
238
+ tokens?: number;
239
+ sys?: string;
240
+ };
241
+ doubao: {
242
+ key: string;
243
+ url?: string;
244
+ model: string;
245
+ temp?: number;
246
+ tokens?: number;
247
+ sys?: string;
248
+ };
249
+ moonshot: {
250
+ key: string;
251
+ url?: string;
252
+ model: string;
253
+ temp?: number;
254
+ tokens?: number;
255
+ sys?: string;
256
+ };
257
+ claude: {
258
+ key: string;
259
+ url?: string;
260
+ model: string;
261
+ temp?: number;
262
+ tokens?: number;
263
+ sys?: string;
264
+ };
265
+ ollama: {
266
+ key: string;
267
+ url?: string;
268
+ model: string;
269
+ temp?: number;
270
+ tokens?: number;
271
+ sys?: string;
272
+ };
273
+ custom: {
274
+ key: string;
275
+ url?: string;
276
+ model: string;
277
+ temp?: number;
278
+ tokens?: number;
279
+ sys?: string;
280
+ };
281
+ };
282
+ remoteList: {
283
+ type: AiEngine;
284
+ name: string;
285
+ tag: string;
286
+ free?: boolean;
287
+ enable: boolean;
288
+ models: string[];
289
+ model: string;
290
+ apiUrl: string;
291
+ website: string;
292
+ }[];
293
+ } & import('pinia').PiniaCustomStateProperties<{
294
+ engine: AiEngine;
295
+ isEnabled: boolean;
296
+ configs: Record<AiEngine, AiConfig>;
297
+ remoteList: AiInfo[];
298
+ }>) => AiInfo[];
299
+ info: (state: {
300
+ engine: AiEngine;
301
+ isEnabled: boolean;
302
+ configs: {
303
+ deepseek: {
304
+ key: string;
305
+ url?: string;
306
+ model: string;
307
+ temp?: number;
308
+ tokens?: number;
309
+ sys?: string;
310
+ };
311
+ qwen: {
312
+ key: string;
313
+ url?: string;
314
+ model: string;
315
+ temp?: number;
316
+ tokens?: number;
317
+ sys?: string;
318
+ };
319
+ chatgpt: {
320
+ key: string;
321
+ url?: string;
322
+ model: string;
323
+ temp?: number;
324
+ tokens?: number;
325
+ sys?: string;
326
+ };
327
+ zhipu: {
328
+ key: string;
329
+ url?: string;
330
+ model: string;
331
+ temp?: number;
332
+ tokens?: number;
333
+ sys?: string;
334
+ };
335
+ doubao: {
336
+ key: string;
337
+ url?: string;
338
+ model: string;
339
+ temp?: number;
340
+ tokens?: number;
341
+ sys?: string;
342
+ };
343
+ moonshot: {
344
+ key: string;
345
+ url?: string;
346
+ model: string;
347
+ temp?: number;
348
+ tokens?: number;
349
+ sys?: string;
350
+ };
351
+ claude: {
352
+ key: string;
353
+ url?: string;
354
+ model: string;
355
+ temp?: number;
356
+ tokens?: number;
357
+ sys?: string;
358
+ };
359
+ ollama: {
360
+ key: string;
361
+ url?: string;
362
+ model: string;
363
+ temp?: number;
364
+ tokens?: number;
365
+ sys?: string;
366
+ };
367
+ custom: {
368
+ key: string;
369
+ url?: string;
370
+ model: string;
371
+ temp?: number;
372
+ tokens?: number;
373
+ sys?: string;
374
+ };
375
+ };
376
+ remoteList: {
377
+ type: AiEngine;
378
+ name: string;
379
+ tag: string;
380
+ free?: boolean;
381
+ enable: boolean;
382
+ models: string[];
383
+ model: string;
384
+ apiUrl: string;
385
+ website: string;
386
+ }[];
387
+ } & import('pinia').PiniaCustomStateProperties<{
388
+ engine: AiEngine;
389
+ isEnabled: boolean;
390
+ configs: Record<AiEngine, AiConfig>;
391
+ remoteList: AiInfo[];
392
+ }>) => AiInfo;
393
+ }, {
394
+ /**
395
+ * 设置当前擎
396
+ * @param type 引擎类型名
397
+ */
398
+ set(type: AiEngine): void;
399
+ /**
400
+ * 切换启用态
401
+ */
402
+ toggle(): void;
403
+ /**
404
+ * 保存配置项
405
+ * @param type 引擎类型名
406
+ * @param conf 配置项对象
407
+ */
408
+ save(type: AiEngine, conf: Partial<AiConfig>): void;
409
+ /**
410
+ * 重置配置项
411
+ * @param type 引擎类型名
412
+ */
413
+ reset(type?: AiEngine): void;
414
+ /**
415
+ * 同步模型列
416
+ */
417
+ sync(): Promise<AiInfo[]>;
418
+ }>;
@@ -0,0 +1,15 @@
1
+ import { AiEngine, AiInfo } from '../types';
2
+ /**
3
+ * 引擎配置表
4
+ */
5
+ export declare const engines: Record<AiEngine, AiInfo>;
6
+ /**
7
+ * 引擎清单集
8
+ */
9
+ export declare const ENGINES: AiInfo[];
10
+ /**
11
+ * 获取引擎名
12
+ * @param type 引擎类型名
13
+ * @returns 引擎展示名
14
+ */
15
+ export declare function engineName(type: string): string;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * 模型类型名
3
+ */
4
+ export type AiEngine =
5
+ | 'deepseek'
6
+ | 'qwen'
7
+ | 'chatgpt'
8
+ | 'zhipu'
9
+ | 'doubao'
10
+ | 'moonshot'
11
+ | 'claude'
12
+ | 'ollama'
13
+ | 'custom'
14
+
15
+ /**
16
+ * 角色类型名
17
+ */
18
+ export type AiRole = 'system' | 'user' | 'assistant'
19
+
20
+ /**
21
+ * 配置项接口
22
+ */
23
+ export interface AiConfig {
24
+ key: string
25
+ url?: string
26
+ model: string
27
+ temp?: number
28
+ tokens?: number
29
+ sys?: string
30
+ }
31
+
32
+ /**
33
+ * 消息结构体
34
+ */
35
+ export interface AiMsg {
36
+ role: AiRole
37
+ text: string
38
+ think?: string
39
+ }
40
+
41
+ /**
42
+ * 选项配置项
43
+ */
44
+ export interface AiOption {
45
+ list: AiMsg[]
46
+ model?: string
47
+ temp?: number
48
+ tokens?: number
49
+ sys?: string
50
+ stream?: boolean
51
+ signal?: AbortSignal
52
+ }
53
+
54
+ /**
55
+ * 返回结果项
56
+ */
57
+ export interface AiResult {
58
+ text: string
59
+ think?: string
60
+ }
61
+
62
+ /**
63
+ * 回调处理器
64
+ */
65
+ export interface AiHandler {
66
+ onToken?: (delta: string) => void
67
+ onThink?: (delta: string) => void
68
+ onDone?: (text: string, think?: string) => void
69
+ onError?: (error: Error) => void
70
+ }
71
+
72
+ /**
73
+ * 连通测试项
74
+ */
75
+ export interface AiTest {
76
+ success: boolean
77
+ msg: string
78
+ latency: number
79
+ }
80
+
81
+ /**
82
+ * 引擎元信息
83
+ */
84
+ export interface AiInfo {
85
+ type: AiEngine
86
+ name: string
87
+ tag: string
88
+ free?: boolean
89
+ enable: boolean
90
+ models: string[]
91
+ model: string
92
+ apiUrl: string
93
+ website: string
94
+ }
package/package.json CHANGED
@@ -1,41 +1,45 @@
1
1
  {
2
2
  "name": "@hlw-zbzs/ai",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "HLW Universal Multi-Platform AI SDK & LLM Client (OpenAI, DeepSeek, Claude, Qwen, Zhipu, Moonshot, Doubao, Ollama)",
5
- "main": "index.ts",
6
- "types": "index.ts",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
7
8
  "exports": {
8
9
  ".": {
9
- "types": "./index.ts",
10
- "import": "./index.ts",
11
- "require": "./index.ts",
12
- "default": "./index.ts"
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js",
13
+ "default": "./dist/index.js"
13
14
  },
14
- "./*": {
15
- "types": "./src/*.ts",
16
- "import": "./src/*.ts",
17
- "require": "./src/*.ts",
18
- "default": "./src/*.ts"
19
- }
15
+ "./dist/ai.css": "./dist/ai.css",
16
+ "./style": "./dist/ai.css"
20
17
  },
21
18
  "files": [
22
- "index.ts",
23
- "src/"
19
+ "dist"
24
20
  ],
21
+ "scripts": {
22
+ "build": "vite build",
23
+ "prepublishOnly": "pnpm build"
24
+ },
25
25
  "dependencies": {
26
- "@hlw-zbzs/core": "^1.0.26",
27
- "@hlw-zbzs/vue": "^1.0.6",
28
- "@vicons/ionicons5": "^0.13.0",
26
+ "@hlw-zbzs/core": "workspace:*",
27
+ "@hlw-zbzs/vue": "workspace:*",
29
28
  "axios": "^1.10.0",
30
- "naive-ui": "^2.44.1",
31
29
  "openai": "^7.8.0",
32
30
  "pinia": "^3.0.3",
33
31
  "pinia-plugin-persistedstate": "^4.3.0",
32
+ "primeicons": "^7.0.0",
33
+ "primevue": "^4.5.5",
34
34
  "vue": "^3.5.13"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^22.14.1",
38
- "typescript": "^5.8.3"
38
+ "@vitejs/plugin-vue": "^5.2.3",
39
+ "sass": "^1.103.1",
40
+ "typescript": "^5.8.3",
41
+ "vite": "^6.2.6",
42
+ "vite-plugin-dts": "^5.1.0"
39
43
  },
40
44
  "publishConfig": {
41
45
  "access": "public"
package/index.ts DELETED
@@ -1,10 +0,0 @@
1
- /// <reference path="./env.d.ts" />
2
- /**
3
- * @file @hlw-zbzs/ai 统一入口 (遵循单单词极简原则)
4
- */
5
-
6
- export type * from './types'
7
- export * from './src/engines'
8
- export * from './src/store'
9
- export * from './src/core'
10
- export * from './src/components'
@@ -1,84 +0,0 @@
1
- <template>
2
- <div class="hlw-ai">
3
- <!-- 顶部状态栏 -->
4
- <ai-header />
5
-
6
- <!-- 主体:50% / 50% 左右双栏工作区 -->
7
- <div class="ai-body">
8
- <!-- 左栏:模型服务商选择 + 参数配置与测试 -->
9
- <div class="left-pane">
10
- <div class="pane-content">
11
- <!-- 服务商网格选择 -->
12
- <ai-grid @change="onGridChange" />
13
-
14
- <!-- 凭证、模型、生成参数及测试栏 -->
15
- <ai-params ref="paramsRef" />
16
- </div>
17
- </div>
18
-
19
- <!-- 右栏:对话测试演练沙箱 -->
20
- <div class="right-pane">
21
- <ai-chat />
22
- </div>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script setup lang="ts">
28
- import { ref } from 'vue'
29
- import AiHeader from './header.vue'
30
- import AiGrid from './grid.vue'
31
- import AiParams from './params.vue'
32
- import AiChat from './chat.vue'
33
-
34
- const paramsRef = ref<InstanceType<typeof AiParams> | null>(null)
35
-
36
- function onGridChange() {
37
- paramsRef.value?.clearTest?.()
38
- }
39
- </script>
40
-
41
- <style scoped lang="scss">
42
- .hlw-ai {
43
- display: flex;
44
- flex-direction: column;
45
- width: 100%;
46
- height: 100%;
47
- background-color: #ffffff;
48
- overflow: hidden;
49
- font-weight: 400;
50
- }
51
-
52
- .ai-body {
53
- flex: 1;
54
- display: flex;
55
- min-height: 0;
56
- overflow: hidden;
57
- background: #ffffff;
58
- }
59
-
60
- .left-pane {
61
- flex: 1;
62
- min-width: 0;
63
- border-right: 1px solid #e2e8f0;
64
- display: flex;
65
- flex-direction: column;
66
- background: #ffffff;
67
-
68
- .pane-content {
69
- flex: 1;
70
- overflow-y: auto;
71
- padding: 0;
72
- display: flex;
73
- flex-direction: column;
74
- }
75
- }
76
-
77
- .right-pane {
78
- flex: 1;
79
- min-width: 0;
80
- display: flex;
81
- flex-direction: column;
82
- background: #ffffff;
83
- }
84
- </style>