Files
life-echo/api/docs/测试脚本使用说明.md
penghanyuan 44bd478c1e agent init
2026-01-21 22:31:09 +01:00

208 lines
5.3 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.
# 测试脚本使用说明
## 概述
`test_conversation.py` 是一个自动化测试脚本,用于测试 Life Echo 的完整对话流程,包括:
- 用户注册/登录
- WebSocket 多轮对话
- 回忆录状态检查
- 章节生成验证
## 前置条件
### 1. 环境准备
```bash
cd api
# 安装依赖
pip install -r requirements.txt
# 确保 httpx 已安装(测试脚本需要)
pip install httpx
```
### 2. 配置文件
确保 `.env` 文件包含以下配置:
```env
# LLM 配置(必需)
DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat
# JWT 配置(必需)
SECRET_KEY=your-secret-key
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=120
# 数据库
DATABASE_URL=sqlite+aiosqlite:///./life_echo.db
```
### 3. 启动服务器
在一个终端窗口中启动服务器:
```bash
cd api
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
验证服务器运行:
```bash
curl http://localhost:8000/health
# 预期返回: {"status":"ok"}
```
## 运行测试
### 基本用法
在另一个终端窗口中运行:
```bash
cd api
python test_conversation.py
```
## 测试流程
脚本会自动执行以下步骤:
### 1. 用户注册
- 生成随机手机号进行注册
- 获取 JWT access_token
### 2. 查看初始状态
- 调用 `/api/memoir-state` 获取初始回忆录状态
- 显示当前阶段(默认 `childhood`
### 3. 多轮对话7轮
- 建立 WebSocket 连接
- 发送预设的对话内容(涵盖童年和教育阶段)
- 接收 Agent 回复(支持多条消息)
### 4. 结束对话
- 发送 `end_conversation` 消息
- 等待对话结束确认
### 5. 检查结果等待60秒后台处理
- 查看回忆录状态slots 填充情况)
- 查看生成的章节列表
- 显示回忆录完整内容
## 输出示例
```
============================================================
🎭 Life Echo 多轮对话测试
⏰ 开始时间: 2026-01-21 22:07:22
============================================================
📝 注册用户: 138c41775d5
✅ 注册成功!
🔑 Token: eyJhbGciOiJIUzI1NiIsInR5cCI6Ik...
📋 初始回忆录状态:
当前阶段: childhood
🔗 连接 WebSocket: 2f83d622-6391-46fb-8caa-b7237bf9e26b
✅ 连接成功: connect
============================================================
📤 第 1 轮对话
============================================================
👤 用户: 我出生在南方一个小镇,小时候跟奶奶住在一起。
🤖 Agent: 那个小镇听起来很温馨。
🤖 Agent: 和奶奶一起住的时候,你印象最深的是什么?
... (更多对话)
============================================================
📊 检查结果
============================================================
⏳ 等待后台处理完成...
等待中... 10秒
等待中... 20秒
...
📋 回忆录状态:
当前阶段: education
已完成阶段: ['childhood']
childhood 已填充: ['place', 'people', 'emotion']
- place: 在南方一个小镇长大...
- people: 跟奶奶关系很好...
📚 生成的章节:
🆕 [childhood] 奶奶院子里的夏天
🆕 [education] 第一次离开家的少年
📖 回忆录信息:
标题: 我的回忆录
总字数: 0
有更新: 是
============================================================
📜 回忆录完整内容
============================================================
──────────────────────────────────────────────────────────────
【奶奶院子里的夏天】
──────────────────────────────────────────────────────────────
我出生在南方一个小镇,小时候跟奶奶住在一起。奶奶家有个小院子...
============================================================
⏰ 结束时间: 2026-01-21 22:09:30
============================================================
```
## 自定义测试内容
修改 `test_conversation.py` 中的 `CONVERSATION_MESSAGES` 列表来测试不同的对话场景:
```python
CONVERSATION_MESSAGES = [
# 童年阶段
"我出生在南方一个小镇,小时候跟奶奶住在一起。",
"奶奶家有个小院子,夏天的时候我们经常坐在院子里乘凉。",
# 教育阶段
"后来我去城里上学了,那是我第一次离开家。",
# 事业阶段
"大学毕业后我进了一家互联网公司...",
# ... 添加更多对话
]
```
## 常见问题
### Q: 测试超时失败?
A: 后台 LLM 调用可能较慢,请检查:
1. 网络连接是否正常
2. API Key 是否有效
3. 可以增加等待时间(修改 `check_results` 中的等待逻辑)
### Q: 章节未生成?
A: 检查以下情况:
1. 查看服务器日志是否有错误
2. 后台处理有 5 秒去抖延迟 + LLM 调用时间,需要等待
### Q: Agent 回复包含括号注释?
A: 这是 LLM 的问题,已在 prompt 中明确禁止。如果仍然出现,可以:
1. 检查 `agents/prompts/conversation_prompts.py` 中的禁止规则
2. 考虑在后处理中过滤
## 相关文件
- `test_conversation.py` - 测试脚本
- `docs/文字交流模式说明.md` - API 接口说明
- `docs/WebSocket测试文档.md` - WebSocket 详细测试文档