Files
aiagent/智能聊天助手性能优化实施报告.md
2026-01-23 09:49:45 +08:00

5.2 KiB
Raw Blame History

智能聊天助手性能优化实施报告

📊 优化完成情况

已完成的优化

1. 删除 llm-format 节点

  • 状态 已完成
  • 优化内容
    • 删除了 llm-format 节点原第14个节点
    • 优化了 llm-question 节点的 prompt直接生成格式化好的回复
    • 更新了工作流边连接:cache-update 直接连接到 end-1
  • 效果:减少 1 个 LLM 调用,节省 1-2 秒

2. 优化 max_tokens 配置

  • 状态 已完成
  • 优化内容
    • llm-intent: 1000 → 200 (减少 80%)
    • llm-greeting: 500 → 200 (减少 60%)
    • llm-question: 2000 → 1000 (减少 50%)
    • llm-emotion: 1000 → 500 (减少 50%)
    • llm-request: 1500 → 800 (减少 47%)
    • llm-goodbye: 300 → 150 (减少 50%)
    • llm-general: 1000 → 500 (减少 50%)
  • 效果:减少 token 生成时间,节省 0.5-1 秒,降低 30-40% token 消耗

3. 对话历史截断

  • 状态 已完成
  • 优化内容
    • workflow_engine.py 中添加了对话历史截断逻辑
    • 自动保留最近 20 条对话记录
    • cache-update 节点执行后自动截断
  • 效果
    • 减少 prompt 长度,节省 0.2-0.5 秒
    • 降低 token 消耗
    • 提升 LLM 响应速度

📈 性能提升预期

优化前

  • 平均响应时间5-6 秒
  • LLM 调用次数3 次(意图理解 + 问题回答 + 格式化)
  • Token 消耗:约 3500-4500 tokens/对话
  • 节点数量15 个

优化后

  • 平均响应时间3-4 秒(提升 40%
  • LLM 调用次数2 次(意图理解 + 问题回答)
  • Token 消耗:约 2000-2800 tokens/对话(减少 30-40%
  • 节点数量14 个(减少 1 个)

🔧 技术实现细节

1. 工作流结构优化

优化前流程

开始 → 查询记忆 → 合并上下文 → 意图理解 → 意图路由 → 
[5个分支] → 合并回复 → 更新记忆 → 格式化回复 → 结束

优化后流程

开始 → 查询记忆 → 合并上下文 → 意图理解 → 意图路由 → 
[5个分支直接生成最终回复] → 合并回复 → 更新记忆 → 结束

2. LLM 节点 Prompt 优化

llm-question 节点优化

  • 添加了"确保回复格式自然、完整,无需额外格式化"的指令
  • 让 LLM 直接生成最终格式的回复,避免二次格式化

3. 对话历史截断实现

位置backend/app/services/workflow_engine.py

实现逻辑

# 确保conversation_history只保留最近的20条性能优化
if isinstance(value, dict) and 'conversation_history' in value:
    if isinstance(value['conversation_history'], list):
        max_history_length = 20
        if len(value['conversation_history']) > max_history_length:
            value['conversation_history'] = value['conversation_history'][-max_history_length:]
            logger.info(f"[rjb] 对话历史已截断,保留最近 {max_history_length} 条")

📋 优化清单

优化项 状态 预期效果 实际效果
删除 llm-format 节点 完成 节省 1-2 秒 待测试
优化 max_tokens 完成 节省 0.5-1 秒 待测试
对话历史截断 完成 节省 0.2-0.5 秒 待测试

🚀 下一步建议

中优先级优化(可选)

  1. 使用 WebSocket 替代轮询

    • 实施难度:中
    • 效果:提升实时性,减少服务器负载
    • 预计时间2-3 小时
  2. 智能轮询(如果不用 WebSocket

    • 实施难度:低
    • 效果:减少 30-50% 无效请求
    • 预计时间1 小时

高级优化(可选)

  1. 流式响应

    • 实施难度:高
    • 效果:首字响应时间降低 50-70%
    • 预计时间4-6 小时
  2. LLM 响应缓存

    • 实施难度:中
    • 效果:重复问题响应时间 < 100ms
    • 预计时间2-3 小时

📝 测试建议

  1. 性能测试

    • 测试优化前后的响应时间对比
    • 监控 LLM API 调用次数和耗时
    • 检查对话历史是否正确截断
  2. 功能测试

    • 验证删除 llm-format 节点后,回复格式是否正常
    • 验证各分支节点的回复质量
    • 验证记忆功能是否正常
  3. 压力测试

    • 测试长时间对话超过20条时的性能
    • 测试并发请求的处理能力

⚠️ 注意事项

  1. 向后兼容:优化后的配置已更新到数据库,现有对话会使用新配置
  2. 对话历史超过20条的旧对话历史会被自动截断
  3. 回复格式:由于删除了格式化节点,需要确保各分支节点生成的回复格式正确

📊 监控指标

建议监控以下指标以验证优化效果:

  1. 响应时间

    • P50中位数
    • P9595% 分位数)
    • P9999% 分位数)
  2. LLM 调用

    • 各节点的平均调用时间
    • Token 消耗统计
  3. 系统资源

    • CPU 使用率
    • 内存使用率
    • 数据库连接数

优化完成时间2024年
优化版本v1.0
维护人员AI Assistant