当前位置:首页>python>7python之意图识别找不到处理及合并基础问诊库

7python之意图识别找不到处理及合并基础问诊库

  • 2026-09-03 11:00:48
7python之意图识别找不到处理及合并基础问诊库

写在前面的话

不均匀。今天大宝说想去水上乐园,我赶紧响应,因为大宝不爱出去玩。之前,我提议去看花之类的,他大多不去,所以,他自己提出去哪,我要顺应。出门背电脑,因为头条运营说不定谁要上号或者掉号复登。果然还没下车,一个嫂子联系要登个号,我让她等一小会,到水上乐园,来不及脱衣服,就赶紧联系嫂子,生怕上号的人跑了。刚忙完,马哥联系说后台开课开不了了,又抓紧修bug,修好热的满头大汗,换了泳衣,准备玩水,马哥说还是有问题,又一顿折腾,期间发现头条视频快用完了,紧急下载视频,直到下午要回来了,还没忙完。到家几分钟处理完,马哥那边没音了,直到晚上也没音。感觉活不均匀,我要玩的时候,活卡卡来,我闲下来,等活时,对方也没音了。但这就是常态啊,不可能啥都按我的意愿来,无论何时,积极响应就对了,指定会越来越好的,加油!

[137+200]-------->底部有张生活照片和昨日花销

【关键词】:python、ragflow、意图识别、基础问诊库

一、测试服问题处理(三级)

描述:现在测试服,找不到意图识别,需要处理一下。

开工:

第一步:意图识别找不到(四级)

20250704周五时间段:17:00-19:00

跑一下测试用例,如下:

def test_multi_chat_choose(client,login_header):
    log.info("test_multi_chat_choose-108")
    '''
    测试多轮对话-包括三轮对话场景====加入了模拟登录
    主要测新版意图识别
    '''

    #######
#调用接口
    json_data = {    
        "conversation_id": '605f2736370511f0bf8e75026f04980c',
        "question": '我有售后问题要解决,心情很烦躁',
    }

    #############小租户:===zero4
    json_data = {    
        "conversation_id": '4cbbfc624d8111f08be70ac66fac3d9b',
        "question": '我家狗拉肚子',
    }

    ###测试专家诊断中的深度思考==zero4上的会话
    # json_data = {    
    #     "conversation_id": '4cbbfc624d8111f08be70ac66fac3d9b',
    #     "question": '结束基础问询,请直接给出结果',
    #     "deep_think": False,  # 是否深度思考
    #     "enable_search": False,  # 是否启用联网搜索
    # }

    # ##zero2上的会话id
    # json_data = {    
    #     "conversation_id": '2d041238559c11f0abfb0242ac140006',
    #     "question": '我家狗拉肚子'
    # }


    ##### 调用多轮对话接口
    url = f"/v1/conversation/multi_chat_choose"
    resp = client.post(
        url,
        json=json_data,
        headers={
            **login_header    # 携带 JWT(如果有)
        }
    )
    if not 200 <= resp.status_code < 300:
        raise Exception(f"GET {url} status_code {resp.status_code}.")

    # received_data = []
    for chunk in resp.iter_encoded():
        answer = chunk.decode('utf-8').strip()
        log.info(f"\n\n answer: {answer} \n\n")   

注:打断点,跑一下,看看效果,发现意图识别出错了,意图识别提示词函数如下:

def docorate_question_prompt(role,intention_types,question):
    # 手动拼接字符串,避免 .format() 解析冲突
    formatted_prompt = f"""
    你是一名{role},擅长对用户的问题进行有效分类,分类内容必须是以下主分类或子分类的中的一种(如果返回子分类,要把父级分类也返回,并用.隔开)且不要返回多余的话(如果识别不到或识别出两种及以上,请返回None):
        以下是主分类及子分类库:
            {json.dumps(intention_types, ensure_ascii=False)}
        以上是主分类及子分类库,请根据以上内容,将用户问题分类。


    -Real Data-
    ######################
    Question:{question}
    ######################
    Output:
    """
    return formatted_prompt

注:把这个函数打下断点,看看为啥出错,发现原因为没获取到意图识别分类。

第二步:获取意图识别分类(四级)

20250704周五时间段:17:30-19:00

获取分类函数如下:

    def get_intention_types(self):
        if not self.enabled:
            return ""
        if not isinstance(self.intention_types_examples_knowledges,dict):
            return ""

        def stop_cond(v):
            if not v or not isinstance(v,dict):
                return True
            return any(
                k in {'examples','prequestion','knowledge','reply'} for k in v 
            )        
        res =  traverse_dict_tree(self.intention_types_examples_knowledges,stop_cond)
        return res

注:出错地方截图如下:

图7a-1

注:我知道了,这个知识来自己下面这个文件,如下:

tenants:
  - domain: "pet.bitzero.cn"
    tenant_name: "ragflow‘s Kingdom"
    app:
      welcome : "我是您的专业宠物医生,很高兴为您服务"
      background_image: "/static/login-background.117236ea.webp"
      logo: "/static/logos1.76a7cb8a.png"
      is_open_pet_archives: 1  ## 是否开启宠物档案
    user_intention:
      enabled: true
      llm_prompts:
        role: "宠物医生"
        force_complete_flag: "结束基础问询,请直接给出结果"
        finish_flag: "question_finished"
        wait_expert_reply: "您已完成临床问询,正在分析病情,约50秒"
      intention_file: "conf/test_pet/test_pet_intention.yaml"

注:这个文件也要合并到配置中,这个文件内容如下:

图7a-2

注:接下来,看下怎么把这个配置文件的信息,合进去。

第三步:合并基础问诊库(四级)

20250704周五时间段:17:48-19:00

通过打日志,发现这个配置文件拿出来了,截图如下:

图7a-3

注:接下来,怎么取出这个配置文件中的内容。搜索一下,看之前是怎么取出的,

找到了,如下:

    custom_tag = os.environ.get('RAG_CUSTOM')
    if custom_tag:
        dir = Path(base_dir) / custom_tag
        if not dir.exists():
            raise ValueError(f"{custom_tag=} not valid")
        settings_files += glob(f'{dir}/*.yaml')

在代码中截图如下:

图7a-4

注:接下来,在当前环境文件夹里,加个配置文件,如下:

图7a-5

注:接下来,再运行一次,看看效果,效果如下:

图7a-6

注:这个是合并过去了,但没法取,应该放到字段user_intention.intention_types_examples_knowledges下面,需要处理一下。

接下来,修改基础问诊库的层级。

第四步:修改基础问诊库层级(四级)

20250704周五时间段:20:23-21:00

修改如下:

intention_types_examples_knowledges:  
  疾病问诊:
    消化道:
      examples: []
      prequestion: |
        呕吐:
          呕吐内容物
          呕吐动作
          呕吐发生时间:
            只在吃饭后呕吐
            饭后马上发生
          呕吐次数
          持续周期
        基础情况:
          免疫驱虫:
            有无定时驱虫
            有无按时免疫:
              提醒用户用猫瘟试纸测试猫瘟
          应激因素:
            应激:
              换环境、就医、惊吓、挨打,家里来新动物等:
                如有换环境则用小空间如(猫笼铺上传单,单独隔离猫,给与安静的环
            打疫苗驱虫
            药物吃药/舔到外用药:
              可能是药物刺激:
                先观察
          精神食欲:
            如遇到明显下降,需要提醒用户目前疾病可能比较严重,正常喂药情况下,尽可能就医检查
            精神食欲好,大部分问题不大
        排便:
          内容物
          动作:
            有无费力疼痛
          发生时间:
            只在吃饭后呕吐
            饭后马上发生
          持续周期
          次数
      knowledge:
        诊断过程: |
          其他大便:。。。。。

注:加了个层级intention_types_examples_knowledges,再次运行,效果如下:

图7a-7

注:这样就可以了,接下来,把代码改一下,兼容一下,并且把各个文件夹中的配置文件都加个层级。

第五步:兼容代码及加层级(四级)

20250704周五时间段:20:57-21:00

先改配置文件,一个8个,截图如下:

图7a-8

注:这样就ok了。

二、生活照片(三级)

拍摄于‎2026‎年‎5‎月‎3‎日,‏‎9:12:06,带孩子去天津玩,当时大宝八岁五个月,二宝三岁七个月。其实,做好一件事,要下功夫。就拿二宝来说,人家都说,你家二宝白白胖胖很壮实,不怎么生病,是天生的吗?我说指定不是啊,是因为我妈细心照顾,24小时把二宝放心上,衣服脏了哪怕湿一点,赶紧换,二宝想吃什么饭,老妈立马做什么饭,二宝睡觉,老妈在旁边看着,有哭闹立马哄哄。看孩子是一整块功夫,如果老妈天天抱着手机,孩子衣服湿了不管,吃饭凑合,也不提供情绪价值,孩子不可能长这么结实。做项目也是一样,如果不用心,耍小聪明,对用户爱搭不理,不细心处理客户的问题,客户挣不到钱,情绪价值又照顾不到,人家早跑光了。所以,做事用真心就对了,不哄不骗,再勤奋点,差不到哪去。

图7b-1

《本文完》

最新文章

随机文章