mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 21:35:52 +08:00
fix: update token limits for Claude models
This commit is contained in:
parent
5d3b751aa0
commit
b1e0b56783
@ -2616,7 +2616,7 @@ export const THINKING_TOKEN_MAP: Record<string, { min: number; max: number }> =
|
|||||||
'qwen3-.*$': { min: 0, max: 38912 },
|
'qwen3-.*$': { min: 0, max: 38912 },
|
||||||
|
|
||||||
// Claude models
|
// Claude models
|
||||||
'claude-3[.-]7.*sonnet.*$': { min: 0, max: 64000 }
|
'claude-3[.-]7.*sonnet.*$': { min: 1024, max: 64000 }
|
||||||
}
|
}
|
||||||
|
|
||||||
export const findTokenLimit = (modelId: string): { min: number; max: number } | undefined => {
|
export const findTokenLimit = (modelId: string): { min: number; max: number } | undefined => {
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import {
|
|||||||
WebSearchToolResultError
|
WebSearchToolResultError
|
||||||
} from '@anthropic-ai/sdk/resources'
|
} from '@anthropic-ai/sdk/resources'
|
||||||
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
||||||
import { isClaudeReasoningModel, isReasoningModel, isWebSearchModel } from '@renderer/config/models'
|
import { findTokenLimit, isClaudeReasoningModel, isReasoningModel, isWebSearchModel } from '@renderer/config/models'
|
||||||
import { getStoreSetting } from '@renderer/hooks/useSettings'
|
import { getStoreSetting } from '@renderer/hooks/useSettings'
|
||||||
import i18n from '@renderer/i18n'
|
import i18n from '@renderer/i18n'
|
||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
||||||
@ -189,7 +189,16 @@ export default class AnthropicProvider extends BaseProvider {
|
|||||||
|
|
||||||
const effortRatio = EFFORT_RATIO[reasoningEffort]
|
const effortRatio = EFFORT_RATIO[reasoningEffort]
|
||||||
|
|
||||||
const budgetTokens = Math.floor((maxTokens || DEFAULT_MAX_TOKENS) * effortRatio * 0.8)
|
const budgetTokens = Math.max(
|
||||||
|
1024,
|
||||||
|
Math.floor(
|
||||||
|
Math.min(
|
||||||
|
(findTokenLimit(model.id)?.max! - findTokenLimit(model.id)?.min!) * effortRatio +
|
||||||
|
findTokenLimit(model.id)?.min!,
|
||||||
|
(maxTokens || DEFAULT_MAX_TOKENS) * effortRatio
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: 'enabled',
|
type: 'enabled',
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
||||||
import {
|
import {
|
||||||
findTokenLimit,
|
findTokenLimit,
|
||||||
getOpenAIWebSearchParams,
|
getOpenAIWebSearchParams,
|
||||||
@ -275,7 +276,10 @@ export default class OpenAIProvider extends BaseOpenAIProvider {
|
|||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
const effortRatio = EFFORT_RATIO[reasoningEffort]
|
const effortRatio = EFFORT_RATIO[reasoningEffort]
|
||||||
const budgetTokens = Math.floor((findTokenLimit(model.id)?.max || 0) * effortRatio)
|
const budgetTokens = Math.floor(
|
||||||
|
(findTokenLimit(model.id)?.max! - findTokenLimit(model.id)?.min!) * effortRatio + findTokenLimit(model.id)?.min!
|
||||||
|
)
|
||||||
|
|
||||||
// OpenRouter models
|
// OpenRouter models
|
||||||
if (model.provider === 'openrouter') {
|
if (model.provider === 'openrouter') {
|
||||||
if (isSupportedReasoningEffortModel(model)) {
|
if (isSupportedReasoningEffortModel(model)) {
|
||||||
@ -319,10 +323,11 @@ export default class OpenAIProvider extends BaseOpenAIProvider {
|
|||||||
|
|
||||||
// Claude models
|
// Claude models
|
||||||
if (isSupportedThinkingTokenClaudeModel(model)) {
|
if (isSupportedThinkingTokenClaudeModel(model)) {
|
||||||
|
const maxTokens = assistant.settings?.maxTokens
|
||||||
return {
|
return {
|
||||||
thinking: {
|
thinking: {
|
||||||
type: 'enabled',
|
type: 'enabled',
|
||||||
budget_tokens: budgetTokens
|
budget_tokens: Math.max(1024, Math.min(budgetTokens, (maxTokens || DEFAULT_MAX_TOKENS) * effortRatio))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1142,8 +1147,8 @@ export default class OpenAIProvider extends BaseOpenAIProvider {
|
|||||||
stream
|
stream
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.provider.id !== 'github') {
|
if (isSupportedThinkingTokenQwenModel(model)) {
|
||||||
body.enable_thinking = false; // qwen3
|
body.enable_thinking = false // qwen3
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user