39 lines
1023 B
TypeScript
Executable File
39 lines
1023 B
TypeScript
Executable File
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"],
|
|
},
|
|
];
|
|
}
|