对话功能使用指南
概述
本指南介绍如何使用 simple_chat.py 与Crush进行对话。该脚本已优化以提供最佳的用户体验,包括流式输出显示、动态超时计算、错误恢复机制和模型选择功能。
快速开始
1. 启动服务
# 终端1: 启动relay server
cd relay-server
python3 start_server.py
# 终端2: 启动Session Manager
cd phase1/session_manager
python3 start_manager.py
2. 运行对话脚本
# 使用默认模型(zai/glm-4.5)
python3 simple_chat.py
# 使用指定模型
python3 simple_chat.py zai/glm-4.5
python3 simple_chat.py zai/glm-4.5-air
python3 simple_chat.py zai/glm-4.6
python3 simple_chat.py zai/glm-4.7
基本使用
对话命令
| 命令 | 功能 | 示例 |
|---|---|---|
quit, exit, 退出, q |
退出对话 | quit |
retry, 重试, r |
重试上一条消息 | retry |
model [模型名] |
切换模型 | model zai/glm-4.6 |
model |
显示当前模型和可用模型 | model |
示例对话
======================================================
💎 与Crush进行对话测试
======================================================
🤖 当前模型: zai/glm-4.5
💡 输入你的消息,按Enter发送
⏹️ 输入 'quit' 或 'exit' 退出
🔄 输入 'retry' 重试上一条消息
🔧 输入 'model [模型名]' 切换模型
📋 可用模型: zai/glm-4.5, zai/glm-4.5-air, zai/glm-4.6, zai/glm-4.7
======================================================
✅ 已连接到relay server
👤 You: What is 2+2?
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
4
======================================================================
👤 You: 用中文解释什么是递归?
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
递归(Recursion)是一种编程技术,其中函数直接或间接地调用自身...
======================================================================
👤 You: model
📋 当前模型: zai/glm-4.5
📋 可用模型: zai/glm-4.5, zai/glm-4.5-air, zai/glm-4.6, zai/glm-4.7
👤 You: model zai/glm-4.5-air
✅ 模型已切换到: zai/glm-4.5-air
👤 You: Write a Hello World in Python
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
```python
print("Hello, World!")
======================================================
💎 与Crush进行对话测试
======================================================
🤖 当前模型: zai/glm-4.5
💡 输入你的消息,按Enter发送
⏹️ 输入 'quit' 或 'exit' 退出
🔄 输入 'retry' 重试上一条消息
🔧 输入 'model [模型名]' 切换模型
📋 可用模型: zai/glm-4.5, zai/glm-4.5-air, zai/glm-4.6, zai/glm-4.7
======================================================
✅ 已连接到relay server
👤 You: What is 2+2?
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
4
======================================================================
👤 You: 用中文解释什么是递归?
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
递归(Recursion)是一种编程技术,其中函数直接或间接地调用自身...
======================================================================
👤 You: model
📋 当前模型: zai/glm-4.5
📋 可用模型: zai/glm-4.5, zai/glm-4.5-air, zai/glm-4.6, zai/glm-4.7
👤 You: model zai/glm-4.5-air
✅ 模型已切换到: zai/glm-4.5-air
👤 You: Write a Hello World in Python
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
```python
print("Hello, World!")
👤 You: quit
👋 对话结束
## 模型选择
### 推荐模型
#### ⭐ zai/glm-4.5(默认,推荐)
**性能指标**:
- 平均响应时间: 11.18秒
- 成功率: 100%
- 稳定性: ⭐⭐⭐⭐⭐
**适用场景**:
- 对话式交互
- 快速问答
- 代码生成
- 一般编程问题
**使用方法**:
```bash
python3 simple_chat.py zai/glm-4.5
# 或直接使用默认
python3 simple_chat.py
zai/glm-4.5-air
性能指标: - 平均响应时间: 11.02秒(最快) - 成功率: 75% - 稳定性: ⭐⭐⭐⭐
适用场景: - 简单问答 - 不需要代码生成的任务 - 需要更详细输出的场景
注意事项: - 代码生成任务可能超时
使用方法:
zai/glm-4.6
性能指标: - 平均响应时间: 29.19秒 - 成功率: 100% - 稳定性: ⭐⭐⭐
适用场景: - 复杂问题 - 需要深度推理的任务 - 不在意响应时间的场景
使用方法:
zai/glm-4.7
性能指标: - 平均响应时间: 27.38秒 - 成功率: 75% - 稳定性: ⭐⭐⭐
适用场景: - 复杂问题 - 需要深度推理的任务
注意事项: - 代码生成任务可能超时
使用方法:
模型切换
在对话过程中,可以随时切换模型:
👤 You: model zai/glm-4.6
✅ 模型已切换到: zai/glm-4.6
👤 You: Explain quantum computing
[使用zai/glm-4.6模型回答...]
👤 You: model zai/glm-4.5-air
✅ 模型已切换到: zai/glm-4.5-air
功能特性
1. 流式输出显示
Crush的输出会实时显示,无需等待完整回复:
📤 发送中...
🤔 Crush思考中...
======================================================================
💬 Crush:
逐字显示内容...
继续显示...
完成
======================================================================
2. 动态超时计算
根据提示词复杂度自动调整超时时间:
| 提示词长度 | 超时时间 | 示例 |
|---|---|---|
| < 50字符 | 2分钟 | "What is 2+2?" |
| 50-200字符 | 3分钟 | "Explain the difference between list and tuple" |
| 200-500字符 | 4分钟 | 长篇技术问题 |
| > 500字符 | 5分钟 | 非常复杂的多部分问题 |
3. 重试机制
如果请求超时,可以重试上一条消息:
👤 You: What is quantum computing?
[超时]
⏱️ 超时:Crush思考时间太长了,可能问题太复杂
💡 提示: 输入 'retry' 重试,或简化问题
👤 You: retry
🔄 重试第 1 次...
[成功获得回复]
最多可以重试3次。
4. 错误处理
友好的错误消息和恢复建议:
❌ 超时:Crush思考时间太长了,可能问题太复杂
💡 提示: 输入 'retry' 重试,或简化问题
❌ 连接错误:无法连接到服务器
💡 启动命令: cd relay-server && python3 start_server.py
❌ Session错误:无法创建会话
💡 提示: 输入 'retry' 重试此消息
最佳实践
1. 选择合适的模型
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 日常对话 | zai/glm-4.5 | 快速且稳定 |
| 代码生成 | zai/glm-4.5 | 100%成功率 |
| 复杂问题 | zai/glm-4.6 | 深度推理 |
| 简单问答 | zai/glm-4.5-air | 最快响应 |
2. 编写有效的提示词
好的提示词: - 具体明确 - 包含必要的上下文 - 使用简洁的语言
示例:
✅ 好的: "用Python写一个函数来反转字符串"
✅ 好的: "Explain the difference between list and tuple in Python"
❌ 不好的: "写个代码"
❌ 不好的: "What's the difference?"(缺少上下文)
3. 处理超时
如果遇到超时:
- 重试: 输入
retry重试同一消息 - 简化: 将复杂问题分解为多个简单问题
- 切换模型: 使用zai/glm-4.5模型(最稳定)
4. 利用重试机制
- 对于重要问题,可以重试多次
- 重试不会消耗新的token
- 最多可以重试3次
性能指标
响应时间
| 模型 | 简单问题 | 中等复杂 | 复杂问题 | 平均 |
|---|---|---|---|---|
| zai/glm-4.5 | 11.12秒 | 11.02秒 | 11.35秒 | 11.18秒 |
| zai/glm-4.5-air | 11.08秒 | 11.94秒 | 11.05秒 | 11.02秒 |
| zai/glm-4.6 | 34.48秒 | 25.05秒 | 25.36秒 | 29.19秒 |
| zai/glm-4.7 | 23.06秒 | 28.56秒 | 30.51秒 | 27.38秒 |
输出性能
- 输出块大小: 1-60字符/块
- 输出频率: 约100ms/块
- 总输出时间: 15-40秒(取决于输出长度)
故障排除
连接失败
问题: ❌ 连接失败:无法连接到relay server
解决方案:
# 检查服务器是否运行
pgrep -f "python3.*server.py"
# 启动服务器
cd relay-server
python3 start_server.py
# 检查Session Manager是否运行
pgrep -f "python3.*start_manager.py"
# 启动Session Manager
cd phase1/session_manager
python3 start_manager.py
超时频繁
问题: 经常遇到超时
解决方案:
1. 切换到zai/glm-4.5模型
2. 简化问题,分解为多个小问题
3. 使用 retry 命令重试
模型不可用
问题: ⚠️ 未知模型: xxx
解决方案:
- 检查模型名称是否正确
- 查看可用模型列表: model
- 使用推荐模型: zai/glm-4.5
高级用法
自定义超时
虽然脚本会自动计算超时,但你可以在代码中修改:
# 在simple_chat.py中修改calculate_timeout函数
def calculate_timeout(prompt: str) -> tuple:
base_timeout = 30 # 基础超时(周期数)
# ... 修改你的逻辑
添加新模型
要添加新模型,修改 simple_chat.py:
批量测试
使用 test_edge_cases.py 进行批量测试:
相关文档
- 对话优化报告:
docs/CONVERSATION_OPTIMIZATION_REPORT.md - 模型性能基准测试:
docs/CRUSH_MODEL_BENCHMARK.md - Agent指南:
AGENTS.md - API文档:
docs/API.md
常见问题 (FAQ)
Q: 为什么输出有时很慢?
A: Crush的首次输出延迟通常在11-34秒之间,这是Crush的固有特性。使用流式输出显示可以改善用户体验。
Q: 如何提高响应速度?
A: 1. 使用zai/glm-4.5模型(最快且稳定) 2. 简化问题 3. 使用简洁的提示词
Q: 超时设置是多少?
A: 根据提示词复杂度自动调整: - 简单问题(<50字符): 2分钟 - 中等复杂度(50-200字符): 3分钟 - 复杂问题(200-500字符): 4分钟 - 超长问题(>500字符): 5分钟
Q: 可以在对话中切换模型吗?
A: 可以!使用 model [模型名] 命令即可实时切换。
Q: 哪个模型最适合代码生成?
A: zai/glm-4.5(默认模型),100%成功率且稳定。
Q: 重试会增加成本吗?
A: 重试使用的是同一个session,不会额外消耗token。
总结
推荐配置:
- 默认模型: zai/glm-4.5
- 适用场景: 对话式交互、代码生成、快速问答
快速开始:
获取帮助:
最后更新: 2026-03-28 版本: v1.0.0