写在前面的话
万事正好。昨天,抖哥去见客户,我没去泰康,之前,君哥打过几个电话,说要和我聊聊,我也正好把徐哥给我说的互联网技巧和他分享一下,于是就去了温泉那边。我们聊了大概两个多小时,期间同学说来找我谈做头条号运营的事,我一直回消息,还有就是拉新用户和别人交流,君哥听我讲的热血沸腾,说,行,我也有自己的想法,想做个网店机器人的功能,借助龙虾,前景也很广阔,你这个做的好了,我加入,做的不好,你加入我的项目吧。最后,君哥有点言犹未尽的说,看你这么忙,一直回微信,我就不打扰你了,我突然意识到,君哥有点不开心,但我试运营期间,必须这么做。还是以自己的事业为主,顾及不到的只能说抱歉了。
[279]-------->底部有张生活照片和昨日花销
【关键词】python、单个问题、基础问询、优化
一、ragflow小程序相关(一级)
1.单个问题回复(二级)
描述:单个问题回复已做完,需要测试一下。
开工:
第一步:测试单个问题回复(三级)
20250211周二时间段:11:14-11:30
测试效果如下:
图6a-1
注:这个有个问题是【只需要给出问题和选项】不要给出多余的话,从截图可知,给了【请根据观察选择。。。】
接下来,修改下提示词。
a.修改提示词(四级)
20250211周二时间段:11:26-11:30
修改提示词,去掉多余的话,修改如下:
图6a-2
注:再次运行看看效果。效果如下:
图6a-3
注:这存在一个问题,就是回复A/B/C,好像识别不到,那就把ABC去掉。修改提示词如下:
图6a-4
第二步:测试(三级)
测试还可以
2.基础问询直接问通义(二级)
描述:小程序基础问询也要像web端一样,直接问通义。
开工:
第一步:修改问询函数(三级)
20250211周二时间段:17:58-18:00
20250212周三时间段:00:18-00:30
修改截图如下:
图6a-5
注:运行下看看效果,效果如下:
图6a-6
注:报错文字版如下:
ans: b'data:{"retcode": 500, "retmsg": "\'reference\'", "data": {"answer": "**ERROR**: \'reference\'", "reference": []}}\n\ndata:{"retcode": '注:接下来处理报错。
第二步:处理报错(三级)
20250212周三时间段:00:27-00:30
a.ragflow error处理(四级)
20250212周三时间段:00:29-00:30
20250212周三时间段:00:30-01:00
修改下接口名,可能是接口名相同导致冲突,修改如下:
图6a-7
注:接下来,重新运行下,看看效果,找到原因了,reference报错了,把refenrence注释掉,修改代码如下:
图6a-8
注:重新运行下代码,看看效果。
b.重新运行(四级)
20250212周三时间段:00:46-01:00
重新运行,结果如下:
图6a-9
注:这样看来,是ragflow没有增量输出,修改一下,修改程序如下:
图6a-10
注:接下来,运行看看效果,效果如下:
图6a-11
注:还是有问题,问题在于接收数据时,没有仔细的分好,分数据出错,看看啥原因。
c.分开接收数据(四级)
20250212周三时间段:09:42-10:00
为了分开接收程序,修改代码如下:
图6a-12
注:这个接收主要优化了在一个send_str中有多个\n\n的情况,这样一来,send_str_list就超过2,要发送的数据就不止一个,这样就要引入for循环才可以。最后,可能还剩一个没发,单独处理发一下。接下来,需要处理数据保存的问题。
二、ragflow之web端(一级)
1.基础问题不要经过知识库(二级)
描述:基础问题直接问通义千问,不要经过知识库搜索。 这样会快一些。
开工:
第一步:修改程序(三级)
20250211周二时间段:16:10-16:30
修改下基础问询的程序,新写一个如下:
def chat_direct_base_question(dialog, question_prompt,messages,is_stream=True):
'''
获取基础问题,返回给用户,不调知识库
'''
assert messages[-1]["role"] == "user", "The last content of this conversation is not from user."
if llm_id2llm_type(dialog.llm_id) == "image2text":
chat_mdl = LLMBundle(dialog.tenant_id, LLMType.IMAGE2TEXT, dialog.llm_id)
else:
chat_mdl = LLMBundle(dialog.tenant_id, LLMType.CHAT, dialog.llm_id)
gen_conf = dialog.llm_setting
gen_conf = {
"temperature": 0.3,
"max_tokens": 4096
}
if is_stream:
log.info('is_stream')
answer = ""
for ans in chat_mdl.chat_streamly(question_prompt, messages[1:], gen_conf):
yield {"answer": ans}
else:
answer = chat_mdl.chat(question_prompt, messages[1:], gen_conf)
res = {"answer":answer}
yield res
注:这个测了下还可以,提高了速度,接下来,就是小程序端也要这样搞一下,基础问询不再请求知识库,直接用通义千问。
第二步:web端线上测试(三级)
20250211周二时间段:16:30-17:00
20250211周二时间段:17:40-18:00
线上测试发现个小问题,就是总共10个问题,回复了七个,他会给出剩下的3个,并把【基础问询已完成】给出,此时是不需要给出的。应该是这三个问题回复了之后,在后台给出,直接走专家诊断。
修改代码,需要要修改提示词:
修改前:
你是一个宠物{disease_type}科医生,擅长根据用户提出的症状描述和基础问诊库,归纳出进一步向用户提问的问题,并根据历史记录,过滤掉用户已回答的问题,如果全部问题都能根据历史记录过滤掉,请给出【基础问题已问完】标识,否则,请继续问下去。请不要出现【基础问题未问完】等无意义的提示。修改后如下:
你是一个宠物{disease_type}科医生,擅长根据用户提出的症状描述和基础问诊库,归纳出进一步向用户提问的问题,并根据历史记录,过滤掉用户已回答的问题,如果全部问题都能根据历史记录过滤掉,请给出【基础问题已问完】标识,否则,请继续问下去。请不要出现【基础问题未问完】等无意义的提示。如果有问题需要询问用户,不要出现【基础问题已问完】提示。注:测试还可以,接下来,搞下小程序。
三、生活照片
拍摄于2026年2月1日,11:01:54,带大宝去看花,当时大宝8岁两个月。其实,昨天还发生一件事,一位年前和龙哥一起干活的军哥,知道我去温泉图书馆了,联系我说聊一聊,我说,我在楼下抽烟,你来吧。他向风一样从三楼下来,刚说两句话,一位做财务的哥们说,你是经验丰富的程序员,我有个企业微信拉财务数据的接口,返回的一直不对,直接打断了我俩的聊天,接着就开始描述接口症状,军哥看我在听财务哥们描述,直接转身走了,我给财务哥们看完接口,想着要不要给军哥解释一下,最后想想算了,财务哥们是斜插进来的,他当时也在场,我要去解释,好像我和财务哥们有预谋一样,做任何事情都不能保证所有人都满意,就比如:我副业搞今日头条运营,抖哥嘴上不说,心里指定是有看法的,但每个人有自己的想法,有自己觉得要做的事,冒犯之处,只能希望对方谅解了。
图6c-1
《本文完》