前行之路。昨天,侄子给我打电话,聊了会天。侄子今年高三,我感觉他很礼貌,说话也有方式,我上高三时,根本说不出来这么有水平的话。侄子说了下规划,先把英语拿下,3月份考完,成绩满意,再把英语放下,再攻其它科,思路很清晰。我当时就是跟着老师的计划走,侄子有自己的计划,比较主动。加上侄子属于新疆内高班特招计划,有这个优势,会好很多。哥说,上个一本没问题,但985,211有点费劲,侄子去年说上985是没问题的,看来还是过于自信了。也可能是在天津读书这三年,有一段时间玩游戏,耽误了学习,但这也是没办法的事,就像我当年,明明知道考上好大学,一切光明,但上课就是胡思乱想,影响了学习。一个人在前行的路上时,总会遇到阻碍,有些阻碍,父母干着急帮不上忙,只能靠自己,祝愿侄子超常发挥,考上好大学吧。
[324]-------底部有张生活照片
关键词:python、chat_sev、同步聊天记录、分科处理
描述:现在当新的聊天进来时,要同步到chat_sev中的conversation表里,先看下代码。
开工:
20241216时间段:1532-1551现在想到一个方法,在新的生成搞完的时候,更新下消息记录。
20241216时间段:1551-1600条件更新先不做,现在做一个增加返回,截图如下:

图3a-1
注:这个改成增量返回 ,先做保存吧,如下:
def sync_memssages_rag(conversation_id:str) ->str:
"""
生成新的会话,返回会话id
"""
data = get_conversation(conversation_id)
log.info(f"data {data}")
log.info(f"data-message {data['message']}")
if data :
ConversationService.update_by_id(conversation_id, {"message":json.dumps(data['message'],ensure_ascii=False)})
return 'success'
这是后端代码,前端控制器代码如下:
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
try:
data = await websocket.receive_text()
req = json.loads(data)
response = chat(req['conversation_id'],req['question'])
res_str = ''
for msg in response:
if res_str:
res_str = res_str + msg
else:
res_str = msg
if msg.endswith(b'\n\n'):
json_str = res_str.decode('utf-8')
if 'data:{"retcode": 666' in json_str:
sync_memssages_rag(req['conversation_id'])
break
else:
await websocket.send_json(json_str)
res_str = ''
except WebSocketDisconnect:
print("Client disconnected")
注:服务端最后改成retcode:666了,测试没有问题。接下来,上线。
20241216时间段:1837-1840先上线chat_sev
上线没问题,接下来,研究下怎么分段返回。
20241216时间段:1900-1920先不做,不是这个影响的,是第一次返回速度慢。
并不是中间返回速度慢。接下来,做分科。
测试还可以
描述:要根据用户提供的病情或者让用户选择一个科室。
分析:这个龙哥写了一部分,可以参考下。
开工:
看了下,现在有个思路是:在数据库里加字段,比如是否分科,如果没分科,就分下科。先进行用户意图识别,如下:

图3a-2
注:这个可以根据用户的提问进行识别,识别不准确的话,可以问几个内制的问题。这里加个字段,是否进行了用户意图识别,及用户意图识别的结果。后期还要做一个东西,就是进行了用户意图识别后,是否需要重新识别,因为用户的意图可能发生改变。前期先做一次用户意图识别,不进行重新识别。
先加两个字段,是否进行了用户意图识别,以及意图识别别后的内容是什么。
20241217周二时间段:1124-1139加字段如下:
ALTER TABLE `rag_flow`.`api_4_conversation`
ADD COLUMN `is_intent` tinyint(1) NULL DEFAULT 0 COMMENT '是否对用户意图进行识别 0没有 1已识别' AFTER `name`,
ADD COLUMN `intention` varchar(50) NULL COMMENT '对用户进行意图识别的内容' AFTER `is_intent`
接下来,在用户问题时,对其意图进行识别。
20241217周二时间段:1139-1200看下代码,在回答用户问题之前,对用户意图进行识别。
先找到提示词,另外,模拟的前端能不能改变发送的问题,找提示词,需要打印一下日志。
现在我看龙哥已经写了一部分,如下:
def user_intension_congnition(conversation_id:str,question:str):
"""
用户意图识别
返回:以下分类的一种
疾病问诊
疫苗接种
用药咨询
在线复诊
驱虫选药
科学养宠
行为异常
检测报告
"""
question = user_intension_reconition_prompt.format(input_text=question)
return chat(conversation_id, question,stream=False)
注:这个应该返回一种,比如:【驱虫选药】,上述代码user_intension_reconition_prompt函数,表示的是对用户的问题进行加工,以便大模型知道,要返回一种,具体程序如下:
user_intension_reconition_prompt = """
你是一个宠物医生,擅长对用户的问题进行有效分类,分类内容必须是以下分类的中的一种:
疾病问诊
疫苗接种
用药咨询
在线复诊
驱虫选药
科学养宠
行为异常
检测报告
######################
-Examples-
######################
Example 1:
Question:
你好,医生。我的狗狗最近总是打喷嚏,特别是早上和晚上,偶尔还会流鼻涕。家里没有太多灰尘,也没有发现其他异常。我想知道这可能是过敏还是别的问题?我该怎么处理?
################
Output:
疾病问诊
#############################
Example 2:
你好,医生。我家的狗狗最近好像感冒了,流鼻涕、有点咳嗽,精神状态也不太好。我家里有一些人类用的感冒药,请问可以给它吃吗?如果可以,剂量怎么控制?
################
Output:
用药咨询
#############################
Example 3:
你好,医生。您帮我看下我家狗狗的血常规检测报告,是否感染流感了?
################
Output:
检测报告
#############################
Example 4:
你好,医生。我家猫咪最近总是频繁上厕所,但每次尿量都很少,有时甚至没有尿出来。我很担心,这是不是泌尿系统的问题?请问该如何治疗?
################
Output:
行为异常
#############################
-Real Data-
######################
Question:{input_text}
######################
Output:
"""
注:这个不算是函数,应该算是一种提示词的组装。接下来,进行
20241217周二时间段:1213-1220写个接口测试下,看能不能正确返回。
写接口程序如下:
先来一行,引入类库:
from service.pet_doctor import user_intension_congnition写接口如下:
#####测试意图识别
#####20241217
@router.post('/intention')
async def intention(request:Request):
req = await request.body()
req = json.loads(req.decode("utf-8"))
conversation_id = ''
if 'conversation_id' in req:
conversation_id = req['conversation_id']
if not conversation_id:
return error('1001','conversation_id-是必传参数')
question = ''
if 'question' in req:
question = req['question']
if not conversation_id:
return error('1002','question-是必传参数')
response = user_intension_congnition(conversation_id,question)
log.info(f"response{get_caller_line_number()} {response}")
res_str = ''
for msg in response:
log.info(f"msg{get_caller_line_number()} {msg}")
if res_str:
res_str = res_str + msg
else:
res_str = msg
if msg.endswith(b'\n\n'):
json_str = res_str.decode('utf-8')
log.info(f"json_str{get_caller_line_number()} {json_str}")
if 'data:{"retcode": 666' in json_str:
# sync_memssages_rag(req['conversation_id'])
break
else:
res_str = ''
return 'dddd'
注:用这个程序测试一下,测试报错,如下:

图3a-3
注:接下来,找找错误原因。
拍摄于2025年6月1日,13:15:50,带二宝在小区里玩,二宝当时两岁八个月。很多时候,自己心里很明白,有些事这样做是错的,但就是没办法。我读高三那会,明明知道自己坐教室里啥也不干都冒汗,想到父母在地里除草,给羊割草,很辛苦,自己应该好好学习,但老师讲课,我就不自觉的想父母的辛苦,自己的畜生,常进入幻境,下了课,找个没人的地方,卡卡扇自己嘴巴子,下节课还是走神。就像侄子,明明知道自己有这个内高班的优势,也知道自己无比聪明,也能理解父母的辛苦,可能游戏太有诱惑力了,实在控制不住自己,打完游戏我相信他也后悔,但自己不受控制。不过,好在侄子已经意识到自己落后了,接下来的四个多月准备拼一把,大力出奇迹,相信一定会成功的,加油!

图3b-1
昨日花销截图如下:

图3c-1
《本文完》