@zhin.js/ai 0.0.1 → 0.0.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/lib/agent.d.ts +84 -0
  4. package/lib/agent.d.ts.map +1 -0
  5. package/lib/agent.js +384 -0
  6. package/lib/agent.js.map +1 -0
  7. package/lib/context-manager.d.ts +213 -0
  8. package/lib/context-manager.d.ts.map +1 -0
  9. package/lib/context-manager.js +306 -0
  10. package/lib/context-manager.js.map +1 -0
  11. package/lib/index.d.ts +167 -0
  12. package/lib/index.d.ts.map +1 -0
  13. package/lib/index.js +1126 -0
  14. package/lib/index.js.map +1 -0
  15. package/lib/providers/anthropic.d.ts +23 -0
  16. package/lib/providers/anthropic.d.ts.map +1 -0
  17. package/lib/providers/anthropic.js +322 -0
  18. package/lib/providers/anthropic.js.map +1 -0
  19. package/lib/providers/base.d.ts +43 -0
  20. package/lib/providers/base.d.ts.map +1 -0
  21. package/lib/providers/base.js +135 -0
  22. package/lib/providers/base.js.map +1 -0
  23. package/lib/providers/index.d.ts +12 -0
  24. package/lib/providers/index.d.ts.map +1 -0
  25. package/lib/providers/index.js +9 -0
  26. package/lib/providers/index.js.map +1 -0
  27. package/lib/providers/ollama.d.ts +25 -0
  28. package/lib/providers/ollama.d.ts.map +1 -0
  29. package/lib/providers/ollama.js +236 -0
  30. package/lib/providers/ollama.js.map +1 -0
  31. package/lib/providers/openai.d.ts +46 -0
  32. package/lib/providers/openai.d.ts.map +1 -0
  33. package/lib/providers/openai.js +132 -0
  34. package/lib/providers/openai.js.map +1 -0
  35. package/lib/session.d.ts +186 -0
  36. package/lib/session.d.ts.map +1 -0
  37. package/lib/session.js +436 -0
  38. package/lib/session.js.map +1 -0
  39. package/lib/tools.d.ts +45 -0
  40. package/lib/tools.d.ts.map +1 -0
  41. package/lib/tools.js +194 -0
  42. package/lib/tools.js.map +1 -0
  43. package/lib/types.d.ts +243 -0
  44. package/lib/types.d.ts.map +1 -0
  45. package/lib/types.js +6 -0
  46. package/lib/types.js.map +1 -0
  47. package/package.json +10 -10
package/lib/tools.js ADDED
@@ -0,0 +1,194 @@
1
+ /**
2
+ * @zhin.js/ai - Built-in Tools
3
+ * 内置工具集合 - 使用 ZhinTool 类定义
4
+ */
5
+ import { ZhinTool } from '@zhin.js/core';
6
+ /**
7
+ * 计算器工具
8
+ * 支持基本运算和数学函数
9
+ */
10
+ export const calculatorTool = new ZhinTool('calculator')
11
+ .desc('执行数学计算。支持基本运算(+、-、*、/、^)和数学函数(sin、cos、sqrt 等)')
12
+ .param('expression', { type: 'string', description: '数学表达式,例如 "2 + 3 * 4" 或 "sqrt(16)"' }, true)
13
+ .execute(async ({ expression }) => {
14
+ try {
15
+ // 安全的数学表达式求值
16
+ const sanitized = expression
17
+ .replace(/[^0-9+\-*/().^eEsincosqrtabspowlogxMathPI\s]/g, '')
18
+ .replace(/\bsqrt\b/g, 'Math.sqrt')
19
+ .replace(/\bsin\b/g, 'Math.sin')
20
+ .replace(/\bcos\b/g, 'Math.cos')
21
+ .replace(/\btan\b/g, 'Math.tan')
22
+ .replace(/\blog\b/g, 'Math.log')
23
+ .replace(/\babs\b/g, 'Math.abs')
24
+ .replace(/\bpow\b/g, 'Math.pow')
25
+ .replace(/\bPI\b/g, 'Math.PI')
26
+ .replace(/\bE\b(?![0-9])/g, 'Math.E')
27
+ .replace(/\^/g, '**');
28
+ const result = new Function(`return ${sanitized}`)();
29
+ return { result, expression };
30
+ }
31
+ catch (error) {
32
+ return { error: '无法计算表达式', expression };
33
+ }
34
+ });
35
+ /**
36
+ * 时间工具
37
+ * 获取当前时间和日期
38
+ */
39
+ export const timeTool = new ZhinTool('get_time')
40
+ .desc('获取当前时间和日期信息')
41
+ .param('timezone', { type: 'string', description: '时区,例如 "Asia/Shanghai" 或 "UTC"' })
42
+ .param('format', { type: 'string', description: '输出格式: full(完整), date(日期), time(时间), timestamp(时间戳)' })
43
+ .execute(async ({ timezone, format = 'full' }) => {
44
+ const now = new Date();
45
+ const options = {
46
+ timeZone: timezone || 'Asia/Shanghai',
47
+ };
48
+ switch (format) {
49
+ case 'date':
50
+ options.dateStyle = 'full';
51
+ break;
52
+ case 'time':
53
+ options.timeStyle = 'long';
54
+ break;
55
+ case 'timestamp':
56
+ return { timestamp: now.getTime(), iso: now.toISOString() };
57
+ default:
58
+ options.dateStyle = 'full';
59
+ options.timeStyle = 'long';
60
+ }
61
+ return {
62
+ formatted: now.toLocaleString('zh-CN', options),
63
+ timestamp: now.getTime(),
64
+ iso: now.toISOString(),
65
+ };
66
+ });
67
+ /**
68
+ * 网页搜索工具
69
+ * 需要配置搜索 API
70
+ */
71
+ export const searchTool = new ZhinTool('web_search')
72
+ .desc('在互联网上搜索信息(需要配置搜索 API)')
73
+ .param('query', { type: 'string', description: '搜索关键词' }, true)
74
+ .param('limit', { type: 'number', description: '返回结果数量(默认 5)' })
75
+ .execute(async ({ query, limit = 5 }) => {
76
+ // 默认实现提示需要配置
77
+ return {
78
+ query,
79
+ error: '搜索功能未配置,请提供搜索 API',
80
+ hint: '可以集成 SerpAPI、Bing Search API 或 Google Custom Search',
81
+ };
82
+ });
83
+ /**
84
+ * 代码执行工具
85
+ * 在安全沙箱中执行 JavaScript
86
+ */
87
+ export const codeRunnerTool = new ZhinTool('run_code')
88
+ .desc('执行 JavaScript 代码(在安全沙箱中)')
89
+ .param('code', { type: 'string', description: 'JavaScript 代码' }, true)
90
+ .execute(async ({ code }) => {
91
+ try {
92
+ // 简单的沙箱执行(生产环境应使用 vm2 或 isolated-vm)
93
+ const result = new Function(`
94
+ 'use strict';
95
+ const console = { log: (...args) => args.join(' ') };
96
+ return (function() { ${code} })();
97
+ `)();
98
+ return {
99
+ success: true,
100
+ result: result !== undefined ? String(result) : 'undefined',
101
+ };
102
+ }
103
+ catch (error) {
104
+ return {
105
+ success: false,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ };
108
+ }
109
+ });
110
+ /**
111
+ * HTTP 请求工具
112
+ * 发送 HTTP 请求获取数据
113
+ */
114
+ export const httpTool = new ZhinTool('http_request')
115
+ .desc('发送 HTTP 请求获取数据')
116
+ .param('url', { type: 'string', description: '请求 URL' }, true)
117
+ .param('method', { type: 'string', description: 'HTTP 方法: GET, POST, PUT, DELETE(默认 GET)' })
118
+ .param('headers', { type: 'object', description: '请求头(JSON 对象)' })
119
+ .param('body', { type: 'string', description: '请求体(JSON 字符串)' })
120
+ .execute(async ({ url, method = 'GET', headers = {}, body }) => {
121
+ try {
122
+ const response = await fetch(url, {
123
+ method: method,
124
+ headers: {
125
+ 'Content-Type': 'application/json',
126
+ ...headers,
127
+ },
128
+ body: body ? body : undefined,
129
+ });
130
+ const contentType = response.headers.get('content-type') || '';
131
+ let data;
132
+ if (contentType.includes('application/json')) {
133
+ data = await response.json();
134
+ }
135
+ else {
136
+ data = await response.text();
137
+ // 限制文本长度
138
+ if (data.length > 5000) {
139
+ data = data.substring(0, 5000) + '... (truncated)';
140
+ }
141
+ }
142
+ return {
143
+ status: response.status,
144
+ statusText: response.statusText,
145
+ data,
146
+ };
147
+ }
148
+ catch (error) {
149
+ return {
150
+ error: error instanceof Error ? error.message : String(error),
151
+ };
152
+ }
153
+ });
154
+ /**
155
+ * 记忆工具
156
+ * 让 AI 记住重要信息
157
+ */
158
+ export const memoryTool = new ZhinTool('remember')
159
+ .desc('记住用户告诉你的重要信息,以便后续对话中使用')
160
+ .param('key', { type: 'string', description: '记忆的标识符,如 "user_name", "preference"' }, true)
161
+ .param('value', { type: 'string', description: '要记住的内容' }, true)
162
+ .execute(async ({ key, value }, context) => {
163
+ // 这里需要与 session/context manager 集成
164
+ return {
165
+ success: true,
166
+ message: `已记住 ${key}: ${value}`,
167
+ key,
168
+ value,
169
+ };
170
+ });
171
+ /**
172
+ * 获取所有内置工具(ZhinTool 实例)
173
+ * 注意:天气工具已移除,请使用 weather-tool 插件,支持多平台配置
174
+ */
175
+ export function getBuiltinTools() {
176
+ return [
177
+ calculatorTool,
178
+ timeTool,
179
+ ];
180
+ }
181
+ /**
182
+ * 获取所有可用的内置工具(包括可选工具)
183
+ */
184
+ export function getAllBuiltinTools() {
185
+ return [
186
+ calculatorTool,
187
+ timeTool,
188
+ searchTool,
189
+ codeRunnerTool,
190
+ httpTool,
191
+ memoryTool,
192
+ ];
193
+ }
194
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,243 @@
1
+ /**
2
+ * @zhin.js/ai - AI Service Types
3
+ * 统一的 AI 服务类型定义
4
+ */
5
+ /** 消息角色 */
6
+ export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
7
+ /** 聊天消息 */
8
+ export interface ChatMessage {
9
+ role: MessageRole;
10
+ content: string | ContentPart[];
11
+ name?: string;
12
+ tool_call_id?: string;
13
+ tool_calls?: ToolCall[];
14
+ }
15
+ /** 内容部分(支持多模态) */
16
+ export type ContentPart = {
17
+ type: 'text';
18
+ text: string;
19
+ } | {
20
+ type: 'image_url';
21
+ image_url: {
22
+ url: string;
23
+ detail?: 'auto' | 'low' | 'high';
24
+ };
25
+ } | {
26
+ type: 'audio';
27
+ audio: {
28
+ data: string;
29
+ format: 'wav' | 'mp3';
30
+ };
31
+ };
32
+ /** 工具调用 */
33
+ export interface ToolCall {
34
+ id: string;
35
+ type: 'function';
36
+ function: {
37
+ name: string;
38
+ arguments: string;
39
+ };
40
+ }
41
+ /** 工具定义 */
42
+ export interface ToolDefinition {
43
+ type: 'function';
44
+ function: {
45
+ name: string;
46
+ description: string;
47
+ parameters: JsonSchema;
48
+ };
49
+ }
50
+ /** JSON Schema */
51
+ export interface JsonSchema {
52
+ type: string;
53
+ properties?: Record<string, JsonSchema>;
54
+ required?: string[];
55
+ items?: JsonSchema;
56
+ enum?: any[];
57
+ description?: string;
58
+ default?: any;
59
+ [key: string]: any;
60
+ }
61
+ /** 聊天补全请求 */
62
+ export interface ChatCompletionRequest {
63
+ model: string;
64
+ messages: ChatMessage[];
65
+ tools?: ToolDefinition[];
66
+ tool_choice?: 'auto' | 'none' | 'required' | {
67
+ type: 'function';
68
+ function: {
69
+ name: string;
70
+ };
71
+ };
72
+ temperature?: number;
73
+ top_p?: number;
74
+ max_tokens?: number;
75
+ stream?: boolean;
76
+ stop?: string | string[];
77
+ presence_penalty?: number;
78
+ frequency_penalty?: number;
79
+ user?: string;
80
+ }
81
+ /** 聊天补全响应 */
82
+ export interface ChatCompletionResponse {
83
+ id: string;
84
+ object: 'chat.completion';
85
+ created: number;
86
+ model: string;
87
+ choices: ChatCompletionChoice[];
88
+ usage?: Usage;
89
+ }
90
+ /** 选择 */
91
+ export interface ChatCompletionChoice {
92
+ index: number;
93
+ message: ChatMessage;
94
+ finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
95
+ }
96
+ /** 用量统计 */
97
+ export interface Usage {
98
+ prompt_tokens: number;
99
+ completion_tokens: number;
100
+ total_tokens: number;
101
+ }
102
+ /** 流式响应块 */
103
+ export interface ChatCompletionChunk {
104
+ id: string;
105
+ object: 'chat.completion.chunk';
106
+ created: number;
107
+ model: string;
108
+ choices: ChatCompletionChunkChoice[];
109
+ usage?: Usage;
110
+ }
111
+ /** 流式选择 */
112
+ export interface ChatCompletionChunkChoice {
113
+ index: number;
114
+ delta: Partial<ChatMessage>;
115
+ finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | null;
116
+ }
117
+ /** Provider 配置 */
118
+ export interface ProviderConfig {
119
+ apiKey?: string;
120
+ baseUrl?: string;
121
+ defaultModel?: string;
122
+ timeout?: number;
123
+ maxRetries?: number;
124
+ headers?: Record<string, string>;
125
+ }
126
+ /** Provider 接口 */
127
+ export interface AIProvider {
128
+ name: string;
129
+ models: string[];
130
+ /** 聊天补全 */
131
+ chat(request: ChatCompletionRequest): Promise<ChatCompletionResponse>;
132
+ /** 流式聊天补全 */
133
+ chatStream(request: ChatCompletionRequest): AsyncIterable<ChatCompletionChunk>;
134
+ /** 列出可用模型 */
135
+ listModels?(): Promise<string[]>;
136
+ /** 检查连接 */
137
+ healthCheck?(): Promise<boolean>;
138
+ }
139
+ /** Agent 工具 */
140
+ export interface AgentTool {
141
+ name: string;
142
+ description: string;
143
+ parameters: JsonSchema;
144
+ execute: (args: Record<string, any>) => Promise<any>;
145
+ }
146
+ /** Agent 配置 */
147
+ export interface AgentConfig {
148
+ provider: string;
149
+ model?: string;
150
+ systemPrompt?: string;
151
+ tools?: AgentTool[];
152
+ maxIterations?: number;
153
+ temperature?: number;
154
+ }
155
+ /** Agent 运行结果 */
156
+ export interface AgentResult {
157
+ content: string;
158
+ toolCalls: {
159
+ tool: string;
160
+ args: Record<string, any>;
161
+ result: any;
162
+ }[];
163
+ usage: Usage;
164
+ iterations: number;
165
+ }
166
+ /** 会话配置 */
167
+ export interface SessionConfig {
168
+ provider: string;
169
+ model?: string;
170
+ systemPrompt?: string;
171
+ maxHistory?: number;
172
+ expireMs?: number;
173
+ }
174
+ /** 会话 */
175
+ export interface Session {
176
+ id: string;
177
+ config: SessionConfig;
178
+ messages: ChatMessage[];
179
+ createdAt: number;
180
+ updatedAt: number;
181
+ metadata?: Record<string, any>;
182
+ }
183
+ /** AI 服务配置 */
184
+ export interface AIConfig {
185
+ enabled?: boolean;
186
+ defaultProvider?: string;
187
+ providers?: {
188
+ openai?: ProviderConfig;
189
+ anthropic?: ProviderConfig;
190
+ deepseek?: ProviderConfig;
191
+ moonshot?: ProviderConfig;
192
+ zhipu?: ProviderConfig;
193
+ ollama?: ProviderConfig & {
194
+ host?: string;
195
+ models?: string[];
196
+ };
197
+ custom?: ProviderConfig[];
198
+ };
199
+ sessions?: {
200
+ /** 最大历史消息数(数据库模式默认200,内存模式默认100) */
201
+ maxHistory?: number;
202
+ /** 会话过期时间(毫秒,数据库模式默认7天,内存模式默认24小时) */
203
+ expireMs?: number;
204
+ /** 是否使用数据库持久化存储(默认 true) */
205
+ useDatabase?: boolean;
206
+ };
207
+ context?: {
208
+ /** 是否启用消息记录(默认 true) */
209
+ enabled?: boolean;
210
+ /** 读取的最近消息数量(默认 100) */
211
+ maxRecentMessages?: number;
212
+ /** 触发总结的消息数量阈值(默认 50) */
213
+ summaryThreshold?: number;
214
+ /** 总结后保留的消息数量(默认 10) */
215
+ keepAfterSummary?: number;
216
+ /** 上下文最大 token 估算(默认 4000) */
217
+ maxContextTokens?: number;
218
+ /** 自定义总结提示词 */
219
+ summaryPrompt?: string;
220
+ };
221
+ /** AI 触发配置 */
222
+ trigger?: {
223
+ /** 是否启用(默认 true) */
224
+ enabled?: boolean;
225
+ /** 触发前缀列表(默认 ['#', 'AI:']) */
226
+ prefixes?: string[];
227
+ /** 是否响应 @ 机器人(默认 true) */
228
+ respondToAt?: boolean;
229
+ /** 是否响应私聊(默认 true) */
230
+ respondToPrivate?: boolean;
231
+ /** 触发关键词(可选) */
232
+ keywords?: string[];
233
+ /** 忽略的前缀(命令前缀,避免与命令冲突,默认 ['/', '!', '!']) */
234
+ ignorePrefixes?: string[];
235
+ /** 超时时间(毫秒,默认 60000) */
236
+ timeout?: number;
237
+ /** 思考中提示语(可选,设置后会在处理前发送) */
238
+ thinkingMessage?: string;
239
+ /** 错误提示模板(默认 '❌ AI 处理失败: {error}') */
240
+ errorTemplate?: string;
241
+ };
242
+ }
243
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @zhin.js/ai - AI Service Types
3
+ * 统一的 AI 服务类型定义
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/ai",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "AI Service for Zhin.js - Multi-model LLM integration with Agent capabilities",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -45,22 +45,22 @@
45
45
  "access": "public",
46
46
  "registry": "https://registry.npmjs.org"
47
47
  },
48
- "scripts": {
49
- "build": "tsc",
50
- "clean": "rm -rf lib"
51
- },
52
48
  "dependencies": {
53
49
  "eventsource-parser": "^3.0.0",
54
50
  "segment-matcher": "latest"
55
51
  },
56
52
  "peerDependencies": {
57
- "@zhin.js/core": "workspace:*",
58
- "@zhin.js/logger": "workspace:*"
53
+ "@zhin.js/core": "1.0.25",
54
+ "@zhin.js/logger": "0.1.9"
59
55
  },
60
56
  "devDependencies": {
61
57
  "@types/node": "latest",
62
58
  "typescript": "^5.3.0",
63
- "@zhin.js/core": "workspace:*",
64
- "@zhin.js/logger": "workspace:*"
59
+ "@zhin.js/core": "1.0.25",
60
+ "@zhin.js/logger": "0.1.9"
61
+ },
62
+ "scripts": {
63
+ "build": "tsc",
64
+ "clean": "rm -rf lib"
65
65
  }
66
- }
66
+ }