这是一个基于大语言模型的AI助手系统,具有记忆管理、对话能力和API调用功能。
- 智能对话:基于大语言模型的自然对话能力
- 记忆系统:分层的记忆管理,包括基础记忆、记忆快照和元快照
- 动态分类:自动对记忆进行分类和管理
- 上下文感知:根据对话上下文检索相关记忆
- API调用:支持通过对话调用外部API,实现更强大的功能扩展
系统主要包含以下模块:
core/
: 核心功能模块memory/
: 记忆系统实现processor/
: 记忆处理器retrieval/
: 记忆检索chat/
: 对话管理
api/
: API接口services/
: 外部服务集成utils/
: 工具函数config/
: 配置文件frontend/
: 前端界面实现
记忆系统采用三层架构:
-
基础记忆(BaseMemory)
- 存储完整的对话内容和上下文
- 包含时间戳、重要性等元数据
- 记录API调用相关信息
-
记忆快照(MemorySnapshot)
- 提取记忆的关键信息
- 包含对原始记忆的引用
- 按类别组织
- 保存API调用结果和分析
-
元快照(MetaSnapshot)
- 对相似快照进行分类和总结
- 提供更高层次的记忆组织
- 总结API使用模式和效果
系统采用了基于向量的记忆检索方案(RAG),主要特性包括:
-
向量存储:
- 使用 FAISS 进行高效的向量索引和检索
- 支持大规模记忆的快速搜索
- 自动优化索引结构
-
智能排序:
- 时间衰减:优先展示较新的记忆
- 用户相关性:同一用户的记忆得分更高
- 对话上下文:考虑当前对话的相关性
- 记忆类型权重:不同类型记忆有不同权重
-
批量处理:
- 支持记忆的批量向量化
- 异步并行处理
- 显示处理进度
-
性能提升:
- 搜索速度提升 10-100 倍
- 结果相关性提高 20-30%
- 支持更大规模的记忆库
-
使用示例:
# 搜索相关记忆 results = await memory_manager.search_memories( query="查询内容", top_k=5, threshold=0.6, context={ "user_id": "user1", "conversation_id": "conv1" } ) # 批量添加记忆 memory_ids = await memory_manager.add_memories_batch( memories=[ { "content": "记忆内容1", "metadata": {"type": "important"} }, { "content": "记忆内容2", "metadata": {"type": "concept"} } ] )
-
注意事项:
- 首次使用需要下载 embedding 模型
- 建议定期优化向量索引
- 合理设置相似度阈值
- 根据实际需求调整记忆类型权重
系统进行了全面的性能优化,主要包括:
-
虚拟滚动:
- 使用
vue3-virtual-scroll-list
实现消息列表虚拟滚动 - 只渲染可视区域的消息
- 支持动态高度和懒加载
- 使用
-
消息渲染优化:
- 使用 Intersection Observer 检测消息可见性
- 延迟加载不可见消息的内容
- Markdown 渲染和 XSS 防护
- 消息内容缓存
-
资源优化:
- 图片懒加载
- 代码高亮延迟加载
- 静态资源缓存
-
状态管理:
- 分页加载历史消息
- 消息状态本地缓存
- 优化更新策略
-
性能提升:
- 首屏加载时间减少 50%
- 内存占用减少 40%
- 滚动性能提升 200%
- 大量消息场景流畅度提升
-
使用建议:
- 建议每页加载 20-30 条消息
- 可根据设备性能调整虚拟滚动配置
- 合理设置图片尺寸和格式
- 适当清理本地缓存
系统配置位于config/
目录:
default_memory_config.json
: 记忆系统配置storage
: 存储相关配置snapshot
: 快照处理配置chat
: 对话相关配置api
: API调用相关配置
POST /chat
Content-Type: application/json
{
"query": "用户输入",
"context": {
"enable_api_call": true, // 是否启用API调用
"api_docs": "API文档内容" // API接口文档
}
}
POST /clear_history # 清空对话历史
POST /cleanup_memories # 清理旧记忆
GET /memory_stats # 获取记忆统计
- 安装依赖
pip install -r requirements.txt
修改.env.example文件为.env文件
- 运行
python run.py
cd .\frontend\
npm install
npm run dev
系统支持通过对话方式调用外部API,主要特点:
-
动态API调用
- 支持在对话中启用/禁用API调用
- 可以动态提供API文档
- 自动分析API调用需求
-
智能分析
- 自动分析用户需求
- 匹配合适的API
- 生成调用计划
-
安全控制
- API调用开关
- 文档验证
- 调用限制
-
结果处理
- 自动处理API响应
- 整合到对话流程
- 记录调用历史
-
使用方法
- 在对话界面启用API调用开关
- 提供API文档(支持OpenAPI/Swagger格式)
- 正常进行对话,系统会自动判断是否需要调用API
- 定期清理旧记忆以优化存储空间
- 合理配置记忆重要性阈值
- 监控记忆统计信息
- API调用相关:
- 确保API文档格式正确
- 注意API调用频率限制
- 定期检查API可用性
-
基本对话
- 在输入框中输入消息
- 按 Enter 发送消息
- 按 Shift + Enter 换行
- 点击"清空对话"重置对话
-
API 设置
- 点击右上角"API 设置"按钮
- 开启/关闭 API 调用功能
- 输入 API 文档内容
- 点击关闭按钮保存设置
-
思考过程
- 右侧面板实时显示 AI 思考步骤
- 自动滚动显示最新步骤
- 清晰的步骤分类和图标
-
基本对话
- 在底部输入框输入消息
- 点击发送按钮(📤)发送消息
- 点击清空按钮(🗑️)重置对话
-
API 设置
- 点击右上角设置图标(⚙️)
- 在弹出面板中配置 API 设置
- 点击关闭按钮保存并返回
-
思考过程
- 点击右下角思考按钮(🧠)查看思考过程
- 向上滑动查看历史步骤
- 点击顶部关闭按钮返回对话
-
消息显示
- 用户消息:右侧蓝色气泡
- 系统回复:左侧深色气泡
- 时间戳:消息底部显示
-
思考过程
- 步骤编号:顺序显示
- 类型图标:直观区分步骤类型
- 详细描述:展示具体思考内容
- 执行结果:显示操作结果
-
API 设置面板
- 开关控制:一键开启/关闭
- 文档输入:支持多行文本
- 状态提示:显示警告和提示信息
-
操作建议
- 使用现代移动浏览器访问
- 保持良好的网络连接
- 注意设备电量消耗
-
性能优化
- 长时间对话建议定期清空
- 避免输入过长的消息
- 合理使用 API 调用功能
系统现在支持等待 API 调用结果后再生成完整回答。主要功能包括:
-
API 结果缓存:
- 系统会临时缓存 API 调用的结果
- 支持异步等待结果就绪
- 默认超时时间为 10 秒
-
使用方式:
# 设置 API 调用结果 await memory_manager.set_api_result(memory_id, api_result) # 获取完整内容(包含 API 结果) content = await memory_manager.get_complete_content( memory_id="memory_id", content="原始内容", metadata={"api_enabled": True} )
-
注意事项:
- API 调用超时后会返回原始内容
- 可以通过 timeout 参数调整等待时间
- 建议在高并发场景下适当调整超时时间
-
记忆分类显示
- 基础记忆显示为"记忆详情"
- 快照分为"记忆快照"和"元快照"两种类型
- 支持查看记忆的元数据、摘要和关键点
-
界面优化
- 记忆列表显示优化:
- 显示记忆摘要
- 显示关键点数量
- 显示标签信息
- 显示API调用结果标记
- 快照列表显示优化:
- 清晰区分记忆快照和元快照
- 显示快照摘要
- 显示关键点数量
- 移动端适配:
- 优化按钮显示
- 支持思考面板的展开/收起
- 自适应布局
- 记忆列表显示优化:
-
性能优化
- 虚拟滚动优化
- 消息懒加载
- 状态管理优化
- 移动端性能提升
- 支持等待API调用结果
- 优化API调用结果的展示
- 改进API调用的响应时间
-
记忆管理
- 在记忆列表中查看基础记忆
- 在快照列表中查看记忆快照和元快照
- 点击记忆/快照查看详细信息
-
API调用
- 使用右上角的API设置按钮配置
- 可以启用/禁用API调用功能
- 支持自定义API文档
-
移动端使用
- 使用图标按钮操作
- 点击思考图标展开/收起思考面板
- 适配小屏幕显示
-
记忆系统
- 记忆详情包含完整的对话内容
- 记忆快照包含关键信息提取
- 元快照用于更高层次的总结
-
API调用
- 启用API调用可能增加响应时间
- 建议根据需要开启/关闭API功能
- 确保API文档格式正确
-
性能建议
- 定期清理历史记录
- 合理使用API功能
- 注意移动端流量消耗