42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
isLikelyOpenAIReasoningModel,
|
|
shouldUseOpenAIReasoningProviderOptions,
|
|
} from '@/lib/llm/reasoning-capability'
|
|
|
|
describe('llm/reasoning-capability', () => {
|
|
it('identifies likely OpenAI reasoning model ids', () => {
|
|
expect(isLikelyOpenAIReasoningModel('o3-mini')).toBe(true)
|
|
expect(isLikelyOpenAIReasoningModel('gpt-5.2')).toBe(true)
|
|
expect(isLikelyOpenAIReasoningModel('claude-sonnet-4-6')).toBe(false)
|
|
})
|
|
|
|
it('enables reasoning provider options for native openai provider', () => {
|
|
expect(shouldUseOpenAIReasoningProviderOptions({
|
|
providerKey: 'openai',
|
|
modelId: 'gpt-5.2',
|
|
})).toBe(true)
|
|
})
|
|
|
|
it('enables reasoning provider options for openai-compatible only when apiMode is openai-official', () => {
|
|
expect(shouldUseOpenAIReasoningProviderOptions({
|
|
providerKey: 'openai-compatible',
|
|
providerApiMode: 'openai-official',
|
|
modelId: 'gpt-5.2',
|
|
})).toBe(true)
|
|
|
|
expect(shouldUseOpenAIReasoningProviderOptions({
|
|
providerKey: 'openai-compatible',
|
|
modelId: 'gpt-5.2',
|
|
})).toBe(false)
|
|
})
|
|
|
|
it('disables reasoning provider options for non-openai models even on openai-compatible gateways', () => {
|
|
expect(shouldUseOpenAIReasoningProviderOptions({
|
|
providerKey: 'openai-compatible',
|
|
providerApiMode: 'openai-official',
|
|
modelId: 'claude-sonnet-4-6',
|
|
})).toBe(false)
|
|
})
|
|
})
|