jay77721/ecommerce-agent

★ 0Forks 0GoGitHub ↗Compare

README

🛒 电商客服 Agent

基于 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    # 编译并启动

Docker 部署

cp .env.example .env
# 编辑 .env,填入 LLM_API_KEY

make docker-build   # 构建镜像
make docker-up      # 启动 app + redis + qdrant

API

POST /api/v1/chat

Request:
{
  "session_id": "user_001",
  "message": "我的订单到哪了?"
}

Response:
{
  "session_id": "user_001",
  "reply": "您的订单已发货...",
  "intent": "order_query",
  "need_human": false
}

GET /api/v1/health

{
  "status": "ok",
  "service": "ecommerce-agent",
  "dependencies": {
    "redis": "ok"
  }
}

GET /api/v1/ready

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: 监控 + 上线验证

Contributors

jay77721

Issues