Files
ailine/QUICKSTART.md
2026-04-13 19:49:18 +08:00

246 lines
5.6 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.

# 快速开始指南 - 多模型切换功能
## 🚀 5分钟快速启动
### 步骤 1: 启动必要的容器
```bash
# 使用提供的启动脚本(推荐)
./start.sh
# 或者手动启动容器
# 1. 启动 vLLM (如果需要本地模型)
docker run -d --rm \
--group-add=video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device=/dev/kfd \
--device=/dev/dri \
-v /home/huang/Study/AIModel/gemma-4-E2B-it:/models/gemma-4-E2B-it \
-e VLLM_ROCM_USE_AITER=0 \
-e HF_TOKEN="$HF_TOKEN" \
-p 8000:8000 \
--ipc=host \
--entrypoint vllm \
my-vllm-gemma4:working \
serve /models/gemma-4-E2B-it \
--served-model-name gemma-4-E2B-it \
--dtype auto \
--api-key token-abc123 \
--trust-remote-code \
--port 8000 \
--gpu-memory-utilization 0.85 \
--max-model-len 8192
# 2. 启动 PostgreSQL
docker run -d \
--name postgres-langgraph \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=langgraph_db \
-p 5432:5432 \
-v ~/docker_volumes/postgres_data:/var/lib/postgresql/data \
postgres:16
```
### 步骤 2: 配置环境变量
编辑 `.env` 文件:
```env
ZHIPUAI_API_KEY=your_actual_zhipuai_api_key
VLLM_LOCAL_KEY=token-abc123
```
### 步骤 3: 启动服务
```bash
# 方式1: 使用启动脚本(推荐)
./start.sh
# 方式2: 手动启动
# 终端1: 启动后端
python backend.py
# 终端2: 启动前端
streamlit run frontend.py
```
### 步骤 4: 访问应用
浏览器打开: `http://localhost:8501`
---
## 🎯 使用多模型切换功能
### 在前端切换模型
1. **打开侧边栏**:点击左上角的菜单图标
2. **选择模型**:在"选择大模型"下拉框中选择:
- 智谱 GLM-4.7-Flash在线
- 本地 vLLMGemma-4
3. **开始对话**:输入您的问题,系统会使用选定的模型处理
### 特性说明
**实时切换**:可以在对话过程中随时切换模型
**记忆共享**:同一会话 ID 下,不同模型共享对话历史
**自动降级**:如果选择的模型不可用,自动切换到可用模型
**状态显示**:每条回复下方会显示实际使用的模型
---
## 🧪 测试功能
### 运行自动化测试
```bash
# 确保后端正在运行
python test_multi_model.py
```
测试内容包括:
- 各模型的可用性测试
- 跨模型会话记忆测试
- API 响应格式验证
### 手动测试
1. **测试智谱模型**
- 选择"智谱 GLM-4.7-Flash"
- 询问:"你好,请介绍一下自己"
- 观察回复速度和内容质量
2. **测试本地模型**
- 选择"本地 vLLMGemma-4"
- 询问相同问题
- 对比两个模型的回复差异
3. **测试记忆功能**
- 第一轮(智谱模型):"我叫小明,记住我的名字"
- 第二轮(本地模型):"我叫什么名字?"
- 验证是否能正确回忆
---
## 🔧 常见问题
### Q1: 某个模型初始化失败怎么办?
**A:** 系统会自动跳过失败的模型,使用其他可用模型。检查日志了解具体原因:
- 智谱模型:确认 `ZHIPUAI_API_KEY` 是否正确
- 本地模型:确认 vLLM 容器是否运行
### Q2: 如何添加新模型?
**A:**`agent.py` 中添加:
```python
def _create_new_model_llm(self):
"""创建新模型的 LLM"""
return YourChatModel(
model="model-name",
api_key="your-key",
# ... 其他参数
)
# 在 initialize() 方法的 model_configs 中添加
model_configs = {
"zhipu": self._create_zhipu_llm,
"local": self._create_local_llm,
"new_model": self._create_new_model_llm, # 新增
}
```
然后在前端 `frontend.py``MODEL_OPTIONS` 中添加对应选项。
### Q3: 会话记忆是如何工作的?
**A:**
- 使用 PostgreSQL 存储对话历史
- 通过 `thread_id` 关联同一会话的消息
- 不同模型共享同一个 checkpointer因此可以跨模型保持上下文
- 点击"新会话"按钮会生成新的 `thread_id`
### Q4: 性能优化建议
**A:**
- 智谱模型:适合快速响应场景,无需本地 GPU
- 本地模型:适合数据隐私要求高的场景,需要 GPU 支持
- 长时间对话建议定期开启新会话,避免上下文过长
---
## 📊 架构优势
### 预编译 Graph
每个模型在启动时都会预编译独立的 LangGraph
- ✅ 避免每次请求都重新编译,提升性能
- ✅ 各模型独立,互不影响
- ✅ 支持热插拔,可动态添加/移除模型
### 智能降级
如果选择的模型不可用:
1. 后端自动切换到第一个可用模型
2. 返回响应中包含 `model_used` 字段
3. 前端显示实际使用的模型
4. 用户无感知,体验流畅
### 统一接口
无论使用哪个模型:
- API 接口保持一致
- 工具调用方式相同
- 会话记忆机制统一
- 前端操作体验一致
---
## 🎓 进阶使用
### 固定会话 ID
如需在不同浏览器或设备间继续同一会话:
```python
# 在 frontend.py 中修改
st.session_state.thread_id = "my_fixed_session_id"
```
### 自定义超时时间
```python
# 在 frontend.py 中修改 timeout 参数
response = requests.post(
API_URL,
json={...},
timeout=120 # 增加到 120 秒
)
```
### 批量测试
```python
# 创建测试脚本
import requests
messages = ["问题1", "问题2", "问题3"]
for msg in messages:
response = requests.post(API_URL, json={"message": msg, "model": "zhipu"})
print(response.json()["reply"])
```
---
## 📞 获取帮助
- 查看完整文档:[README.md](README.md)
- 查看项目结构:参考 [README.md](README.md) 中的项目结构部分
- 报告问题:提交 Issue 并附上日志信息
---
**祝您使用愉快!** 🎉