Files
aiagent/测试方案总结.md
2026-01-20 09:40:16 +08:00

2.7 KiB
Raw Blame History

工作流数据流转测试方案总结

问题

工作流能执行完成但LLM节点输出"答非所问",可能是数据在节点间传递时被错误处理。

快速测试方法

方法1: 查看执行日志数据库(最简单)

cd /home/renjianbo/aiagent
python3 check_execution_logs.py

这个脚本会:

  • 自动查找最近的Agent执行记录
  • 显示输入数据和输出数据
  • 显示所有执行日志(按时间顺序)
  • 特别分析LLM节点的输入输出

方法2: 运行数据流转测试脚本

cd /home/renjianbo/aiagent
python3 test_workflow_data_flow.py

这个脚本会:

  • 模拟完整的工作流执行
  • 详细记录每个节点的输入输出
  • 特别关注数据格式转换

方法3: 查看后端日志

# 查看包含[rjb]的调试日志
docker-compose -f docker-compose.dev.yml logs --tail=500 backend | grep "\[rjb\]" | tail -50

# 或者查看Celery worker的日志
docker-compose -f docker-compose.dev.yml logs --tail=500 celery | grep "\[rjb\]" | tail -50

关键检查点

1. 输入数据格式

期望: {"query": "苹果英语怎么讲?", "USER_INPUT": "苹果英语怎么讲?"}

检查: 在浏览器开发者工具的Network标签中查看 POST /api/v1/executions 请求的body

2. Start节点输出

期望: 直接返回输入数据,格式不变

检查: 查看执行日志中start节点的输出

3. LLM节点输入

期望: 从start节点获取格式为 {"query": "...", "USER_INPUT": "..."}

可能的问题: 被包装成 {"input": {"query": "...", "USER_INPUT": "..."}}

检查:

  • 查看执行日志中LLM节点开始执行时的输入数据
  • 或者运行 check_execution_logs.py 查看详细日志

4. user_query提取

期望: 能正确提取到 "苹果英语怎么讲?"

检查: 查看后端日志中的 [rjb] 最终提取的user_query 日志

5. Prompt格式化

期望: 如果是通用指令"请处理用户请求。"应该直接使用user_query作为prompt

检查: 查看后端日志中的prompt相关日志

预期问题

根据之前的分析,最可能的问题是:

  1. 数据被包装: get_node_input 方法可能将数据包装成了 {"input": {...}}
  2. 提取逻辑问题: user_query 提取逻辑可能没有正确处理嵌套结构
  3. Prompt格式化问题: 即使提取到了 user_queryprompt格式化可能没有正确使用

修复建议

如果发现数据被包装成 {"input": {...}},我已经在代码中添加了处理逻辑:

  • get_node_input 中检查嵌套的 input 字段
  • user_query 提取时优先从嵌套的 input 中提取

如果问题仍然存在,请运行测试脚本并提供输出结果。