38
apps/web/src/lib/ai/provider-registry.ts
Executable file
38
apps/web/src/lib/ai/provider-registry.ts
Executable file
@@ -0,0 +1,38 @@
|
||||
import type { AIProvider, AIProviderType } from "./types";
|
||||
import { createOllamaProvider } from "./providers/ollama";
|
||||
import {
|
||||
createOpenAICompatibleProvider,
|
||||
createLlamaCppProvider,
|
||||
} from "./providers/openai-compatible";
|
||||
|
||||
const providers: Record<AIProviderType, () => AIProvider> = {
|
||||
ollama: createOllamaProvider,
|
||||
openai_compatible: () => createOpenAICompatibleProvider("openai_compatible"),
|
||||
llamacpp: createLlamaCppProvider,
|
||||
};
|
||||
|
||||
export function getProvider(type: AIProviderType): AIProvider {
|
||||
const factory = providers[type];
|
||||
if (!factory) throw new Error(`Unknown provider: ${type}`);
|
||||
return factory();
|
||||
}
|
||||
|
||||
export function listProviderTypes(): {
|
||||
type: AIProviderType;
|
||||
name: string;
|
||||
envVars: string[];
|
||||
}[] {
|
||||
return [
|
||||
{ type: "ollama", name: "Ollama", envVars: [] },
|
||||
{
|
||||
type: "openai_compatible",
|
||||
name: "OpenAI Compatible",
|
||||
envVars: ["OPENAI_API_KEY"],
|
||||
},
|
||||
{
|
||||
type: "llamacpp",
|
||||
name: "llama.cpp Server",
|
||||
envVars: ["LLAMACPP_API_KEY"],
|
||||
},
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user