Let's reason together (#1597)

* let's reason together

* typo

* changeset

* Fix type error

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
This commit is contained in:
Evan 2025-02-08 06:32:14 +08:00 committed by GitHub
parent 84f017c98e
commit 4449b51e2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 31 additions and 7 deletions

View file

@ -0,0 +1,5 @@
---
"claude-dev": minor
---
Adding reasoning_effort support for openrouter and openai-native

12
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "claude-dev",
"version": "3.2.12",
"version": "3.2.13",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "claude-dev",
"version": "3.2.12",
"version": "3.2.13",
"license": "Apache-2.0",
"dependencies": {
"@anthropic-ai/bedrock-sdk": "^0.10.2",
@ -36,7 +36,7 @@
"isbinaryfile": "^5.0.2",
"mammoth": "^1.8.0",
"monaco-vscode-textmate-theme-converter": "^0.1.7",
"openai": "^4.82.0",
"openai": "^4.83.0",
"os-name": "^6.0.0",
"p-wait-for": "^5.0.2",
"pdf-parse": "^1.1.1",
@ -10617,9 +10617,9 @@
}
},
"node_modules/openai": {
"version": "4.82.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-4.82.0.tgz",
"integrity": "sha512-1bTxOVGZuVGsKKUWbh3BEwX1QxIXUftJv+9COhhGGVDTFwiaOd4gWsMynF2ewj1mg6by3/O+U8+EEHpWRdPaJg==",
"version": "4.83.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-4.83.0.tgz",
"integrity": "sha512-fmTsqud0uTtRKsPC7L8Lu55dkaTwYucqncDHzVvO64DKOpNTuiYwjbR/nVgpapXuYy8xSnhQQPUm+3jQaxICgw==",
"license": "Apache-2.0",
"dependencies": {
"@types/node": "^18.11.18",

View file

@ -161,6 +161,16 @@
"type": "boolean",
"default": true,
"description": "Enables extension to save checkpoints of workspace throughout the task."
},
"cline.modelSettings.o3Mini.reasoningEffort": {
"type": "string",
"enum": [
"low",
"medium",
"high"
],
"default": "medium",
"description": "Controls the reasoning effort when using the o3-mini model. Higher values may result in more thorough but slower responses."
}
}
}
@ -239,7 +249,7 @@
"isbinaryfile": "^5.0.2",
"mammoth": "^1.8.0",
"monaco-vscode-textmate-theme-converter": "^0.1.7",
"openai": "^4.82.0",
"openai": "^4.83.0",
"os-name": "^6.0.0",
"p-wait-for": "^5.0.2",
"pdf-parse": "^1.1.1",

View file

@ -11,6 +11,7 @@ import {
} from "../../shared/api"
import { convertToOpenAiMessages } from "../transform/openai-format"
import { ApiStream } from "../transform/stream"
import { ChatCompletionReasoningEffort } from "openai/resources/chat/completions.mjs"
export class OpenAiNativeHandler implements ApiHandler {
private options: ApiHandlerOptions
@ -51,6 +52,7 @@ export class OpenAiNativeHandler implements ApiHandler {
messages: [{ role: "developer", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
stream: true,
stream_options: { include_usage: true },
reasoning_effort: (this.options.o3MiniReasoningEffort as ChatCompletionReasoningEffort) || "medium",
})
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta

View file

@ -130,6 +130,7 @@ export class OpenRouterHandler implements ApiHandler {
stream: true,
transforms: shouldApplyMiddleOutTransform ? ["middle-out"] : undefined,
include_reasoning: true,
...(model.id === "openai/o3-mini" ? { reasoning_effort: this.options.o3MiniReasoningEffort || "medium" } : {}),
})
let genId: string | undefined

View file

@ -1480,6 +1480,10 @@ export class ClineProvider implements vscode.WebviewViewProvider {
}
}
const o3MiniReasoningEffort = vscode.workspace
.getConfiguration("cline.modelSettings.o3Mini")
.get("reasoningEffort", "medium")
return {
apiConfiguration: {
apiProvider,
@ -1517,6 +1521,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
openRouterModelId,
openRouterModelInfo,
vsCodeLmModelSelector,
o3MiniReasoningEffort,
liteLlmBaseUrl,
liteLlmModelId,
},

View file

@ -52,6 +52,7 @@ export interface ApiHandlerOptions {
mistralApiKey?: string
azureApiVersion?: string
vsCodeLmModelSelector?: any
o3MiniReasoningEffort?: string
qwenApiLine?: string
}