# 智能体创建

说明： 本服务只对智能体进行对话的转发，不能对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知识库

