From 7fbd8e2196024d1546b80b7897534d244b0dd540 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Wed, 16 Apr 2025 14:09:13 -0400 Subject: [PATCH] Add support for different reasoning effort --- src/api/providers/openai-native.ts | 17 ++++++++++++++--- src/shared/api.ts | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/api/providers/openai-native.ts b/src/api/providers/openai-native.ts index 91e52a2f29..37eb924d13 100644 --- a/src/api/providers/openai-native.ts +++ b/src/api/providers/openai-native.ts @@ -41,7 +41,17 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio } if (model.id.startsWith("o3-mini")) { - yield* this.handleO3FamilyMessage(model, systemPrompt, messages) + yield* this.handleReasonerMessage(model, "o3-mini", systemPrompt, messages) + return + } + + if (model.id.startsWith("o3")) { + yield* this.handleReasonerMessage(model, "o3", systemPrompt, messages) + return + } + + if (model.id.startsWith("o4-mini")) { + yield* this.handleReasonerMessage(model, "o4-mini", systemPrompt, messages) return } @@ -72,13 +82,14 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio yield* this.handleStreamResponse(response, model) } - private async *handleO3FamilyMessage( + private async *handleReasonerMessage( model: OpenAiNativeModel, + family: "o3-mini" | "o3" | "o4-mini", systemPrompt: string, messages: Anthropic.Messages.MessageParam[], ): ApiStream { const stream = await this.client.chat.completions.create({ - model: "o3-mini", + model: family, messages: [ { role: "developer", diff --git a/src/shared/api.ts b/src/shared/api.ts index e9e5aef5ee..2335872bb3 100644 --- a/src/shared/api.ts +++ b/src/shared/api.ts @@ -786,6 +786,27 @@ export const openAiNativeModels = { inputPrice: 10.0, outputPrice: 40.0, cacheReadsPrice: 2.5, + reasoningEffort: "medium", + }, + "o3-high": { + maxTokens: 100_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 10.0, + outputPrice: 40.0, + cacheReadsPrice: 2.5, + reasoningEffort: "high", + }, + "o3-low": { + maxTokens: 100_000, + contextWindow: 200_000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 10.0, + outputPrice: 40.0, + cacheReadsPrice: 2.5, + reasoningEffort: "low", }, "o4-mini": { maxTokens: 100_000,