feat: add reasoning effort support for all OpenAI models

This commit is contained in:
Roo Code 2025-08-07 17:34:55 +00:00
parent b99eb415ff
commit 57eccb5a5a
2 changed files with 22 additions and 0 deletions

View file

@ -11,6 +11,7 @@ export const openAiNativeModels = {
contextWindow: 256000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 1.25,
outputPrice: 10.0,
cacheReadsPrice: 0.125,
@ -20,6 +21,7 @@ export const openAiNativeModels = {
contextWindow: 256000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0.25,
outputPrice: 2.0,
cacheReadsPrice: 0.025,
@ -29,6 +31,7 @@ export const openAiNativeModels = {
contextWindow: 256000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0.05,
outputPrice: 0.4,
cacheReadsPrice: 0.005,
@ -38,6 +41,7 @@ export const openAiNativeModels = {
contextWindow: 256000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0,
outputPrice: 0,
cacheReadsPrice: 0,
@ -47,6 +51,7 @@ export const openAiNativeModels = {
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 2,
outputPrice: 8,
cacheReadsPrice: 0.5,
@ -56,6 +61,7 @@ export const openAiNativeModels = {
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0.4,
outputPrice: 1.6,
cacheReadsPrice: 0.1,
@ -65,6 +71,7 @@ export const openAiNativeModels = {
contextWindow: 1_047_576,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0.1,
outputPrice: 0.4,
cacheReadsPrice: 0.025,
@ -167,6 +174,7 @@ export const openAiNativeModels = {
contextWindow: 200_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 15,
outputPrice: 60,
cacheReadsPrice: 7.5,
@ -176,6 +184,7 @@ export const openAiNativeModels = {
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 15,
outputPrice: 60,
cacheReadsPrice: 7.5,
@ -185,6 +194,7 @@ export const openAiNativeModels = {
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 1.1,
outputPrice: 4.4,
cacheReadsPrice: 0.55,
@ -194,6 +204,7 @@ export const openAiNativeModels = {
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 75,
outputPrice: 150,
cacheReadsPrice: 37.5,
@ -203,6 +214,7 @@ export const openAiNativeModels = {
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 2.5,
outputPrice: 10,
cacheReadsPrice: 1.25,
@ -212,6 +224,7 @@ export const openAiNativeModels = {
contextWindow: 128_000,
supportsImages: true,
supportsPromptCache: true,
supportsReasoningEffort: true,
inputPrice: 0.15,
outputPrice: 0.6,
cacheReadsPrice: 0.075,

View file

@ -68,6 +68,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
// o1 supports developer prompt with formatting
// o1-preview and o1-mini only support user messages
const isOriginalO1 = model.id === "o1"
const { reasoning } = this.getModel()
const response = await this.client.chat.completions.create({
model: model.id,
messages: [
@ -79,6 +81,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
],
stream: true,
stream_options: { include_usage: true },
...(reasoning && reasoning),
})
yield* this.handleStreamResponse(response, model)
@ -114,12 +117,15 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
systemPrompt: string,
messages: Anthropic.Messages.MessageParam[],
): ApiStream {
const { reasoning } = this.getModel()
const stream = await this.client.chat.completions.create({
model: model.id,
temperature: this.options.modelTemperature ?? OPENAI_NATIVE_DEFAULT_TEMPERATURE,
messages: [{ role: "system", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
stream: true,
stream_options: { include_usage: true },
...(reasoning && reasoning),
})
yield* this.handleStreamResponse(stream, model)
@ -130,12 +136,15 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
systemPrompt: string,
messages: Anthropic.Messages.MessageParam[],
): ApiStream {
const { reasoning } = this.getModel()
const stream = await this.client.chat.completions.create({
model: model.id,
temperature: this.options.modelTemperature ?? OPENAI_NATIVE_DEFAULT_TEMPERATURE,
messages: [{ role: "developer", content: systemPrompt }, ...convertToOpenAiMessages(messages)],
stream: true,
stream_options: { include_usage: true },
...(reasoning && reasoning),
})
yield* this.handleStreamResponse(stream, model)