最近在做一个多步骤工具调用的Agent,后端接的是DeepSeek-R1(v3那个蒸馏版)。我发现它的CoT输出特别长,经常在思考阶段就被LangChain的max_tokens截断了,导致后续的<tool_call>标签根本没生成出来。我已经把max_tokens调到了4096,但感觉还是不够用,而且截断后整个对话历史都乱了,还得自己拼JSON恢复状态。想问问大家,你们在做这种长推理模型接入框架时,是直接改底层解析逻辑,还是干脆不走LangChain的AgentExecutor,自己写个状态机?或者有什么办法能提前检测到R1的思考结束标记,然后动态调整token预算?
楼主
16天前
搞了半年Agent,发现DeepSeek-R1的推理格式在LangChain里总被截断?
请 登录 后发表回复
全部回复
共 41 条
2楼
13小时前
我之前也被这个坑过,R1的CoT动不动就上千token,4096真不够塞牙缝的。后来我干脆没走AgentExecutor,自己写了循环调工具,解析<tool_call>标签反而更可控。不过动态调token预算这个思路挺有意思,要是能检测到<tool_end>或者<final_answer>这种结束标记再截断,感觉能省不少浪费。