当前位置:首页>python>5python之搜索es改造及一体机bug修复

5python之搜索es改造及一体机bug修复

  • 2026-08-28 13:55:53
5python之搜索es改造及一体机bug修复

写在前面的话

黄小龟。黄小龟,原名黄一山,曾和星爷一起合作过七部电影,比如:唐伯虎点秋香中华府的傻儿子,九品芝麻官中的皇上。黄一山自己也说,没有星爷,就不可能自己五六十岁了还能在内地接到片子拍。但他做了一件让星爷寒心的事,当年向太在香港炮轰周星驰说周忘恩负义,片场暴君,要求艺人不能和周合作。其他艺人沉默不作声,黄主动邀请媒体采访,说:周性格孤僻、片场要求苛刻、做人太过计较。这些话,印证了向太炮轰周星驰片场暴君。但周一直没回应,近些年,黄一直说周是恩师,很感谢星爷,让别人觉得很假。这次,他特意赶去见周,说:星爷,我要谢谢你。周说了一句:谢我什么。之后就快步离去,这又成为黄的资料,赶紧发视频说:和星爷见面了,星爷说谢我什么,我没机会说,现在我要具体说说。就好像去见一个大佬,人家说:滚。这也能成为谈资,真是活久见了。

[139+200]-------底部有张生活照片

关键词:python、ragflow、搜索es、一体机

一、搜索es改造(三级)

描述:现在es搜索索引名,可能来自多个索引,需要处理一下。

开工:

第一步:看下专家诊断(四级)

20250702周三时间段:15:45-17:00

先找个测试用例,如下:

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

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

    #############小租户:
    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")   

注:跑一下测试用例,看看效果,还可以。

第二步:获取知识库id(四级)

20250702周三时间段:16:45-17:00

这个想清楚了,对于小租户来说,知识库是配在助手中的,如果助手(dia)中没配置,就去租户表获取use_kb。先修改下租户表字段,如下:

ALTER TABLE `rag_flow`.`tenant` 
MODIFY COLUMN `use_kb` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '使用的知识库id(kb_id),数组形式' AFTER `dialog`;

接着,改一下数据,截图如下:

图5a-1

注:这个开始是租户id,现在换成kb_id,这样就自恰了。接着,修改下程序,如下:

    @classmethod
    @DB.connection_context()
    def get_index_tenant_ids(cls,dia):
        """
        获取索引租户id,用于生成索引名称
        """
        if dia.kb_ids:
            kb_ids = dia.kb_ids.split(",")
        else:
            kb_ids =  KnowledgebaseService.get_kb_ids(dia.tenant_id)

        kb_ids = [int(kb_id) for kb_id in kb_ids]    
        kb_tenants = KnowledgebaseService.get_tenant_ids(kb_ids)
        tenant_ids = next(
            (
                kb_tenant for kb_tenant in kb_tenants   
            )
        )
        return tenant_ids

注:这个方法是根据知识库id获取租户id的,接下来,进行测试,看看效果。

第三步:测试index_tenant_id(四级)

20250702周三时间段:17:28-19:00

测试通过,修改了一部分内部,截图如下:

图5a-2

注:接下来,就是合并分支,把这个新拉的分支(develop_tenant_conf)合并到develop上,并且把main分支修改的合并到develop上,再进行测试,测试通过的话,把develop合并到main上。

第四步:合并代码(四级)

20250702周三时间段:18:10-19:00

先合并develop_tenant_conf到develop,合并如下:

图5a-3

注:完成合并了,基本还可以,接下来,把main的更改也合进来。

第五步:合并main代码(四级)

20250702周三时间段:18:22-19:00

合并了一下main分支,还可以,截图如下:

图5a-4

注:接下来,就要进行测试了,先上测试服看看效果。

第六步:测试服上测(四级)

20250702周三时间段:18:37-19:00

运行如下:

图5a-5

注:由于前端更改了,编译需要很长时间,在此期间先跑一下测试用例(test_multi_chat_choose),运行效果如下:

图5a-6

注:测了一下还可以,接下来,在测试服上测一下有没有问题。

发现现在连不上mysql了,处理一下。

第七步:连不上mysql处理(四级)

20250702周三时间段:22:55-23:00

需要在.env中加mysql的配置的信息,修改如下:

图5a-7

注:再次运行,看看效果,效果还是不行,这个不要在初始化时查库,那时库可能还没起来。

二、一体机bug修复(四级)

描述:现在一体机有问题,需要修改一下。

开工:

第一步:本地空白组(四级)

2025070703周四时间段:10:18-12:00

经测试,发现是账号问题,对比下账号。没发现问题,跑一个测试用例,如下:

2025-07-03 11:01:46.195 | WARNING | llm_service.py:model_instance:141 - NOT FOUND model_config with tenant_id='a893285a87c311efb16f0242ac120006',mdlnm='BAAI/bge-large-en-v1.5',fid='FastEmbed'

注:没找到模型,需要处理一下。

第二步:没找到模型(四级)

2025070703周四时间段:11:02-12:00

是因为模型配错了,修改如下:

图5b-1

注:这样改了之后,就可以了,接下来,是对知识库没找到的情况,改一下提示词。

现在模型找不到,按下面的参数造一个出来,如下:

2025-07-03 11:52:17.821 | INFO | llm_service.py:get_api_key:52 - tenant_id: a893285a87c311efb16f0242ac120006
2025-07-03 11:52:17.821 | INFO | llm_service.py:get_api_key:53 - model_name: BAAI/bge-large-en-v1.5@FastEmbed
2025-07-03 11:52:17.821 | INFO | llm_service.py:get_api_key:55 - mdlnm: BAAI/bge-large-en-v1.5

注:加了之后,还要打日志看一下。

第三步:打日志看一下(四级)

2025070703周四时间段:13:00-14:00

现在出来了,就是有点慢,如下:

图5b-2

注:这个【知识库中未找到您想要的答案】不要输出,优化提示词如下:

def doctor_specialist_request_prompt_fun2(input_text):
    formatted_prompt = f"""
        你是一名芯片专家,擅长根据用户提出的描述,给出具体的方案。请依据知识库中的的内容来详细地回答用户问题。
        如果知识库找不到匹配的答案,请给出一个最接近的答案。回答需要考虑聊天历史。
        不要出现【知识库中未找到您要的答案!】等无意义的提示。

        ######################
        -Examples-
        ######################


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

三、生活照片

拍摄于‎‎2026‎年‎4‎月‎4‎日,‏‎15:23:28,带孩子去昌平玩,当时大宝八岁四个月,二宝三岁六个月。其实,黄一山这种人是墙头草,周不好的时候,他公开指责周片场严格,为人计较。周好的时候,说人家是恩师,没有周的帮助就没有我黄一山的今天。但周不是傻子,你黄一山这种小人,我不给你一般见识,没说让他滚,已经很有涵养了,还想来蹭热度,不可能。周啥话不说,心里记着,就像许君聪,人家喜欢周星弛,很纯粹,在我是演员的舞台上,他演的《西游-降魔篇》中的片断,评委李诚儒说,你不要盯着无厘头风格,这些都是墙角的东西。许君聪当众反驳,周星驰在我眼里不是墙角。这种胆量是少有的,当众顶撞前辈是大忌,很可能遭到圈内封杀,但许君聪为了偶像,认了。周对这个事当时也没回应,但心里记着,时隔五年之后,邀请许君聪来参演自己的电影《功夫女足》,我觉得许君聪值了。所以,做人做事,要始终如一,不能当墙头草,因为不但互联网有记忆,人更有记忆,谁都不是傻子。

图5c-1

《本文完》

最新文章

随机文章