Added the OpenRouter provider and a few models from OpenRouter (easily extendable to include more!)

This commit is contained in:
Cole Medin
2024-10-14 19:40:21 -05:00
parent 90a206f2d4
commit 4f7a06f56a
7 changed files with 69 additions and 2 deletions

View File

@@ -14,6 +14,8 @@ export function getAPIKey(cloudflareEnv: Env, provider: string) {
return env.OPENAI_API_KEY || cloudflareEnv.OPENAI_API_KEY;
case 'Groq':
return env.GROQ_API_KEY || cloudflareEnv.GROQ_API_KEY;
case 'OpenRouter':
return env.OPEN_ROUTER_API_KEY || cloudflareEnv.OPEN_ROUTER_API_KEY;
default:
return "";
}

View File

@@ -4,6 +4,7 @@ import { getAPIKey } from '~/lib/.server/llm/api-key';
import { createAnthropic } from '@ai-sdk/anthropic';
import { createOpenAI } from '@ai-sdk/openai';
import { ollama } from 'ollama-ai-provider';
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
export function getAnthropicModel(apiKey: string, model: string) {
const anthropic = createAnthropic({
@@ -34,6 +35,14 @@ export function getOllamaModel(model: string) {
return ollama(model);
}
export function getOpenRouterModel(apiKey: string, model: string) {
const openRouter = createOpenRouter({
apiKey
});
return openRouter.chat(model);
}
export function getModel(provider: string, model: string, env: Env) {
const apiKey = getAPIKey(env, provider);
@@ -44,6 +53,8 @@ export function getModel(provider: string, model: string, env: Env) {
return getOpenAIModel(apiKey, model);
case 'Groq':
return getGroqModel(apiKey, model);
case 'OpenRouter':
return getOpenRouterModel(apiKey, model);
default:
return getOllamaModel(model);
}