AI调用流式输出应该如何输出reasoning_content ?

使用问题 · 3399 次浏览
dalou 创建于 7天7小时前

AI调用模块流式输出无法输出deepseek思考过程,是否有办法像HTTP请求模块一样使用子程序处理?

 

         


回复内容
CL 6天13小时前
#1

暂时还没时间研究,再过几天看看

dalou 回复 CL 5天7小时前 :

好的,流式输出内容格式是否也能改变呢

dalou 5天7小时前
#2

在HTTP请求中,流式输出内容的思考部分与正文部分的格式无法做出差异性(例如每行用 “>” 开头做出高亮标识),而且输出内容需分两个追加内容步骤,否则会出现思考内容与正文字符混乱的情况。

因为流式输出会多次调用SSE子程序,所以无法在返回内容中插入任何字符。




高亮处理

  


dalou 最后更新于 5天7小时前
dalou 回复 dalou 5天7小时前 :

 流式输出多次调用子程序,每次返回几个字符,字符的处理也是多次调用,无法实现预期效果



CL 回复 dalou 5天2小时前 :

文本窗口似乎不是很适合这个场景,还是web技术更合适一些。
不过很多>这个情况可以尝试判断一下前一个文字是不是换行,如果不是换行,就不再加>符号。

dalou 回复 CL 5天0小时前 :

变量{reasoning_content} 一次获取2~4个字符,输出后重新获取内容,无法判断前面的字符,虽然可以每次都将 “\n” (不是"\r\n") 正则替换为"\n>",但是无法判断最开始的字符在哪,也就无法在第一行前面加上">"符号,只能在调用子程序前先行输入一个">",如果调用的模型不是深度思考类型,这个符号又会变多余。

dalou 最后更新于 5天0小时前
CL 回复 dalou 4天13小时前 :

从上面的截图看,每个换行前面都是有>的,说明在上一个消息的结尾肯定是换行结束。

主程序里弄一个变量,子程序在收到内容后,判断是否为换行结尾,如果是的话,设置变量值为true,否则设置为false。

然后在下次收到消息的时候,如果前面那个不是true,就不添加>符号。

dalou 回复 CL 3天23小时前 :

可行,加了一个状态用于判断开头与结尾,已能够正确高亮深度思考内容:R1请求 - by dalou - 动作信息 - Quicker

在此基础上,HTTP请求应该如何保持历史对话消息?每次对话后都用状态记录吗?

dalou 最后更新于 3天23小时前
『扪』 3天21小时前
#3

可参考以下动作,基本能实现你的全部需求🌟

ChatAI

『扪』 最后更新于 3天21小时前
dalou 回复 『扪』 2天23小时前 :

很棒的动作,值得学习👍,希望作者有空闲可以优化MD窗口实时显示文本窗口的文字变化,体验更佳。

dalou 最后更新于 2天23小时前
dalou 回复 dalou 2天23小时前 :

文本追问希望能够调整为:文本追问|call:l$n$sp$ChatAI?提问方式=文本  

用光标所在行或已选则的文本作为追问内容,在无需选择文字的情况下能够更加便捷的提问。

『扪』 回复 dalou 2天22小时前 :

1. MD窗口实时渲染输入文本,估计是办不到了,想象不出实现途径,能力有限😂
2. "用光标所在行或已选则的文本作为追问内容",这个下一版本可以改

dalou 回复 『扪』 2天11小时前 :

实时刷新其实不复杂的,大概思路是:文本窗口内容可自动保存到状态, 在md预览的子程序中用循环判断文本内容是否变化,然后用WebView2的发送消息功能可实现实时刷新内容。

CL 1天23小时前
#4

1.43.60 增加了输出,试下看看。


dalou 回复 CL 1天13小时前 :

可以了,谢谢老大!


回复主贴