Files
life-echo/api/docs/测试脚本使用说明.md

208 lines
5.4 KiB
Markdown
Raw Normal View History

2026-01-21 22:31:03 +01:00
# 测试脚本使用说明
## 概述
`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
# 数据库(使用 PostgreSQL与线上一致
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/life_echo
2026-01-21 22:31:03 +01:00
```
### 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 详细测试文档