Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // Copyright 2026 ForgeKit Contributors
// SPDX-License-Identifier: Apache-2.0
// https://github.com/SubhanshuMG/ForgeKit
import { AIProvider } from '../../types';
import { loadConfig } from '../config';
import { OpenAIProvider } from './openai';
import { AnthropicProvider } from './anthropic';
export function getAIProvider(): AIProvider {
const config = loadConfig();
// Check env vars first (preferred), then config
const openaiKey = process.env.OPENAI_API_KEY;
const anthropicKey = process.env.ANTHROPIC_API_KEY;
// Prefer config-specified provider if both keys exist
const preferred = config.ai?.provider;
const model = config.ai?.model;
Iif (preferred === 'anthropic' && anthropicKey) {
return new AnthropicProvider(anthropicKey, model);
}
Iif (preferred === 'openai' && openaiKey) {
return new OpenAIProvider(openaiKey, model);
}
// Auto-detect: prefer Anthropic if available
Iif (anthropicKey) {
return new AnthropicProvider(anthropicKey, model);
}
Iif (openaiKey) {
return new OpenAIProvider(openaiKey, model);
}
throw new Error(
'No AI provider configured. Set OPENAI_API_KEY or ANTHROPIC_API_KEY environment variable.\n\n' +
' export OPENAI_API_KEY=sk-...\n' +
' # or\n' +
' export ANTHROPIC_API_KEY=sk-ant-...\n'
);
}
|