633cfcf713
Implements ModelClient interface with OpenAI SDK to support GPT models as fallback when local inference is unavailable. Includes tests with mocked OpenAI API responses. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 lines
938 B
TypeScript
34 lines
938 B
TypeScript
import { describe, it, expect, vi } from 'vitest';
|
|
import { OpenAIClient } from './openai.js';
|
|
|
|
vi.mock('openai', () => ({
|
|
default: vi.fn().mockImplementation(() => ({
|
|
chat: {
|
|
completions: {
|
|
create: vi.fn().mockResolvedValue({
|
|
choices: [{ message: { content: 'Hello from GPT!' }, finish_reason: 'stop' }],
|
|
usage: { prompt_tokens: 10, completion_tokens: 5 },
|
|
}),
|
|
},
|
|
},
|
|
})),
|
|
}));
|
|
|
|
describe('OpenAIClient', () => {
|
|
it('sends messages and returns response', async () => {
|
|
const client = new OpenAIClient({
|
|
apiKey: 'test-key',
|
|
model: 'gpt-4o',
|
|
});
|
|
|
|
const response = await client.chat({
|
|
messages: [{ role: 'user', content: 'Hello' }],
|
|
});
|
|
|
|
expect(response.content).toBe('Hello from GPT!');
|
|
expect(response.stopReason).toBe('stop');
|
|
expect(response.usage.inputTokens).toBe(10);
|
|
expect(response.usage.outputTokens).toBe(5);
|
|
});
|
|
});
|