@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/dist/index.d.ts CHANGED
@@ -6,20 +6,56 @@ interface ChatMessage {
6
6
  content: string;
7
7
  }
8
8
  /**
9
- * 思考/推理配置
10
- * - effort: OpenAI o1/o3, Grok 使用
11
- * - maxTokens: Anthropic Claude, Gemini, Qwen 使用
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
- effort?: 'high' | 'medium' | 'low';
16
- /** 思考最大 token 数 */
17
- maxTokens?: number;
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
- export { type AIProvider, BaseProvider, type ChatMessage, type ChatOptions, type ChatResult, type ModelInfo, type ModelPricing, type OpenRouterModelInfo, OpenRouterProvider, type ReasoningConfig, type StreamChunk, type TokenUsage };
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 };