基于 Go + LangChain 的智能电商客服系统。
cmd/server/ 入口(优雅关停)
internal/
├── agent/ Agent 核心(LLM 意图分类 + 工具调用)
├── config/ 配置加载 + 校验
├── errors/ 统一错误类型
├── gateway/ HTTP 网关
│ └── middleware/ 中间件(CORS, RequestID, Logger, Recovery, RateLimit)
├── logger/ 结构化日志(slog)
├── rag/ 知识库检索(Qdrant)
├── session/ 会话管理(Redis)
└── tools/ 工具集(商品、订单、售后)
pkg/
└── llm/ LLM 封装(OpenAI 兼容)
cp .env.example .env
# 编辑 .env,填入 LLM_API_KEY
make deps # 安装依赖
make run # 编译并启动cp .env.example .env
# 编辑 .env,填入 LLM_API_KEY
make docker-build # 构建镜像
make docker-up # 启动 app + redis + qdrantRequest:
{
"session_id": "user_001",
"message": "我的订单到哪了?"
}
Response:
{
"session_id": "user_001",
"reply": "您的订单已发货...",
"intent": "order_query",
"need_human": false
}{
"status": "ok",
"service": "ecommerce-agent",
"dependencies": {
"redis": "ok"
}
}K8s readiness probe。
| 特性 | 实现 |
|---|---|
| 结构化日志 | log/slog,JSON/Text 可切换 |
| 优雅关停 | SIGINT/SIGTERM → HTTP drain → Redis close |
| 中间件链 | RequestID, CORS, Logger, Recovery, RateLimit |
| 统一错误 | internal/errors AppError 类型 |
| 健康检查 | Redis 连通性 + build info |
| LLM 意图分类 | 主用 LLM,fallback 到关键词 |
| Docker | 多阶段构建 + docker-compose |
| 测试 | 意图分类、HTTP handler、错误类型 |
make test # 运行测试
make cover # 生成覆盖率报告- Phase 0: 项目骨架
- Phase 1: 最小可用 Agent
- Phase 2: 企业级基础(slog, middleware, Docker, tests)
- Phase 3: RAG 真实数据 + 多租户
- Phase 4: 监控 + 上线验证