agentscope icon indicating copy to clipboard operation
agentscope copied to clipboard

小发现:Deepseek的“思考部分”会导致stream_printing_messages的last结束信号提前

Open Bungo973 opened this issue 1 month ago • 1 comments

我用的deepseek api,在用stream_printing_messages时,想根据last作为信号判断输出是否结束,然后拿到ms的text_content。 但只拿到了“思考部分”,比如:“我来帮你查......”之类的就没了。 后面发现,deepseek貌似在边思考边调用工具--tool_use和tool_result是有值的,虽然last可能为True了。

Bungo973 avatar Nov 20 '25 03:11 Bungo973

@Bungo973 话说 我也用的deepseek api,没复现出来你的问题,msg里只能找到tool use和tool result,无思考部分,用的deepseek reasoner,试试拉最新的代码,或者提供下跑代码的样例(别忘了去掉apikey)

shaoeric avatar Nov 22 '25 07:11 shaoeric

我用的deepseek api,在用stream_printing_messages时,想根据last作为信号判断输出是否结束,然后拿到ms的text_content。 但只拿到了“思考部分”,比如:“我来帮你查......”之类的就没了。 后面发现,deepseek貌似在边思考边调用工具--tool_use和tool_result是有值的,虽然last可能为True了。

last为True并不是整个一次reply的结束,而是一次模型调用或者工具执行的结束,如果你在last为True的时候去return的话,就拿不到后续的内容了

qbc2016 avatar Dec 04 '25 05:12 qbc2016

@Bungo973 话说 我也用的deepseek api,没复现出来你的问题,msg里只能找到tool use和tool result,无思考部分,用的deepseek reasoner,试试拉最新的代码,或者提供下跑代码的样例(别忘了去掉apikey)

之前deepseek的reasoner模型是不支持工具调用的,如果传入工具,会降级成chat模型;现在reasoner模型支持工具调用,但是官方文档里要求把reasoning_content也传入,我们在 pr #998 里做了支持,感谢持续关注~

qbc2016 avatar Dec 04 '25 05:12 qbc2016

我是初学者,提出的问题的描述不是很准确。我确实是以last为信号去判断是否结束整个reply,我最近才了解到deepseek-v3.2(api)是一边推理一边使用工具的,所以单单以last判断是不够的。 另外我有一个新问题:我在使用qwen的思考模式然后流式输出时(stream_printing_messages)会有以下报错导致有一块内容拿不到了:| WARNING | _dashscope_formatter:_format:206 - Unsupported block type thinking in the message, skipped.

Image

Bungo973 avatar Dec 04 '25 06:12 Bungo973

这个warning只是表明在format的时候不会将thinking的内容输入到大模型,不是报错,所以不会影响thinking的内容输入,正常情况下是能拿到你上面的think_blocks的,请问能提供下更详细的信息么,或者复现的代码

qbc2016 avatar Dec 04 '25 07:12 qbc2016

这里缺失了一块 “增量”,我到现在也没找到办法解决。 每次都是在工具结果之后的第一块丢失了。 Image Image stream_output.py

Bungo973 avatar Dec 04 '25 08:12 Bungo973

建议先用这个例子测一下看看,如果一切正常,那么很有可能是你上面自己代码的bug,需要去仔细check下

qbc2016 avatar Dec 04 '25 09:12 qbc2016

我启动了这个enable_thinking=True,DashScopeChatModel试了几种模型都会有这个警告。 qwen-max 没有thinking块,qwen-plus系列和deepseek-r1都有thinking,然后都有这个警告。 Image

Image Image

Bungo973 avatar Dec 04 '25 12:12 Bungo973

我启动了这个enable_thinking=True,DashScopeChatModel试了几种模型都会有这个警告。 qwen-max 没有thinking块,qwen-plus系列和deepseek-r1都有thinking,然后都有这个警告。 Image

Image Image

这个warning不用管的,对于思考模型,有些api在调用的时候需要把reasoning的内容塞进去(比如anthropic),有些不需要(比如dashscope)。这个warning不会影响执行逻辑

qbc2016 avatar Dec 04 '25 12:12 qbc2016

哦哦哦,那流式输出之后会增加 只输出增量 的方式吗?

Bungo973 avatar Dec 04 '25 12:12 Bungo973

哦哦哦,那流式输出之后会增加 只输出增量 的方式吗?

目前只会支持累积的方式(主要是因为涉及到类似工具调用的结构化数据的流式传输,只能采用累积的方式),如果是要增量的话,需要自己做后处理(即截断),可以参考print函数里的处理

qbc2016 avatar Dec 04 '25 12:12 qbc2016