Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/dbagent/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
38 changes: 24 additions & 14 deletions apps/dbagent/src/lib/ai/providers/builtin.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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',
Expand All @@ -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'
}
]
};
Expand Down Expand Up @@ -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'
}
]
};
Expand All @@ -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'
}
]
};
Expand Down
1 change: 1 addition & 0 deletions apps/dbagent/src/lib/env/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down
Loading