autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
70 lines (69 loc) • 3.05 kB
TypeScript
/**
* 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;