一周总结
python语法
字符串
- 分割:传入分隔字符,返回分割后的字符串列表。分隔符不能是空字符串(
'')
str='str_1_2_name'str_list=str.split('_')# str_list:['str','1','2','name']- 拼接:用拼接字符调用,传入字符串或字符串列表,返回拼接好的字符串
str_list=['str','1','2','name']str_join='|'.join(str_list)# str_join:'str|1|1|name'字典
obj = dict(),创建一个空字典obj.get(key),通过key获取对应的value,没有则返回Noneobj[key],访问key对应的value,没有时报错。obj.update(dict),把字典dict的键值对加入到obj中,重复的key会覆盖valueobj[key] = new_value,直接修改key对应的value,key没有对应的value会报错del obj[key],快捷删除键值对json_str = json.dumps(obj),把字典序列化为json文本json.loads(json_str),反序列化
同步CURD
动态查询
- 构建条件列表,初始值赋
True(可以不赋),在查询时用*解包
condition=[True]if[条件表达式]:condition.append([where子句])###query=db.query([表]).\filter(*confition).all()修改
- 通过查询结果直接改值
query=db.query([表]).filter().first()query.[字段]=[值]异步CURD
动态修改
- 构建修改列表,无初始值,查询时直接传入
condition={}if[条件表达式]:condition[key]=value###awaitdb.execute(update([表]).\ where(···).\ values(condition))RAG系统
多轮对话
RAG系统的核心是根据用户提问检索向量库,用相似度最高的几个文档切片做成提示模板喂给LLM模型,即把用户的提问优化后再交给LLM。
- RAG无法实现分角色(
system,user,assistant)的对话历史功能。设置了system后会导致LLM每次都按照固定的设定回答,相当于顶替了RAG喂给LLM的提示模板 - 通过在提示模板中添加对话历史,执行单轮对话方法,可以实现伪多轮对话。对应的,在检索向量库时需要使用携带对话历史的检索词。
- 对话历史的存储简单的实现可以直接用RAG实例的成员属性来缓存,每个RAG实例的对话历史都是新的。
- 对话历史的进一步存储可存储在Redis中,用户登录时RAG取出用户对应的对话历史。
- 持久化需要把对话历史存储在本地或云端。
业务需求实现
本周任务已全部完成
支付宝接口
完成了通用辅助接口的测试,对业务需求的两个接口还在看文档,之后总结在一起