208 lines
5.3 KiB
Markdown
208 lines
5.3 KiB
Markdown
# 测试脚本使用说明
|
||
|
||
## 概述
|
||
|
||
`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 详细测试文档
|