mirror of
https://github.com/andwati/dokploy.git
synced 2026-10-25 06:22:19 +00:00
74 lines
2.1 KiB
TypeScript
74 lines
2.1 KiB
TypeScript
import { createAnthropic } from "@ai-sdk/anthropic";
|
|
import { createAzure } from "@ai-sdk/azure";
|
|
import { createCohere } from "@ai-sdk/cohere";
|
|
import { createDeepInfra } from "@ai-sdk/deepinfra";
|
|
import { createMistral } from "@ai-sdk/mistral";
|
|
import { createOpenAI } from "@ai-sdk/openai";
|
|
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
|
|
import { createOllama } from "ollama-ai-provider";
|
|
|
|
function getProviderName(apiUrl: string) {
|
|
if (apiUrl.includes("api.openai.com")) return "openai";
|
|
if (apiUrl.includes("azure.com")) return "azure";
|
|
if (apiUrl.includes("api.anthropic.com")) return "anthropic";
|
|
if (apiUrl.includes("api.cohere.ai")) return "cohere";
|
|
if (apiUrl.includes("api.perplexity.ai")) return "perplexity";
|
|
if (apiUrl.includes("api.mistral.ai")) return "mistral";
|
|
if (apiUrl.includes("localhost:11434") || apiUrl.includes("ollama"))
|
|
return "ollama";
|
|
if (apiUrl.includes("api.deepinfra.com")) return "deepinfra";
|
|
throw new Error(`Unsupported AI provider for URL: ${apiUrl}`);
|
|
}
|
|
|
|
export function selectAIProvider(config: { apiUrl: string; apiKey: string }) {
|
|
const providerName = getProviderName(config.apiUrl);
|
|
|
|
switch (providerName) {
|
|
case "openai":
|
|
return createOpenAI({
|
|
apiKey: config.apiKey,
|
|
baseURL: config.apiUrl,
|
|
});
|
|
case "azure":
|
|
return createAzure({
|
|
apiKey: config.apiKey,
|
|
baseURL: config.apiUrl,
|
|
});
|
|
case "anthropic":
|
|
return createAnthropic({
|
|
apiKey: config.apiKey,
|
|
baseURL: config.apiUrl,
|
|
});
|
|
case "cohere":
|
|
return createCohere({
|
|
baseURL: config.apiUrl,
|
|
apiKey: config.apiKey,
|
|
});
|
|
case "perplexity":
|
|
return createOpenAICompatible({
|
|
name: "perplexity",
|
|
baseURL: config.apiUrl,
|
|
headers: {
|
|
Authorization: `Bearer ${config.apiKey}`,
|
|
},
|
|
});
|
|
case "mistral":
|
|
return createMistral({
|
|
baseURL: config.apiUrl,
|
|
apiKey: config.apiKey,
|
|
});
|
|
case "ollama":
|
|
return createOllama({
|
|
// optional settings, e.g.
|
|
baseURL: config.apiUrl,
|
|
});
|
|
case "deepinfra":
|
|
return createDeepInfra({
|
|
baseURL: config.apiUrl,
|
|
apiKey: config.apiKey,
|
|
});
|
|
default:
|
|
throw new Error(`Unsupported AI provider: ${providerName}`);
|
|
}
|
|
}
|