UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

70 lines (69 loc) 3.05 kB
/** * AiFactory - AI 提供商工厂 * * 根据配置/环境变量创建对应的 AI Provider 实例 * 支持: google-gemini, openai, deepseek, claude, ollama, mock */ import { ClaudeProvider } from './providers/ClaudeProvider.js'; import { GoogleGeminiProvider } from './providers/GoogleGeminiProvider.js'; import { MockProvider } from './providers/MockProvider.js'; import { OpenAiProvider } from './providers/OpenAiProvider.js'; /** * 创建 AI Provider 实例 * @param options {provider, model, apiKey, baseUrl} */ export declare function createProvider(options?: Record<string, unknown>): ClaudeProvider | GoogleGeminiProvider | MockProvider | OpenAiProvider; /** * 从环境变量自动探测并创建 Provider * 优先级: ASD_AI_PROVIDER 指定 > 有 key 的第一个 */ export declare function autoDetectProvider(): ClaudeProvider | GoogleGeminiProvider | MockProvider | OpenAiProvider; /** 获取可用的 fallback provider 列表(排除当前 provider) */ export declare function getAvailableFallbacks(currentProvider: string): string[]; /** 判断是否为地理限制 / 不可恢复的 provider 级错误(应触发 fallback) */ export declare function isGeoOrProviderError(err: unknown): boolean; /** * 获取 AI Provider,带自动 fallback: * 当主 provider 调用失败(地理限制等)时自动切换到备选 provider */ export declare function getProviderWithFallback(): Promise<ClaudeProvider | GoogleGeminiProvider | MockProvider | OpenAiProvider | null>; /** * 创建独立的 Embedding Provider * * 当 ASD_EMBED_PROVIDER 被设置时,创建一个专用于 embedding 的 provider 实例, * 使 embedding 和 LLM 生成可以使用不同的提供商/模型。 * * 典型场景:LLM 用 Google Gemini,Embedding 用本地 Ollama + qwen3-embedding * * @returns 独立的 embed provider,或 null(未配置时) */ export declare function createEmbedProvider(): ReturnType<typeof createProvider> | null; /** 获取当前 AI 配置信息(同步,用于 UI 展示) */ export declare function getAiConfigInfo(): { provider: string; model: string; embedProvider: string; embedModel: string; hasKey: boolean; keys: { google: boolean; openai: boolean; claude: boolean; deepseek: boolean; }; }; export { AiProvider } from './AiProvider.js'; export { ClaudeProvider } from './providers/ClaudeProvider.js'; export { GoogleGeminiProvider } from './providers/GoogleGeminiProvider.js'; export { MockProvider } from './providers/MockProvider.js'; export { OpenAiProvider } from './providers/OpenAiProvider.js'; declare const _default: { createProvider: typeof createProvider; createEmbedProvider: typeof createEmbedProvider; autoDetectProvider: typeof autoDetectProvider; getAiConfigInfo: typeof getAiConfigInfo; getProviderWithFallback: typeof getProviderWithFallback; getAvailableFallbacks: typeof getAvailableFallbacks; isGeoOrProviderError: typeof isGeoOrProviderError; }; export default _default;