一个基于 Go 和 LangGraphGo 的现代化智能聊天应用框架,集成了AI智能体、多会话管理、工具支持和本地持久化存储。
- 多会话支持: 创建和管理多个独立的聊天会话
- AI 智能体: 基于 LangGraphGo 的先进对话智能体
- 上下文记忆: 自动维护对话历史和上下文
- 多模型支持: 支持 OpenAI、Azure OpenAI、百度千帆等
- 实时流式响应: 基于 Server-Sent Events 的流式聊天
- 智能工具选择: LLM驱动的自动工具选择
- Skills 工具系统: 可扩展的技能包管理
- MCP 协议支持: Model Context Protocol 工具集成
- 工具进度跟踪: 实时显示工具执行进度
- JWT 认证授权: 基于角色的访问控制
- 用户管理: 注册、登录、会话管理
- 速率限制: API 请求保护机制
- 安全中间件: CORS、安全头设置
- Prometheus 指标: HTTP请求、Agent状态、LLM调用监控
- 健康检查:
/health、/ready、/info端点 - 配置热重载: 支持 JSON/YAML 配置文件监听
- 优雅关闭: 完善的资源清理和超时处理
- 现代化 Web UI: 响应式设计,支持深色/浅色主题
- 会话管理: 创建、查看、清空、删除会话
- 用户反馈: 消息质量评估和收集
- 实时更新: 无需刷新的实时界面更新
langchat/
├── main.go # 应用程序入口
├── pkg/ # Go 核心包
│ ├── agent/ # 智能体管理
│ │ └── agent.go # 智能体生命周期和状态管理
│ ├── api/ # HTTP API 处理器
│ │ ├── auth.go # 认证相关 API
│ │ └── static.go # 静态文件服务
│ ├── auth/ # 认证服务
│ │ └── auth.go # JWT 用户认证
│ ├── chat/ # 聊天核心功能
│ │ └── chat.go # 聊天服务器和流式响应
│ ├── config/ # 配置管理
│ │ └── config.go # 热重载配置系统
│ ├── middleware/ # HTTP 中间件
│ │ └── auth.go # JWT 认证中间件
│ ├── monitoring/ # 监控指标
│ │ └── metrics.go # Prometheus 指标收集
│ └── session/ # 会话管理
│ └── session.go # 会话持久化存储
├── static/ # 前端静态资源
│ ├── index.html # 主页面
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript 文件
│ ├── images/ # 图片资源
│ └── lib/ # 第三方库
├── configs/ # 配置文件
│ ├── config.json # JSON 格式配置
│ └── config.yaml # YAML 格式配置
├── sessions/ # 本地会话存储(自动创建)
├── deployments/ # 部署配置
├── scripts/ # 构建和部署脚本
├── docs/ # 项目文档
├── Dockerfile # Docker 容器配置
├── Makefile # 构建自动化
├── go.mod # Go 模块定义
└── go.sum # 依赖版本锁定
- Go 1.19 或更高版本
- OpenAI API Key 或兼容的 LLM 服务
# 克隆项目
git clone https://github.com/your-repo/langchat.git
cd langchat
# 安装依赖
go mod download
# 配置环境变量
cp configs/config.json.example configs/config.json
# 编辑 configs/config.json,添加你的 API Key
# 运行开发服务器
make dev
# 或者构建并运行
make build
./bin/langchat# 安装依赖
go mod download
# 配置环境变量
export OPENAI_API_KEY="your-api-key-here"
export PORT="8080"
# 运行应用
go run main.go- 应用地址: http://localhost:8080
- 登录页面: http://localhost:8080/login
- 演示账号:
- 管理员:
admin/admin123 - 普通用户:
user/user123
- 管理员:
应用支持 JSON 和 YAML 两种格式的配置文件:
{
"server": {
"host": "localhost",
"port": 8080,
"read_timeout": 30000000000,
"write_timeout": 30000000000
},
"llm": {
"provider": "openai",
"model": "gpt-4",
"api_key": "your-api-key-here",
"temperature": 0.7,
"max_tokens": 4096
},
"auth": {
"jwt_secret": "your-secret-key",
"session_timeout": 86400000000000,
"rate_limit_enabled": true,
"rate_limit_rps": 10
},
"agent": {
"max_concurrent": 50,
"max_idle_time": 1800000000000,
"health_check_interval": 30000000000,
"session_timeout": 3600000000000,
"max_history": 100
},
"monitoring": {
"enabled": true,
"metrics_port": 9090,
"health_check_enabled": true
}
}{
"llm": {
"provider": "openai",
"model": "gpt-4",
"api_key": "sk-your-openai-key"
}
}{
"llm": {
"provider": "azure",
"model": "your-deployment-name",
"api_key": "your-azure-key",
"base_url": "https://your-resource.openai.azure.com/"
}
}{
"llm": {
"provider": "baidu",
"model": "ERNIE-Bot",
"api_key": "your-baidu-token",
"base_url": "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions"
}
}{
"llm": {
"provider": "ollama",
"model": "llama2",
"api_key": "not-needed",
"base_url": "http://localhost:11434/v1"
}
}POST /api/auth/login- 用户登录POST /api/auth/register- 用户注册POST /api/auth/refresh- 刷新访问令牌POST /api/auth/logout- 用户登出GET /api/auth/me- 获取当前用户信息
POST /api/sessions/new- 创建新会话GET /api/sessions- 获取所有会话DELETE /api/sessions/:id- 删除会话GET /api/sessions/:id/history- 获取会话历史
POST /api/chat- 发送消息(支持流式响应)POST /api/feedback- 提交消息反馈
GET /api/mcp/tools- 获取 MCP 工具列表GET /api/tools/hierarchical- 获取分层工具结构GET /api/config- 获取应用配置
GET /health- 健康检查GET /ready- 就绪检查GET /info- 服务器信息GET /metrics- Prometheus 指标
- 智能体生命周期管理: 状态驱动的智能体生命周期
- 流式响应处理: 基于 SSE 的实时响应流
- 会话隔离: 基于客户端的会话分离
- 工具集成: Skills 和 MCP 工具的无缝集成
- 上下文管理: 自动维护对话历史和上下文
- 智能工具选择: 基于 LLM 推理的工具选择
- 异步初始化: 后台工具预加载,避免首次请求延迟
- 错误恢复: 健壮的错误处理和自动重试
- JWT 认证: 无状态的用户认证机制
- 角色权限: 支持管理员和普通用户角色
- 会话管理: 基于 Cookie 的会话管理
- 演示账号: 内置开发测试账号
- 多维度指标: HTTP、Agent、LLM、系统资源指标
- 健康检查: 全面的应用健康状态监控
- 性能追踪: 请求响应时间和处理量监控
- Prometheus 集成: 标准化的指标输出
docker build -t langchat .docker run -p 8080:8080 \
-e OPENAI_API_KEY="your-api-key" \
-e OPENAI_MODEL="gpt-4" \
-v $(pwd)/sessions:/app/sessions \
langchatversion: '3.8'
services:
langchat:
build: .
ports:
- "8080:8080"
- "9090:9090"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENAI_MODEL=gpt-4
volumes:
- ./sessions:/app/sessions
- ./configs:/app/configs
restart: unless-stopped- 智能体状态机:uninitialized → initializing → ready → running → stopped
- 健康检查和生命周期管理
- 并发控制和资源管理
- HTTP 路由和中间件配置
- 流式响应处理和 SSE 实现
- 会话管理和消息存储
- 支持热重载的配置系统
- 环境变量和配置文件的双重支持
- 配置验证和类型转换
- JSON 格式的会话数据存储
- 用户反馈收集和评估
- 会话历史管理和限制
# 安装开发工具
make setup-dev
# 启用热重载开发
make dev
# 代码质量检查
make check
# 运行测试
make test
# 构建生产版本
make build- 新的 API 端点: 在
pkg/chat/chat.go中添加路由处理 - 新的配置选项: 在
pkg/config/config.go中添加配置结构 - 新的前端功能: 修改
static/目录下的文件 - 新的工具集成: 在
pkg/agent/agent.go中添加工具逻辑
# 运行所有测试
make test
# 运行测试并生成覆盖率报告
make coverage
# 运行特定包的测试
go test ./pkg/chat -v
# 运行性能基准测试
go test -bench=. ./pkg/...# 构建当前平台
make build
# 交叉编译构建
make build-all# 创建发布包
make release
# 输出目录:build/release/"API key not configured"
# 检查配置文件
cat configs/config.json | grep api_key
# 或设置环境变量
export OPENAI_API_KEY="your-key""Port already in use"
# 使用不同端口
export PORT=3000
go run main.go"Tools not loading"
- 检查 MCP 配置路径
- 验证 Skills 目录权限
- 查看应用日志中的错误信息
"High memory usage"
# 调整会话历史限制
export MAX_HISTORY=20
# 调整最大并发数
export AGENT_MAX_CONCURRENT=10# 启用详细日志
export LOG_LEVEL=debug
go run main.go- 会话懒加载: 仅在需要时加载会话历史
- 工具异步初始化: 后台预加载避免首次请求延迟
- 内存管理: LRU 缓存和定期清理
- 并发处理: 基于 Goroutine 的高并发请求处理
- JWT 令牌认证和刷新机制
- CORS 跨域请求保护
- 输入验证和清理
- 速率限制和 DDoS 防护
- 安全的配置管理
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
如果您遇到问题或有任何疑问,请:
🎯 LangGraphGo Chat - 构建下一代智能聊天应用的完整解决方案!
