2025-11-14 09:13:28 +05:30
|
|
|
import { createOpenAI, OpenAIProvider } from "@ai-sdk/openai";
|
|
|
|
|
import { createGoogleGenerativeAI, GoogleGenerativeAIProvider } from "@ai-sdk/google";
|
|
|
|
|
import { AnthropicProvider, createAnthropic } from "@ai-sdk/anthropic";
|
2025-11-14 09:23:37 +05:30
|
|
|
import { ModelConfig } from "../config/config.js";
|
2025-11-14 09:13:28 +05:30
|
|
|
|
|
|
|
|
const providerMap: Record<string, OpenAIProvider | GoogleGenerativeAIProvider | AnthropicProvider> = {};
|
|
|
|
|
|
|
|
|
|
export function getProvider(name: string = "") {
|
|
|
|
|
if (!name) {
|
2025-11-14 09:23:37 +05:30
|
|
|
name = ModelConfig.defaults.provider;
|
2025-11-14 09:13:28 +05:30
|
|
|
}
|
|
|
|
|
if (providerMap[name]) {
|
|
|
|
|
return providerMap[name];
|
|
|
|
|
}
|
2025-11-14 09:23:37 +05:30
|
|
|
const providerConfig = ModelConfig.providers[name];
|
2025-11-14 09:13:28 +05:30
|
|
|
if (!providerConfig) {
|
|
|
|
|
throw new Error(`Provider ${name} not found`);
|
|
|
|
|
}
|
|
|
|
|
switch (providerConfig.flavor) {
|
|
|
|
|
case "openai":
|
|
|
|
|
providerMap[name] = createOpenAI({
|
|
|
|
|
apiKey: providerConfig.apiKey,
|
|
|
|
|
baseURL: providerConfig.baseURL,
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
case "anthropic":
|
|
|
|
|
providerMap[name] = createAnthropic({
|
|
|
|
|
apiKey: providerConfig.apiKey,
|
|
|
|
|
baseURL: providerConfig.baseURL,
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
case "google":
|
|
|
|
|
providerMap[name] = createGoogleGenerativeAI({
|
|
|
|
|
apiKey: providerConfig.apiKey,
|
|
|
|
|
baseURL: providerConfig.baseURL,
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return providerMap[name];
|
|
|
|
|
}
|