@@ -2,7 +2,7 @@ const { isJson, generateUUID } = require('../utils/tools.js');
22const { createUsageObject } = require ( '../utils/precise-tokenizer.js' ) ;
33const { sendChatRequest } = require ( '../utils/request.js' ) ;
44const accountManager = require ( '../utils/account.js' ) ;
5- const { isChatType, isThinkingEnabled, parserModel, parserMessages } = require ( '../utils/chat-helpers.js' ) ;
5+ const { isChatType, isThinkingEnabled, parserModel, parserMessages, createUpstreamDeltaNormalizer } = require ( '../utils/chat-helpers.js' ) ;
66const {
77 buildToolSystemPrompt,
88 foldToolMessages,
@@ -207,7 +207,7 @@ const buildInternalRequest = async (anthropicReq) => {
207207
208208 // 3. 走现有 parserMessages 复用图片上传与 thinking 配置
209209 const enable_thinking = ! ! ( thinking && thinking . type === 'enabled' ) ;
210- const thinkingCfg = isThinkingEnabled ( model , enable_thinking , thinking ?. budget_tokens ) ;
210+ const thinkingCfg = await isThinkingEnabled ( model , enable_thinking , thinking ?. budget_tokens ) ;
211211 const chatType = isChatType ( model ) ;
212212 const parsedMessages = await parserMessages ( flat , thinkingCfg , chatType ) ;
213213 const parsedModel = await parserModel ( model ) ;
@@ -491,6 +491,7 @@ const handleAnthropicStream = async (res, ctx, upstream) => {
491491 let completionContent = '' ;
492492 let webSearchInfo = null ;
493493 let thinkingStarted = false ;
494+ const normalizeDelta = createUpstreamDeltaNormalizer ( ) ;
494495
495496 /**
496497 * 处理一个上游 delta JSON
@@ -506,9 +507,10 @@ const handleAnthropicStream = async (res, ctx, upstream) => {
506507 if ( delta && delta . name === 'web_search' ) {
507508 webSearchInfo = delta . extra ?. web_search_info ;
508509 }
509- if ( ! delta || ! delta . content || ( delta . phase !== 'think' && delta . phase !== 'answer' ) ) return ;
510-
511- let content = delta . content ;
510+ const normalized = normalizeDelta ( delta ) ;
511+ if ( ! normalized ) return ;
512+ delta . phase = normalized . phase ;
513+ let content = normalized . content ;
512514 completionContent += content ;
513515
514516 if ( delta . phase === 'think' ) {
@@ -594,6 +596,7 @@ const handleAnthropicNonStream = async (res, ctx, upstream) => {
594596 let promptTokens = 0 ;
595597 let completionTokens = 0 ;
596598 let webSearchInfo = null ;
599+ const normalizeDelta = createUpstreamDeltaNormalizer ( ) ;
597600
598601 /**
599602 * 处理一个上游 delta JSON
@@ -609,8 +612,10 @@ const handleAnthropicNonStream = async (res, ctx, upstream) => {
609612 if ( delta && delta . name === 'web_search' ) {
610613 webSearchInfo = delta . extra ?. web_search_info ;
611614 }
612- if ( ! delta || ! delta . content || ( delta . phase !== 'think' && delta . phase !== 'answer' ) ) return ;
613- const content = delta . content ;
615+ const normalized = normalizeDelta ( delta ) ;
616+ if ( ! normalized ) return ;
617+ delta . phase = normalized . phase ;
618+ const content = normalized . content ;
614619 if ( delta . phase === 'think' ) {
615620 thinkingContent += content ;
616621 } else if ( delta . phase === 'answer' ) {
0 commit comments