Browse Source

Add support for different reasoning effort (#2692)

Matt Rubens 8 tháng trước cách đây
mục cha
commit
43668e0429
2 tập tin đã thay đổi với 35 bổ sung3 xóa
  1. 14 3
      src/api/providers/openai-native.ts
  2. 21 0
      src/shared/api.ts

+ 14 - 3
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",

+ 21 - 0
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,