AIClient-2-API/tests/openai-converter-thinking.test.js

55 lines
1.8 KiB
JavaScript

import { OpenAIConverter } from '../src/converters/strategies/OpenAIConverter.js';
describe('OpenAIConverter thinking passthrough', () => {
let converter;
beforeEach(() => {
converter = new OpenAIConverter();
});
test('toClaudeRequest maps extra_body.anthropic.thinking enabled', () => {
const openaiRequest = {
model: 'claude-sonnet-4-5',
messages: [{ role: 'user', content: 'hi' }],
extra_body: {
anthropic: {
thinking: { type: 'enabled', budget_tokens: '10000' }
}
}
};
const claudeRequest = converter.toClaudeRequest(openaiRequest);
expect(claudeRequest.thinking).toEqual({ type: 'enabled', budget_tokens: 10000 });
});
test('toClaudeRequest maps extra_body.anthropic.thinking adaptive', () => {
const openaiRequest = {
model: 'claude-sonnet-4-5',
messages: [{ role: 'user', content: 'hi' }],
extra_body: {
anthropic: {
thinking: { type: 'adaptive', effort: 'Medium' }
}
}
};
const claudeRequest = converter.toClaudeRequest(openaiRequest);
expect(claudeRequest.thinking).toEqual({ type: 'adaptive', effort: 'medium' });
});
test('toClaudeRequest ignores invalid thinking objects', () => {
const openaiRequest = {
model: 'claude-sonnet-4-5',
messages: [{ role: 'user', content: 'hi' }],
extra_body: {
anthropic: {
thinking: 'enabled'
}
}
};
const claudeRequest = converter.toClaudeRequest(openaiRequest);
expect(claudeRequest.thinking).toBeUndefined();
});
});