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

89 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工作流数据流转测试方案总结
## 问题
工作流能执行完成但LLM节点输出"答非所问",可能是数据在节点间传递时被错误处理。
## 快速测试方法
### 方法1: 查看执行日志数据库(最简单)
```bash
cd /home/renjianbo/aiagent
python3 check_execution_logs.py
```
这个脚本会:
- 自动查找最近的Agent执行记录
- 显示输入数据和输出数据
- 显示所有执行日志(按时间顺序)
- 特别分析LLM节点的输入输出
### 方法2: 运行数据流转测试脚本
```bash
cd /home/renjianbo/aiagent
python3 test_workflow_data_flow.py
```
这个脚本会:
- 模拟完整的工作流执行
- 详细记录每个节点的输入输出
- 特别关注数据格式转换
### 方法3: 查看后端日志
```bash
# 查看包含[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_query`prompt格式化可能没有正确使用
## 修复建议
如果发现数据被包装成 `{"input": {...}}`,我已经在代码中添加了处理逻辑:
-`get_node_input` 中检查嵌套的 `input` 字段
-`user_query` 提取时优先从嵌套的 `input` 中提取
如果问题仍然存在,请运行测试脚本并提供输出结果。