perf: think tag parse (#4102)

This commit is contained in:
Archer 2025-03-11 16:33:08 +08:00 committed by archer
parent 75e671bb43
commit 4655c2754e
No known key found for this signature in database
GPG Key ID: 4446499B846D4A9E
3 changed files with 8 additions and 4 deletions

View File

@ -17,6 +17,7 @@ weight: 799
2. 应用拉取绑定知识库数据交由后端处理。
3. 增加依赖包安全版本检测,并升级部分依赖包。
4. 模型测试代码。
5. 优化思考过程解析逻辑:只要配置了模型支持思考,均会解析 <think> 标签,不会因为对话时,关闭思考而不解析。
## 🐛 修复

View File

@ -132,7 +132,7 @@ export const parseReasoningStreamContent = () => {
let endTagBuffer = '';
/*
parseReasoning - <think></think> think
parseThinkTag - <think></think>
*/
const parsePart = (
part: {
@ -143,13 +143,13 @@ export const parseReasoningStreamContent = () => {
};
}[];
},
parseReasoning = false
parseThinkTag = false
): [string, string] => {
const content = part.choices?.[0]?.delta?.content || '';
// @ts-ignore
const reasoningContent = part.choices?.[0]?.delta?.reasoning_content || '';
if (reasoningContent || !parseReasoning) {
if (reasoningContent || !parseThinkTag) {
isInThinkTag = false;
return [reasoningContent, content];
}

View File

@ -208,6 +208,7 @@ export const dispatchChatCompletion = async (props: ChatProps): Promise<ChatResp
res,
stream: response,
aiChatReasoning,
parseThinkTag: modelConstantsData.reasoning,
isResponseAnswerText,
workflowStreamResponse
});
@ -513,12 +514,14 @@ async function streamResponse({
stream,
workflowStreamResponse,
aiChatReasoning,
parseThinkTag,
isResponseAnswerText
}: {
res: NextApiResponse;
stream: StreamChatType;
workflowStreamResponse?: WorkflowResponseType;
aiChatReasoning?: boolean;
parseThinkTag?: boolean;
isResponseAnswerText?: boolean;
}) {
const write = responseWriteController({
@ -535,7 +538,7 @@ async function streamResponse({
break;
}
const [reasoningContent, content] = parsePart(part, aiChatReasoning);
const [reasoningContent, content] = parsePart(part, parseThinkTag);
answer += content;
reasoning += reasoningContent;