本指南提供 Agent-Only 版本的详细部署说明,包括环境配置、故障排查和性能优化。
Agent-Only 版本包含以下组件:
┌─────────────────────────────────────────┐
│ ChatDKU Agent (CLI) │
│ - DSPy Agent 逻辑 │
│ - 查询重写和判断 │
│ - 答案合成 │
└─────────────────────────────────────────┘
↓ ↓
┌──────────┐ ┌──────────┐
│ Redis │ │ ChromaDB │
│ (关键词) │ │ (向量) │
└──────────┘ └──────────┘
↓ ↓
┌─────────────────────────────────┐
│ 外部服务(需单独部署) │
│ - LLM (sglang/vLLM) │
│ - TEI (Embedding) │
└─────────────────────────────────┘
Ubuntu/Debian:
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker# 安装 NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart dockerdocker run -d --name sglang \
--gpus all \
-p 18085:18085 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
lmsysorg/sglang:latest \
python -m sglang.launch_server \
--model-path Qwen/Qwen3.5-4B \
--host 0.0.0.0 \
--port 18085 \
--tp 1验证服务:
curl http://localhost:18085/v1/modelsdocker run -d --name tei \
-p 8080:8080 \
-v ~/.cache/huggingface:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id BAAI/bge-m3 \
--port 8080验证服务:
curl http://localhost:8080/healthgit clone https://github.com/Edge-Intelligence-Lab/ChatDKU.git
cd ChatDKUcp .env.agent .env
vim .env # 或使用其他编辑器关键配置项:
# LLM 配置
LLM_API_KEY=your_key_here
LLM_BASE_URL=http://localhost:18085/v1
LLM_MODEL=Qwen/Qwen3.5-4B
LLM_TEMPERATURE=0.7
LLM_CONTEXT_WINDOW=32000
# Embedding 配置
EMBEDDING_MODEL=BAAI/bge-m3
TEI_URL=http://localhost:8080
# Redis 配置
REDIS_HOST=redis
REDIS_PASSWORD= # 留空表示无密码
# ChromaDB 配置
CHROMA_HOST=chromadb
CHROMA_DB_PORT=8010
CHROMA_COLLECTION=chatdku_docs将文档放入 data/ 目录:
mkdir -p data
cp /path/to/your/documents/* ./data/启动 Redis 和 ChromaDB:
docker compose -f docker-compose.agent.yml up redis chromadb -d运行数据初始化:
bash scripts/setup_agent_data.shdocker compose -f docker-compose.agent.yml up -d查看日志:
docker compose -f docker-compose.agent.yml logs -f agentdocker compose -f docker-compose.agent.yml exec agent python -m chatdku.core.agent| 变量 | 说明 | 默认值 |
|---|---|---|
LLM_API_KEY |
LLM API 密钥 | - |
LLM_BASE_URL |
LLM 服务地址 | http://localhost:18085/v1 |
LLM_MODEL |
模型名称 | Qwen/Qwen3.5-4B |
LLM_TEMPERATURE |
温度参数 | 0.7 |
LLM_CONTEXT_WINDOW |
上下文窗口大小 | 32000 |
| 变量 | 说明 | 默认值 |
|---|---|---|
TEI_URL |
TEI 服务地址 | http://localhost:8080 |
EMBEDDING_MODEL |
Embedding 模型 | BAAI/bge-m3 |
TOKENIZER_PATH |
Tokenizer 路径 | Qwen/Qwen3.5-4B |
| 变量 | 说明 | 默认值 |
|---|---|---|
REDIS_HOST |
Redis 主机 | redis |
REDIS_PASSWORD |
Redis 密码 | 空 |
CHROMA_HOST |
ChromaDB 主机 | chromadb |
CHROMA_DB_PORT |
ChromaDB 端口 | 8010 |
症状:
Connection refused to http://host.docker.internal:18085
解决方案:
- 检查 LLM 服务是否运行:
docker ps | grep sglang - 测试连接:
curl http://localhost:18085/v1/models - 确认
.env中LLM_BASE_URL配置正确
症状:
Failed to connect to ChromaDB
解决方案:
- 确认 Redis 和 ChromaDB 已启动
- 检查端口是否被占用:
netstat -tuln | grep 6379 - 查看容器日志:
docker compose -f docker-compose.agent.yml logs chromadb
症状:
OOMKilled
解决方案:
- 增加 Docker 内存限制
- 使用更小的模型
- 减少
LLM_CONTEXT_WINDOW
# 使用更小的模型
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2编辑 chatdku/core/agent.py 中的检索参数:
similarity_top_k: 减少检索数量max_iterations: 减少最大迭代次数
# 在 .env 中添加
PHOENIX_HOST=localhost
PHOENIX_PORT=6006启动 Phoenix:
docker run -d -p 6006:6006 arizephoenix/phoenix:latest- 了解如何自定义 Agent 行为
- 查看 Full 版本 获取 Web 界面
- 集成到您的应用中