@weisiren000/oiiai 0.1.2 → 0.1.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/README.md +165 -201
- package/dist/index.d.mts +220 -11
- package/dist/index.d.ts +220 -11
- package/dist/index.js +874 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +866 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +57 -55
package/dist/index.d.ts
CHANGED
|
@@ -6,20 +6,56 @@ interface ChatMessage {
|
|
|
6
6
|
content: string;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
9
|
+
* 统一的思考努力程度
|
|
10
|
+
* - off: 关闭思考
|
|
11
|
+
* - low: 快速思考,适合简单问题
|
|
12
|
+
* - medium: 平衡模式(默认)
|
|
13
|
+
* - high: 深度思考,适合复杂问题
|
|
14
|
+
*/
|
|
15
|
+
type ReasoningEffort = 'off' | 'low' | 'medium' | 'high';
|
|
16
|
+
/**
|
|
17
|
+
* 统一的思考/推理配置
|
|
18
|
+
*
|
|
19
|
+
* 只需设置 effort,库会自动转换为各 Provider 需要的格式:
|
|
20
|
+
* - OpenRouter: effort 参数
|
|
21
|
+
* - Gemini: reasoning_effort 参数
|
|
22
|
+
* - Groq: reasoning_effort 参数
|
|
23
|
+
* - ModelScope: enable_thinking 参数
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // 简单用法 - 只设置 effort
|
|
28
|
+
* { effort: 'high' }
|
|
29
|
+
*
|
|
30
|
+
* // 高级用法 - 精细控制
|
|
31
|
+
* { effort: 'high', budgetTokens: 8000 }
|
|
32
|
+
* ```
|
|
12
33
|
*/
|
|
13
34
|
interface ReasoningConfig {
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
35
|
+
/**
|
|
36
|
+
* 思考努力程度(推荐使用)
|
|
37
|
+
* - 'off': 关闭思考
|
|
38
|
+
* - 'low': 快速思考
|
|
39
|
+
* - 'medium': 平衡模式
|
|
40
|
+
* - 'high': 深度思考
|
|
41
|
+
*/
|
|
42
|
+
effort?: ReasoningEffort;
|
|
43
|
+
/**
|
|
44
|
+
* 思考 token 预算(可选,精细控制)
|
|
45
|
+
* 设置后会覆盖 effort 对应的默认值
|
|
46
|
+
* 仅部分 Provider 支持(OpenRouter)
|
|
47
|
+
*/
|
|
48
|
+
budgetTokens?: number;
|
|
49
|
+
/**
|
|
50
|
+
* 是否在响应中排除思考内容
|
|
51
|
+
* 仅部分 Provider 支持(OpenRouter)
|
|
52
|
+
*/
|
|
19
53
|
exclude?: boolean;
|
|
20
|
-
/** 是否启用思考 */
|
|
21
|
-
enabled?: boolean;
|
|
22
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* effort 到 token 预算的默认映射
|
|
57
|
+
*/
|
|
58
|
+
declare const EFFORT_TOKEN_MAP: Record<ReasoningEffort, number>;
|
|
23
59
|
interface ChatOptions {
|
|
24
60
|
/** 模型 ID */
|
|
25
61
|
model: string;
|
|
@@ -130,6 +166,54 @@ declare abstract class BaseProvider implements AIProvider {
|
|
|
130
166
|
askWithSystem(model: string, systemPrompt: string, userMessage: string, options?: Omit<ChatOptions, 'model' | 'messages'>): Promise<string>;
|
|
131
167
|
}
|
|
132
168
|
|
|
169
|
+
/**
|
|
170
|
+
* 统一的 Provider 工厂
|
|
171
|
+
* 让所有 Provider 使用方式一致
|
|
172
|
+
*/
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 支持的 Provider 类型
|
|
176
|
+
*/
|
|
177
|
+
type ProviderType = 'openrouter' | 'gemini' | 'groq' | 'huggingface' | 'modelscope' | 'deepseek';
|
|
178
|
+
/**
|
|
179
|
+
* 统一的 Provider 配置
|
|
180
|
+
*/
|
|
181
|
+
interface ProviderConfig {
|
|
182
|
+
/** Provider 类型 */
|
|
183
|
+
provider: ProviderType;
|
|
184
|
+
/** API Key */
|
|
185
|
+
apiKey: string;
|
|
186
|
+
/** 自定义 API 地址(可选) */
|
|
187
|
+
baseUrl?: string;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* 创建 AI Provider 实例
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* // 所有 Provider 使用相同方式创建
|
|
195
|
+
* const openrouter = createProvider({ provider: 'openrouter', apiKey: 'xxx' });
|
|
196
|
+
* const gemini = createProvider({ provider: 'gemini', apiKey: 'xxx' });
|
|
197
|
+
* const groq = createProvider({ provider: 'groq', apiKey: 'xxx' });
|
|
198
|
+
*
|
|
199
|
+
* // 之后使用方式完全一致
|
|
200
|
+
* const answer = await openrouter.ask('gpt-4o', '你好');
|
|
201
|
+
* const answer = await gemini.ask('gemini-2.5-flash', '你好');
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
declare function createProvider(config: ProviderConfig): AIProvider;
|
|
205
|
+
/**
|
|
206
|
+
* 快捷创建函数
|
|
207
|
+
*/
|
|
208
|
+
declare const ai: {
|
|
209
|
+
openrouter: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
210
|
+
gemini: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
211
|
+
groq: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
212
|
+
huggingface: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
213
|
+
modelscope: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
214
|
+
deepseek: (apiKey: string, baseUrl?: string) => AIProvider;
|
|
215
|
+
};
|
|
216
|
+
|
|
133
217
|
/**
|
|
134
218
|
* OpenRouter Provider 实现
|
|
135
219
|
*/
|
|
@@ -172,4 +256,129 @@ declare class OpenRouterProvider extends BaseProvider {
|
|
|
172
256
|
listModels(): Promise<OpenRouterModelInfo[]>;
|
|
173
257
|
}
|
|
174
258
|
|
|
175
|
-
|
|
259
|
+
/**
|
|
260
|
+
* ModelScope Provider 实现
|
|
261
|
+
* 使用 OpenAI 兼容 API
|
|
262
|
+
*/
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* ModelScope Provider 配置
|
|
266
|
+
*/
|
|
267
|
+
interface ModelScopeConfig {
|
|
268
|
+
apiKey: string;
|
|
269
|
+
baseUrl?: string;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* ModelScope Provider
|
|
273
|
+
* 兼容 OpenAI API 格式,支持 DeepSeek 等模型
|
|
274
|
+
*/
|
|
275
|
+
declare class ModelScopeProvider extends BaseProvider {
|
|
276
|
+
readonly name = "modelscope";
|
|
277
|
+
private apiKey;
|
|
278
|
+
private baseUrl;
|
|
279
|
+
constructor(config: ModelScopeConfig | string);
|
|
280
|
+
/**
|
|
281
|
+
* 发送聊天请求(非流式)
|
|
282
|
+
*/
|
|
283
|
+
chat(options: ChatOptions): Promise<ChatResult>;
|
|
284
|
+
/**
|
|
285
|
+
* 发送流式聊天请求
|
|
286
|
+
*/
|
|
287
|
+
chatStream(options: ChatOptions): AsyncGenerator<StreamChunk, void, unknown>;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* HuggingFace Provider 实现
|
|
292
|
+
* 使用 HuggingFace Router API (OpenAI 兼容)
|
|
293
|
+
*/
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* HuggingFace Provider 配置
|
|
297
|
+
*/
|
|
298
|
+
interface HuggingFaceConfig {
|
|
299
|
+
apiKey: string;
|
|
300
|
+
baseUrl?: string;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* HuggingFace Provider
|
|
304
|
+
* 使用 HuggingFace Router,兼容 OpenAI API 格式
|
|
305
|
+
*/
|
|
306
|
+
declare class HuggingFaceProvider extends BaseProvider {
|
|
307
|
+
readonly name = "huggingface";
|
|
308
|
+
private apiKey;
|
|
309
|
+
private baseUrl;
|
|
310
|
+
constructor(config: HuggingFaceConfig | string);
|
|
311
|
+
/**
|
|
312
|
+
* 发送聊天请求(非流式)
|
|
313
|
+
*/
|
|
314
|
+
chat(options: ChatOptions): Promise<ChatResult>;
|
|
315
|
+
/**
|
|
316
|
+
* 发送流式聊天请求
|
|
317
|
+
*/
|
|
318
|
+
chatStream(options: ChatOptions): AsyncGenerator<StreamChunk, void, unknown>;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Groq Provider 实现
|
|
323
|
+
* 使用 Groq API (OpenAI 兼容)
|
|
324
|
+
*/
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Groq Provider 配置
|
|
328
|
+
*/
|
|
329
|
+
interface GroqConfig {
|
|
330
|
+
apiKey: string;
|
|
331
|
+
baseUrl?: string;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Groq Provider
|
|
335
|
+
* 兼容 OpenAI API 格式,支持 reasoning_effort 参数
|
|
336
|
+
*/
|
|
337
|
+
declare class GroqProvider extends BaseProvider {
|
|
338
|
+
readonly name = "groq";
|
|
339
|
+
private apiKey;
|
|
340
|
+
private baseUrl;
|
|
341
|
+
constructor(config: GroqConfig | string);
|
|
342
|
+
/**
|
|
343
|
+
* 发送聊天请求(非流式)
|
|
344
|
+
*/
|
|
345
|
+
chat(options: ChatOptions): Promise<ChatResult>;
|
|
346
|
+
/**
|
|
347
|
+
* 发送流式聊天请求
|
|
348
|
+
*/
|
|
349
|
+
chatStream(options: ChatOptions): AsyncGenerator<StreamChunk, void, unknown>;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Gemini Provider 实现
|
|
354
|
+
* 使用 Google Gemini API (OpenAI 兼容格式)
|
|
355
|
+
* https://ai.google.dev/gemini-api/docs/openai
|
|
356
|
+
*/
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Gemini Provider 配置
|
|
360
|
+
*/
|
|
361
|
+
interface GeminiConfig {
|
|
362
|
+
apiKey: string;
|
|
363
|
+
baseUrl?: string;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Gemini Provider
|
|
367
|
+
* 使用 Google Gemini API,兼容 OpenAI 格式
|
|
368
|
+
*/
|
|
369
|
+
declare class GeminiProvider extends BaseProvider {
|
|
370
|
+
readonly name = "gemini";
|
|
371
|
+
private apiKey;
|
|
372
|
+
private baseUrl;
|
|
373
|
+
constructor(config: GeminiConfig | string);
|
|
374
|
+
/**
|
|
375
|
+
* 发送聊天请求(非流式)
|
|
376
|
+
*/
|
|
377
|
+
chat(options: ChatOptions): Promise<ChatResult>;
|
|
378
|
+
/**
|
|
379
|
+
* 发送流式聊天请求
|
|
380
|
+
*/
|
|
381
|
+
chatStream(options: ChatOptions): AsyncGenerator<StreamChunk, void, unknown>;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export { type AIProvider, BaseProvider, type ChatMessage, type ChatOptions, type ChatResult, EFFORT_TOKEN_MAP, GeminiProvider, GroqProvider, HuggingFaceProvider, type ModelInfo, type ModelPricing, ModelScopeProvider, type OpenRouterModelInfo, OpenRouterProvider, type ProviderConfig, type ProviderType, type ReasoningConfig, type ReasoningEffort, type StreamChunk, type TokenUsage, ai, createProvider };
|