diff --git a/apps/dbagent/.env.example b/apps/dbagent/.env.example index 350540e0..ba6bf159 100644 --- a/apps/dbagent/.env.example +++ b/apps/dbagent/.env.example @@ -12,6 +12,7 @@ AUTH_OPENID_ISSUER= # LLM API credentials OPENAI_API_KEY= +OPENAI_BASE_URL= # Optional: Custom OpenAI base URL (for OpenAI-compatible endpoints) DEEPSEEK_API_KEY= ANTHROPIC_API_KEY= GOOGLE_GENERATIVE_AI_API_KEY= diff --git a/apps/dbagent/src/lib/ai/providers/builtin.ts b/apps/dbagent/src/lib/ai/providers/builtin.ts index e0b8d2ca..b499d1dc 100644 --- a/apps/dbagent/src/lib/ai/providers/builtin.ts +++ b/apps/dbagent/src/lib/ai/providers/builtin.ts @@ -1,7 +1,7 @@ import { anthropic } from '@ai-sdk/anthropic'; import { deepseek } from '@ai-sdk/deepseek'; import { google } from '@ai-sdk/google'; -import { openai } from '@ai-sdk/openai'; +import { createOpenAI } from '@ai-sdk/openai'; import { env } from '~/lib/env/server'; import { Model, Provider, ProviderModel, ProviderRegistry } from './types'; @@ -15,6 +15,11 @@ type BuiltinProviderModel = ProviderModel & { providerId: string; }; +const openai = createOpenAI({ + baseURL: env.OPENAI_BASE_URL, + apiKey: env.OPENAI_API_KEY +}); + const builtinOpenAIModels: BuiltinProvider = { info: { name: 'OpenAI', @@ -37,6 +42,11 @@ const builtinOpenAIModels: BuiltinProvider = { id: 'openai:gpt-5-mini', providerId: 'gpt-5-mini', name: 'GPT-5 Mini' + }, + { + id: 'openai:gpt-4o', + providerId: 'gpt-4o', + name: 'GPT-4o' } ] }; @@ -64,14 +74,14 @@ const builtinAnthropicModels: BuiltinProvider = { }, models: [ { - id: 'anthropic:claude-3-7-sonnet', - providerId: 'claude-3-7-sonnet-20250219', - name: 'Claude 3.7 Sonnet' + id: 'anthropic:claude-sonnet-4-5', + providerId: 'claude-sonnet-4-5', + name: 'Claude Sonnet 4.5' }, { - id: 'anthropic:claude-3-5-haiku', - providerId: 'claude-3-5-haiku-20241022', - name: 'Claude 3.5 Haiku' + id: 'anthropic:claude-opus-4-1', + providerId: 'claude-opus-4-1', + name: 'Claude Opus 4.1' } ] }; @@ -85,18 +95,18 @@ const builtinGoogleModels: BuiltinProvider = { models: [ { id: 'google:gemini-2.5-pro', - providerId: 'gemini-2.5-pro-preview-03-25', + providerId: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro' }, { - id: 'google:gemini-2.0-flash', - providerId: 'gemini-2.0-flash', - name: 'Gemini 2.0 Flash' + id: 'google:gemini-2.5-flash', + providerId: 'gemini-2.5-flash', + name: 'Gemini 2.5 Flash' }, { - id: 'google:gemini-2.0-flash-lite', - providerId: 'gemini-2.0-flash-lite', - name: 'Gemini 2.0 Flash Lite' + id: 'google:gemini-2.5-flash-lite', + providerId: 'gemini-2.5-flash-lite', + name: 'Gemini 2.5 Flash Lite' } ] }; diff --git a/apps/dbagent/src/lib/env/server.ts b/apps/dbagent/src/lib/env/server.ts index 42831f42..a16b68f8 100644 --- a/apps/dbagent/src/lib/env/server.ts +++ b/apps/dbagent/src/lib/env/server.ts @@ -17,6 +17,7 @@ const schema = z.object({ // LLM API credentials OPENAI_API_KEY: z.string().optional(), + OPENAI_BASE_URL: z.string().optional(), DEEPSEEK_API_KEY: z.string().optional(), ANTHROPIC_API_KEY: z.string().optional(), GOOGLE_GENERATIVE_AI_API_KEY: z.string().optional(),