手持电脑。昨天是假期的第四天,这几天除了偶尔写点公众号号,啥也没干。二宝三岁多,一直缠着我,陪他打蛋仔派对,打僵尸,出去玩。大宝八岁多,也是一点话不听,让陪他出去玩,去买吃的,不吃家里做的饭,陪他遛弯,打僵尸,陪他睡觉,讲故事,我但凡去阳台上抽支烟,也是三番五次的催我,很多次一支烟刚抽了两口就要扔掉,好几次想动手都放弃了,大过年的打孩子毕竟不好。不过,我发现了一个事情,就是不管多忙,每天还能刷几个或几十个视频,这个时间从哪里来的?我分析了一下,是在手机上刷的,就是说,我拿着手机的情况下,是能抽出时间搞点事情的。所以,我接下来,要放下手机,时刻手持电脑,争取插空做点事情。手机用的地方,全换成电脑,这样,我相信,时间会被充分利用一点,加油!
[316]-----底部有张生活照片和昨日花销
【关键词】聊天、python、小程序、耗费时间
描述:今天主要追踪下,一次聊天耗费时间中,哪些模块用时太多,看能不能优化一下。
开工:
20241226周四时间段:1015-1020效果如下:

图4a-1
注:这个返回用了4分钟,查下具体的时间耗费。
20241226周四时间段:1023-1040
20241226周四时间段:1040-1100
聊天用时4分钟,时间耗费如下:
chat_api.py--------- websocket_endpoint-----
注:把日志打的长的去掉。可以看出如下这段用时最长,截图如下:

图4a-2
注:这个用时一分钟多,如下:

图4a-3
注:接下来,要对这个chat函数进行追踪。
20241226周四时间段:1121-1140chat_sev中的chat方法,对应ragflow里的completion方法,如下:
url = f"{RAG.BASE_URL}/api/completion"20241226周四时间段:1124-1140
20241226周四时间段:1429-1440
修改日志输出格式,如下:
format="{time} | {level} | {file} {name} {function}:{line} - {message}"找到了消耗时间的因素,代码如下:
if len(questions) > 1 and prompt_config.get("refine_multiturn"):
questions = [full_question(dialog.tenant_id, dialog.llm_id, messages)]
else:
questions = questions[-1:]
注:这个配置prompt_config,如下:
{
"empty_response": "",
"prologue": "你好! 我是专业宠物医生,有什么可以帮到你的吗?",
"quote": true,
"tts": false,
"system": "你是一个宠物医生,请依据知识库中的的内容来详细地回答用户问题。罗列出所有可能的疾病,不要给出和症状不相关的疾病,不要仅仅考虑用户描述中猜测的疾病判断。对每种可能的疾病给出恰当的治疗方法和用药建议。用药建议要给出药物名称、用法、用量。 当所有知识库内容都与问题无关时,你的回答必须包括“我认为:”这句话。回答需要考虑聊天历史。回答内容限制在500字以内,不要截断输出。\n 以下是知识库:\n {knowledge}\n 以上是知识库。",
"refine_multiturn": true,
"parameters": [{
"key": "knowledge",
"optional": false
}]
}
注:由配置可知,refine_multiturn为true,所以会走:
questions = [full_question(dialog.tenant_id, dialog.llm_id, messages)]注:也就是说full_question()方法耗费了时间,做下进一步的确认。
20241226周四时间段:1432-1440看下full_question()方法是干什么的,并且为什么耗费了时间。先在方法里打下日志。
日志打完之后,看下效果如下:

图4a-4
注:本次聊天回复消耗2分钟10秒,看下消耗在了哪里。找到了,如下:

图4a-5
注:这里一下子用了约40秒,看看干了啥。
20241226周四时间段:1456-1500注:接下来,再进行测试。
描述:对耗时进行测试,看出现在哪些地方。
开工:
测试结果如下:

图4a-6
分析:耗时1分55秒
分布:

图4a-7
注:相关代码如下:

图4a-8

图4a-9
注:相关代码如下:

图4a-10

图4a-11
注:相关代码如下:

图4a-12
注:对上述三项进行分析。看能不能优化。
20241226周四时间段:1555-1600
20241226周四时间段:1902-1920
现在发现代码看不懂,不知道都干啥呢,需要写个测试用例,测一下。
测试用例书写如下,先暂停吧,上传代码到线上看看效果。
20241227周五时间段:0004-0020代码完成,服务器上拉下代码,看怎么样。还可以,没遇到卡点,截图如下:

图4a-13
注:接下来,搞下ragflow代码。
20241227周五时间段:0016-0020
20241227周五时间段:0020-0040
20241227周五时间段:0910-1000
代码上传完成,接下来,拉下代码,重启下服务。拉代码完成,截图如下:

图4a-14
注:接下来,重启下服务,命令如下:
bash build_pub.sh注:接下来,改下本地请求,等待服务器重启完成,修改本地请求如下:
// WebSocket URL (请根据实际情况修改)
//const wsUrl = 'ws://127.0.0.1:6789/ws'; // 假设你的 WebSocket 服务器运行在本地端口 8080
const wsUrl = 'ws://39.101.69.172:6789/ws'; // 假设你的 WebSocket 服务器运行在本地端口 8080
注:运行发现,报错,截图如下:

图4a-15
注:这说明chat_sev没有启动成功,搞一下。测试结果并不理想,服务器用了3分钟35秒。
截图如下:

图4a-16
注:看下是耗费时间点在哪里。没找到日志,先这样,后面再说,今天主要任务是研究代码,看一些操作是干什么的,还是要本地来搞这个事。
描述:要把python菜鸟教程过一遍,或者说过几遍,以打牢基础。
开工:
20241226周四时间段:1130-1140给出一个字符串,如下:
my_str = 'abcde'注:这个字符串要输出ace该怎么做。
做法为:
my_str = 'abcde'
print(my_str[0::2]) ###输出ace
注:最后一个2是步长。
20241227周五时间段:0051-0100Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加,True==1、False==0会返回True*,但可以通过* is来判断类型。
>>> issubclass(bool, int)
True
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
False
>>> 0 is False
False
拍摄于2024年3月17日,16:26:03,带二宝在地下广场玩,当时二宝一岁五个月。弱者抱怨环境,说自己不成功,这个影响了,那个影响了。强者适应环境,并做出改变,最后做出成绩。我虽说不是强者,但偶尔学一招,也许能产生不错的效果,加油!

图4c-1
《本文完》