feat: add LLM config module for OpenRouter API settings
Reads API key and model from environment variables. LLM is disabled by default and auto-enables when OPENROUTER_API_KEY is set. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
||||
import { getLlmConfig } from '../llmConfig.js';
|
||||
|
||||
describe('llmConfig', () => {
|
||||
const originalEnv = process.env;
|
||||
|
||||
beforeEach(() => {
|
||||
process.env = { ...originalEnv };
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
process.env = originalEnv;
|
||||
});
|
||||
|
||||
it('returns default config values', () => {
|
||||
const config = getLlmConfig();
|
||||
expect(config.model).toBe('arcee-ai/trinity-large-preview:free');
|
||||
expect(config.maxTokens).toBe(200);
|
||||
expect(config.temperature).toBe(0.8);
|
||||
expect(config.requestsPerMinute).toBe(10);
|
||||
expect(config.timeoutMs).toBe(15000);
|
||||
expect(config.enabled).toBe(false);
|
||||
});
|
||||
|
||||
it('reads API key from environment', () => {
|
||||
process.env.OPENROUTER_API_KEY = 'test-key-123';
|
||||
const config = getLlmConfig();
|
||||
expect(config.apiKey).toBe('test-key-123');
|
||||
expect(config.enabled).toBe(true);
|
||||
});
|
||||
|
||||
it('is disabled when no API key is set', () => {
|
||||
delete process.env.OPENROUTER_API_KEY;
|
||||
const config = getLlmConfig();
|
||||
expect(config.apiKey).toBe('');
|
||||
expect(config.enabled).toBe(false);
|
||||
});
|
||||
|
||||
it('allows model override via environment', () => {
|
||||
process.env.OPENROUTER_API_KEY = 'key';
|
||||
process.env.LLM_MODEL = 'custom/model:free';
|
||||
const config = getLlmConfig();
|
||||
expect(config.model).toBe('custom/model:free');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
export interface LlmConfig {
|
||||
apiKey: string;
|
||||
model: string;
|
||||
maxTokens: number;
|
||||
temperature: number;
|
||||
requestsPerMinute: number;
|
||||
timeoutMs: number;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export function getLlmConfig(): LlmConfig {
|
||||
const apiKey = process.env.OPENROUTER_API_KEY ?? '';
|
||||
return {
|
||||
apiKey,
|
||||
model: process.env.LLM_MODEL ?? 'arcee-ai/trinity-large-preview:free',
|
||||
maxTokens: 200,
|
||||
temperature: 0.8,
|
||||
requestsPerMinute: 10,
|
||||
timeoutMs: 15000,
|
||||
enabled: apiKey.length > 0,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user