diff --git a/packages/types/src/providers/openai.ts b/packages/types/src/providers/openai.ts index 027ee17f1a..4b96b970b5 100644 --- a/packages/types/src/providers/openai.ts +++ b/packages/types/src/providers/openai.ts @@ -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, diff --git a/src/api/providers/openai-native.ts b/src/api/providers/openai-native.ts index 1ebef2ef46..d8e22cf81d 100644 --- a/src/api/providers/openai-native.ts +++ b/src/api/providers/openai-native.ts @@ -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)