当前位置:首页>python>6python之小程序单个问题回复及基础问询优化

6python之小程序单个问题回复及基础问询优化

  • 2026-09-10 08:14:59
6python之小程序单个问题回复及基础问询优化

写在前面的话

万事正好。昨天,抖哥去见客户,我没去泰康,之前,君哥打过几个电话,说要和我聊聊,我也正好把徐哥给我说的互联网技巧和他分享一下,于是就去了温泉那边。我们聊了大概两个多小时,期间同学说来找我谈做头条号运营的事,我一直回消息,还有就是拉新用户和别人交流,君哥听我讲的热血沸腾,说,行,我也有自己的想法,想做个网店机器人的功能,借助龙虾,前景也很广阔,你这个做的好了,我加入,做的不好,你加入我的项目吧。最后,君哥有点言犹未尽的说,看你这么忙,一直回微信,我就不打扰你了,我突然意识到,君哥有点不开心,但我试运营期间,必须这么做。还是以自己的事业为主,顾及不到的只能说抱歉了。

[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

《本文完》

最新文章

随机文章