agent init
This commit is contained in:
207
api/docs/测试脚本使用说明.md
Normal file
207
api/docs/测试脚本使用说明.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# 测试脚本使用说明
|
||||
|
||||
## 概述
|
||||
|
||||
`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 详细测试文档
|
||||
Reference in New Issue
Block a user