当前位置:首页>python>3python之查询数据限制字段及提示词测试

3python之查询数据限制字段及提示词测试

  • 2026-08-22 15:07:35
3python之查询数据限制字段及提示词测试

写在前面的话

二百块钱。昨天过年,堂哥表哥他们打电话过来,给老爸拜年。其中二大爷的孩子,我喊堂哥的,打来电话,给老爸拜年,堂哥孩子出镜,和堂哥长的很像,如今上大二了应该,石河子大学,211名校,很有出息。我想着堂哥这几年生意不太好,侄子给我爸拜年了,给他发200的红包吧,二大爷二大娘都不在了,小辈们走动起来才会更亲。不料,没过一分钟,堂哥发过来四百块钱, 说是给我两个孩子的,这让我很为难,本想给堂哥孩子点小惊喜,反而让人家吃亏了,我想了想,向堂哥表示感谢,还是收下了。记得之前去东北,媳妇姑姑身体不好,家庭困难,办了低保,媳妇姑父也长年生病,问岳父买点啥呢,岳父说扔五百块钱最划算,他们需要什么自己买,结果刚从姑家回来一会,人家骑车送过来300,说是给孩子的,媳妇坚持收下。

[317]-------底部有张生活照片

【关键词】python、数据限制、提示词、时间花费

一、python相关 

1.查询数据限制字段

描述:现在查询数据,有个字段message,占好几M,要把这个字段忽略掉。

开工:

第一步:修改sql

20241224周二时间段:1636-1640
20241224周二时间段:1851-1900

先在服务器上运行,看看效果。

a.线上运行
20241224周二时间段:1851-1900

运行看看效果,运行结果如下:

图3a-1

注:服务器上需要7分钟,比线下还慢,得追踪一下慢在哪里,提出优化方法。现在对于截断,点继续时,要跳过识别。

b.特殊识别
20241224周二时间段:1928-1940
20241225周三时间段:0925-0940

描述:特殊字段【继续】要跳过识别,修改程序如下:

先修改获取,如下:

    @classmethod
    @DB.connection_context()
    def get_by_id(cls, pid, fields=None):
        try:
            obj = cls.model.query(id=pid)[0]
            if fields:
                # 使用字典推导提取指定的字段
                limited_obj = {field: getattr(obj, field) for field in fields}
                return True, limited_obj
            return True, obj
        except Exception as e:
            return False, None

注:这个对输出字段做了限制。接下来,使用时,对判断进行控制,如下:

图3a-2

注:就是先对问题进行判断,有【继续】就查保存的intention,dispatch。并且,dispatch用到了专家里面,不再二次查询。截图如下:

图3a-3

注:这个截图中,应该把上面获取会话去掉,因为dispatch已获取过了。对于截断,有个新的思路,控制输出字数,比如500字,这样就会截断了。

第二步:控制字数

20241225周三时间段:0935-0940

先搞下chat方法,应该在ragflow里在最后的提示词(prompt)上加,这个要新建一个会话,但用postman新建会话,一直出错,最后用vscode的测试模块建成的。截图如下:

图3a-4

注:龙哥说这种方法比postman高效,正好postman也坏了,就用这种方法测试吧。

第三步:提示词

20241225周三时间段:0935-0940

找到提示词如下:

图3a-5

注:找一下这个提示词是怎么生成的,并且,怎么往里面加东西。这个是msg中的东西,msg生成代码如下:

   msg = [{"role": "system", "content": prompt_config["system"].format(**kwargs)}]

    log.info(f"\n\n\n\n msg: {get_caller_line_number()}  {msg}\n\n\n\n")

    msg.extend([{"role": m["role"], "content": re.sub(r"##\d+\$\$", "", m["content"])}
                for m in messages if m["role"] != "system"])
    log.info(f"\n\n\n\n msg: {get_caller_line_number()}  {msg}\n\n\n\n")
    used_token_count, msg = message_fit_in(msg, int(max_tokens * 0.97))
    assert len(msg) >= 2, f"message_fit_in has bug: {msg}"
    prompt = msg[0]["content"]

注:加了一函数的开始与结束,截图如下:

图3a-6

注:搞了半天,提示词是在数据库中定义的,截图如下:

图3a-7

注:上述的prompt_config字段修改如下:

{
"empty_response": "",
"prologue": "你好! 我是专业宠物医生,有什么可以帮到你的吗?",
"quote": true,
"tts": false,
"system": "你是一个宠物医生,请依据知识库中的的内容来详细地回答用户问题。罗列出所有可能的疾病,不要给出和症状不相关的疾病,不要仅仅考虑用户描述中猜测的疾病判断。对每种可能的疾病给出恰当的治疗方法和用药建议。用药建议要给出药物名称、用法、用量。 当所有知识库内容都与问题无关时,你的回答必须包括“我认为:”这句话。回答需要考虑聊天历史并限制在600字以内。\n        以下是知识库:\n        {knowledge}\n        以上是知识库。",
"refine_multiturn": true,
"parameters": [{
"key": "knowledge",
"optional": false
}]
}

注:接下来,再次测试。

第四步:提示词测试

20241226周四时间段:0028-0040

测试结果来看没起作用,测试结果还是被截断,截图如下:

图3a-8

注:追踪下日志看看原因。修改提示词如下:

图3a-9

注:这里修改了系统提示词,具体如下:

{
"empty_response": "",
"prologue": "你好! 我是专业宠物医生,有什么可以帮到你的吗?",
"quote": true,
"tts": false,
"system": "你是一个宠物医生,请依据知识库中的的内容来详细地回答用户问题。罗列出所有可能的疾病,不要给出和症状不相关的疾病,不要仅仅考虑用户描述中猜测的疾病判断。对每种可能的疾病给出恰当的治疗方法和用药建议。用药建议要给出药物名称、用法、用量。 当所有知识库内容都与问题无关时,你的回答必须包括“我认为:”这句话。回答需要考虑聊天历史。回答内容限制在500字以内,不要截断输出。\n        以下是知识库:\n        {knowledge}\n        以上是知识库。",
"refine_multiturn": true,
"parameters": [{
"key": "knowledge",
"optional": false
}]
}

注:还是不行,看下数据库中存的聊天记录,如果是完整的,就输出给前端。

发现不是完整的,这个测试先这样,接下来,就是时间把控上。怎么控制在30s以内。接下来,排查下时间都花在哪里了,或者说哪个模块有优化的空间。

第五步:时间花费

20241226周四时间段:0053-0100
20241226周四时间段:0922-0940

主要看下一次聊天时间都花费在哪里了,列个清单出来,先打下日志。

a.先打下chat_sev日志
20241226周四时间段:0922-0940

chat_api.py----------------pet_doctor.py-------------------rag_llm.py,打日志如下:

图3a-10

注:接下来,打ragflow日志。

b.再打下ragflow日志
20241226周四时间段:0933-0940

api_app.py-------------------dialog_service.py-----------打日志如下:

图3a-11

注:先运行看看效果。

c.测试看效果
20241226周四时间段:1015-1020

效果如下:

图3a-12

注:这个返回用了4分钟。查下时间耗费。

二、wp相关

三、生活照片

拍摄于‎2025‎年‎7‎月‎6‎日,‏‎20:14:45,带媳妇孩子出去玩,大宝当时七岁七个月。去媳妇姑家的后续是,我问媳妇,人家生活那么困难,本来给的就不多,为啥人家送回来还要收呢,能力范围之内,帮助一下不行吗。媳妇说:是,你把钱给我姑了,你的扶贫之心得到了满足,你的面子达成了,人家虽穷,但人家不要面子的吗,人家又不是乞丐。我意识到了,媳妇说的对,每个人存世,都要面子的,都不希望被别人看扁,都希望过的好,让别人看的起。所以,自己多注意,就拿这次给堂哥孩子发红包来说,明年就不发了,因为我两个孩子,人家一个孩子,我发出去200,人家还400,明知道这样做让别人吃亏,那就不要做了。

图3c-1

《本文完》

最新文章

随机文章