feat: support OpenAI compatible llm

This commit is contained in:
ylxmf
2025-11-21 16:58:42 +08:00
parent 5964deeff7
commit d2dd501f3f
3 changed files with 13 additions and 3 deletions

View File

@@ -68,7 +68,7 @@ Diagrams are represented as XML that can be rendered in draw.io. The AI processe
## Multi-Provider Support ## Multi-Provider Support
- AWS Bedrock (default) - AWS Bedrock (default)
- OpenAI - OpenAI / OpenAI-compatible APIs (via `OPENAI_BASE_URL`)
- Anthropic - Anthropic
- Google AI - Google AI
- Azure OpenAI - Azure OpenAI

View File

@@ -14,6 +14,7 @@ AI_MODEL=global.anthropic.claude-sonnet-4-5-20250929-v1:0
# OpenAI Configuration # OpenAI Configuration
# OPENAI_API_KEY=sk-... # OPENAI_API_KEY=sk-...
# OPENAI_BASE_URL=https://api.openai.com/v1 # Optional: Custom OpenAI-compatible endpoint
# OPENAI_ORGANIZATION=org-... # Optional # OPENAI_ORGANIZATION=org-... # Optional
# OPENAI_PROJECT=proj_... # Optional # OPENAI_PROJECT=proj_... # Optional

View File

@@ -1,5 +1,5 @@
import { bedrock } from '@ai-sdk/amazon-bedrock'; import { bedrock } from '@ai-sdk/amazon-bedrock';
import { openai } from '@ai-sdk/openai'; import { openai, createOpenAI } from '@ai-sdk/openai';
import { anthropic } from '@ai-sdk/anthropic'; import { anthropic } from '@ai-sdk/anthropic';
import { google } from '@ai-sdk/google'; import { google } from '@ai-sdk/google';
import { azure } from '@ai-sdk/azure'; import { azure } from '@ai-sdk/azure';
@@ -61,6 +61,7 @@ function validateProviderCredentials(provider: ProviderName): void {
* *
* Provider-specific env vars: * Provider-specific env vars:
* - OPENAI_API_KEY: OpenAI API key * - OPENAI_API_KEY: OpenAI API key
* - OPENAI_BASE_URL: Custom OpenAI-compatible endpoint (optional)
* - ANTHROPIC_API_KEY: Anthropic API key * - ANTHROPIC_API_KEY: Anthropic API key
* - GOOGLE_GENERATIVE_AI_API_KEY: Google API key * - GOOGLE_GENERATIVE_AI_API_KEY: Google API key
* - AZURE_RESOURCE_NAME, AZURE_API_KEY: Azure OpenAI credentials * - AZURE_RESOURCE_NAME, AZURE_API_KEY: Azure OpenAI credentials
@@ -97,7 +98,15 @@ export function getAIModel(): ModelConfig {
break; break;
case 'openai': case 'openai':
model = openai(modelId); if (process.env.OPENAI_BASE_URL) {
const customOpenAI = createOpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL,
});
model = customOpenAI.chat(modelId);
} else {
model = openai(modelId);
}
break; break;
case 'anthropic': case 'anthropic':