fix(OpenAIProvider): enhance token budget calculation in OpenRouter (#5625)

* fix(OpenAIProvider): enhance token budget calculation in OpenRouter

* fix(OpenAIProvider): update budget token calculation and adjust effort ratio for improved reasoning support
This commit is contained in:
SuYao 2025-05-04 01:04:38 +08:00 committed by GitHub
parent 62bf38b1f3
commit e43d316f10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 4 deletions

View File

@ -1,3 +1,4 @@
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
import { import {
findTokenLimit, findTokenLimit,
getOpenAIWebSearchParams, getOpenAIWebSearchParams,
@ -283,14 +284,13 @@ export default class OpenAIProvider extends BaseProvider {
const budgetTokens = Math.floor((findTokenLimit(model.id)?.max || 0) * effortRatio) const budgetTokens = Math.floor((findTokenLimit(model.id)?.max || 0) * effortRatio)
// OpenRouter models // OpenRouter models
if (model.provider === 'openrouter') { if (model.provider === 'openrouter') {
if (isSupportedReasoningEffortModel(model)) { if (isSupportedReasoningEffortModel(model) || isSupportedThinkingTokenClaudeModel(model)) {
return { return {
reasoning: { reasoning: {
effort: assistant?.settings?.reasoning_effort effort: assistant?.settings?.reasoning_effort
} }
} }
} }
if (isSupportedThinkingTokenModel(model)) { if (isSupportedThinkingTokenModel(model)) {
return { return {
reasoning: { reasoning: {
@ -323,11 +323,12 @@ export default class OpenAIProvider extends BaseProvider {
} }
// Claude models // Claude models
const { maxTokens } = getAssistantSettings(assistant)
if (isSupportedThinkingTokenClaudeModel(model)) { if (isSupportedThinkingTokenClaudeModel(model)) {
return { return {
thinking: { thinking: {
type: 'enabled', type: 'enabled',
budget_tokens: budgetTokens budget_tokens: Math.floor(Math.max(Math.min(budgetTokens, maxTokens || DEFAULT_MAX_TOKENS), 1024))
} }
} }
} }

View File

@ -42,7 +42,7 @@ export type EffortRatio = Record<ReasoningEffortOptions, number>
export const EFFORT_RATIO: EffortRatio = { export const EFFORT_RATIO: EffortRatio = {
low: 0.2, low: 0.2,
medium: 0.5, medium: 0.5,
high: 1, high: 0.8,
auto: 2 auto: 2
} }