feat: harden intelligence runtime and llm providers
This commit is contained in:
@@ -9,6 +9,7 @@ import { MiniMaxProvider } from "./minimax.mjs";
|
||||
import { MistralProvider } from "./mistral.mjs";
|
||||
import { OllamaProvider } from "./ollama.mjs";
|
||||
import { GrokProvider } from "./grok.mjs";
|
||||
import { OpenAICompatibleProvider } from "./openai-compatible.mjs";
|
||||
|
||||
export { LLMProvider } from "./provider.mjs";
|
||||
export { AnthropicProvider } from "./anthropic.mjs";
|
||||
@@ -20,6 +21,7 @@ export { MiniMaxProvider } from "./minimax.mjs";
|
||||
export { MistralProvider } from "./mistral.mjs";
|
||||
export { OllamaProvider } from "./ollama.mjs";
|
||||
export { GrokProvider } from "./grok.mjs";
|
||||
export { OpenAICompatibleProvider } from "./openai-compatible.mjs";
|
||||
|
||||
/**
|
||||
* Create an LLM provider based on config.
|
||||
@@ -30,14 +32,42 @@ export function createLLMProvider(llmConfig) {
|
||||
if (!llmConfig?.provider) return null;
|
||||
|
||||
const { provider, apiKey, model } = llmConfig;
|
||||
const common = {
|
||||
apiKey,
|
||||
model,
|
||||
baseUrl: llmConfig.baseUrl,
|
||||
temperature: llmConfig.temperature,
|
||||
maxTokens: llmConfig.maxTokens,
|
||||
timeoutMs: llmConfig.timeoutMs,
|
||||
openRouterSiteUrl: llmConfig.openRouterSiteUrl,
|
||||
openRouterAppName: llmConfig.openRouterAppName,
|
||||
};
|
||||
|
||||
switch (provider.toLowerCase()) {
|
||||
case "anthropic":
|
||||
return new AnthropicProvider({ apiKey, model });
|
||||
case "openai":
|
||||
return new OpenAIProvider({ apiKey, model });
|
||||
return new OpenAIProvider(common);
|
||||
case "openai-compatible":
|
||||
case "compatible":
|
||||
case "local-openai":
|
||||
return new OpenAICompatibleProvider({
|
||||
...common,
|
||||
name: provider.toLowerCase(),
|
||||
model: model || 'local-model',
|
||||
requiresApiKey: Boolean(apiKey),
|
||||
});
|
||||
case "lmstudio":
|
||||
case "lm-studio":
|
||||
return new OpenAICompatibleProvider({
|
||||
...common,
|
||||
name: 'lmstudio',
|
||||
baseUrl: llmConfig.baseUrl || 'http://localhost:1234/v1',
|
||||
model: model || 'local-model',
|
||||
requiresApiKey: false,
|
||||
});
|
||||
case "openrouter":
|
||||
return new OpenRouterProvider({ apiKey, model });
|
||||
return new OpenRouterProvider(common);
|
||||
case "gemini":
|
||||
return new GeminiProvider({ apiKey, model });
|
||||
case "codex":
|
||||
@@ -47,7 +77,7 @@ export function createLLMProvider(llmConfig) {
|
||||
case "mistral":
|
||||
return new MistralProvider({ apiKey, model });
|
||||
case "ollama":
|
||||
return new OllamaProvider({ model, baseUrl: llmConfig.baseUrl });
|
||||
return new OllamaProvider(common);
|
||||
case 'grok':
|
||||
return new GrokProvider({ apiKey, model });
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user