fix(thinking): Claude think label recognition error problem

This commit is contained in:
ousugo
2025-03-23 15:05:56 +08:00
committed by 亢奋猫
parent b21021d975
commit 5225496936
2 changed files with 12 additions and 8 deletions
+1 -1
View File
@@ -173,7 +173,7 @@ export const TEXT_TO_IMAGE_REGEX = /flux|diffusion|stabilityai|sd-|dall|cogview|
// Reasoning models
export const REASONING_REGEX =
/^(o\d+(?:-[\w-]+)?|.*\b(?:reasoner|thinking)\b.*|.*-[rR]\d+.*|.*\bqwq(?:-[\w-]+)?\b.*|.*\bhunyuan-t1(?:-[\w-]+)?\b.*)$/i
/^(o\d+(?:-[\w-]+)?|.*\b(?:reasoner|thinking)\b.*|.*-[rR]\d+.*|.*\bqwq(?:-[\w-]+)?\b.*|.*\bhunyuan-t1(?:-[\w-]+)?\b.*|.*\bglm-zero-preview\b.*)$/i
// Embedding models
export const EMBEDDING_REGEX =
+11 -7
View File
@@ -1,4 +1,5 @@
import { isReasoningModel } from '@renderer/config/models'
import { getAssistantById } from '@renderer/services/AssistantService'
import { Message } from '@renderer/types'
export function escapeDollarNumber(text: string) {
@@ -91,11 +92,8 @@ const glmZeroPreviewProcessor: ThoughtProcessor = {
canProcess: (content: string, message?: Message) => {
if (!message) return false
const model = message.model
if (!model || !isReasoningModel(model)) return false
const modelId = message.modelId || ''
const modelName = model.name || ''
const modelName = message.model?.name || ''
const isGLMZeroPreview =
modelId.toLowerCase().includes('glm-zero-preview') || modelName.toLowerCase().includes('glm-zero-preview')
@@ -117,9 +115,6 @@ const thinkTagProcessor: ThoughtProcessor = {
canProcess: (content: string, message?: Message) => {
if (!message) return false
const model = message.model
if (!model || !isReasoningModel(model)) return false
return content.startsWith('<think>') || content.includes('</think>')
},
process: (content: string) => {
@@ -162,6 +157,15 @@ export function withMessageThought(message: Message) {
return message
}
const model = message.model
if (!model || !isReasoningModel(model)) return message
const isClaude37Sonnet = model.id.includes('claude-3-7-sonnet') || model.id.includes('claude-3.7-sonnet')
if (isClaude37Sonnet) {
const assistant = getAssistantById(message.assistantId)
if (!assistant?.settings?.reasoning_effort) return message
}
const content = message.content.trim()
const processors: ThoughtProcessor[] = [glmZeroPreviewProcessor, thinkTagProcessor]