52 lines
2.5 KiB
Markdown
52 lines
2.5 KiB
Markdown
# 智能体创建
|
||
|
||
说明: 本服务只对智能体进行对话的转发,不能对dify智能体进行修改
|
||
1. 智能体创建,用户上传tb_agent需要的字段进行智能体创建
|
||
|
||
# 智能体更新
|
||
1. 更新数据库和redis缓存
|
||
2. 注意加锁,避免并发时,其他线程用了错误数据
|
||
|
||
# 智能体删除
|
||
软删除本服务的智能体数据
|
||
|
||
# 智能体对话
|
||
1. 校验智能体是否可以用
|
||
2. 用户会先对1个智能体创建一个会话
|
||
3. 用户先发起对话预处理请求,传入会话携带的对象数据到redis中,产生一个临时的消息id
|
||
4. 真正发起对话数据请求时,会传入3个必须参数,1智能体id,2会话id,3本次消息id
|
||
5. 优先从redis缓存中获取agentid对应的agent配置,没有找数据库。这里要进行双检加锁,避免智能体修改、重复加载等问题
|
||
6. 从redis中获取消息id真正的数据,包含各种数据对象和fileid等等内容
|
||
7. 和dify构建sse流式对话,并回应前端的sse流式对话。 不要乱生成无用的data事件,直接返回dify的事件和数据
|
||
8. 前端会自动处理dify的事件
|
||
|
||
# 对话评价
|
||
1. 用户对对话进行评价,评价会存储到tb_chat_message的comment字段中
|
||
2. 调用dify代理服务,更新dify智能体本消息的评价
|
||
|
||
# 知识库创建
|
||
1. 用户上传tb_knowledge需要的字段进行知识库创建
|
||
|
||
# 知识库文件上传
|
||
1. 用户上传文件到本服务,存储到文件表和minio中,并生成version版本
|
||
2. 上传文件到dify知识库,dify返回上传成功后插入tb_knowledge_file表,并更新version版本,否则提示用户
|
||
|
||
# 知识库更新文件
|
||
1. 用户上传文件到本服务,并生成version版本,存储到文件表和minio中
|
||
2. 上传文件到dify知识库,dify返回上传成功后插入tb_knowledge_file表,并更新version版本,否则提示用户
|
||
3. 删除dify旧的version的文件document,来控制版本
|
||
4. 本服务中,旧的文件对象不会删除,本条新的file对象会有file_root_id指向原始第一个file对象的file_id,用来进行版本展示,但dify知识库实际只有1个最新的文件
|
||
|
||
# 知识库删除文件
|
||
1. 软删除本服务服务中tb_knowledge_file的该文件所有版本
|
||
2. 真删除dify本文件
|
||
|
||
|
||
# 知识库创建、更新、删除文件分段
|
||
1. 直接调用dify代理服务实现,不存储到本服务,也不生成新的version版本
|
||
|
||
# 知识库删除
|
||
1. 软删除本服务服务中tb_knowledge的该知识库
|
||
2. 真删除dify知识库
|
||
|