这是一个生产级AI智能体系统,深度展示了 Spring AI Alibaba 框架的完整能力。项目包含企业级实践模式:ReactAgent、Hooks & Interceptors、StateGraph工作流、Multi-Agent协作、RAG知识库等核心功能。
当前AI应用开发的六大痛点与解决方案
| 痛点 | 解决方案 | 技术实现 |
|---|---|---|
| ❌ 缺乏可观测性 | 完整的审计日志 | CustomAuditHook + MonitorService |
| ❌ 安全风险高 | 多层安全检查 | CustomSecurityHook + SafetyInterceptor |
| ❌ 成本不可控 | Token配额管理 | CustomTokenLimitHook |
| ❌ 工作流复杂 | 可视化编排引擎 | StateGraph 条件路由 |
| ❌ AI黑盒化 | 人工审批节点 | HumanInLoopService |
| ❌ 上下文溢出 | 智能消息修剪 | MessageTrimmingHook |
|
|
我们的实现完整展示了 Spring AI Alibaba 的扩展能力:
ReactAgent agent = ReactAgent.builder()
.name("生产环境智能体")
.model(chatModel)
.tools(weatherTool, databaseTool, apiTool)
.hooks(auditHook, securityHook, tokenLimitHook)
.interceptors(performanceInterceptor, safetyInterceptor)
.build();📋 完整的Hooks & Interceptors清单
| 类型 | 实现类 | 功能说明 | 监控指标 |
|---|---|---|---|
| ModelHook | CustomAuditHook |
审计日志记录 | 耗时、Token、输入输出 |
| ModelHook | CustomSecurityHook |
安全验证 | SQL注入、PII检测 |
| ModelHook | CustomTokenLimitHook |
配额管理 | 用户限额、成本 |
| MessagesModelHook | MessageTrimmingHook |
上下文优化 | 消息数量 |
| ModelInterceptor | PerformanceInterceptor |
性能监控 | 延迟、吞吐量 |
| ModelInterceptor | SafetyInterceptor |
内容过滤 | 不安全内容 |
| ToolInterceptor | ToolMonitorInterceptor |
工具分析 | 成功率、耗时 |
| 工具 | 说明 | 使用场景 |
|---|---|---|
| 🌤️ WeatherTool | 实时天气查询 | "北京今天天气怎么样?" |
| 🏷️ NamingTool | 代码命名助手 | "生成用户服务的Java类名" |
| 📝 ScriptTool | 运维脚本生成 | "创建日志备份的Bash脚本" |
| 🗄️ DatabaseTool | 安全SQL执行 | "查询前10名用户" |
| 🌐 ApiTool | HTTP请求处理 | "调用带认证的REST API" |
| 📁 FileTool | 文件操作 | "读取config.json" |
| 🎨 ImageTool | AI图片生成 | "创建日落风景画" |
真正的图状态工作流编排(非简化版):
┌─────────────┐
│ 需求分类 │
│ Classify │
└──────┬──────┘
│
┌───┴────┐
│ │
▼ ▼
┌──────┐ ┌──────┐
│快速 │ │详细 │
│分析 │ │分析 │
└──┬───┘ └───┬──┘
│ │
└────┬────┘
▼
┌─────────┐
│生成代码 │
│ Code │
└─────────┘
支持特性:
- ✅ 动态节点路由
- ✅ 条件边判断
- ✅ 跨节点状态管理
- ✅ 人工审批节点
- ✅ 错误处理与重试
☕ Java 17+ 🐬 MySQL 8.0+
📦 Maven 3.8+ 🔴 Redis 7.0+
🟢 Node.js 18+ 🔑 阿里云API密钥# 1. 克隆仓库
git clone https://github.com/zhulaoqi/agent.git
cd agent
# 2. 数据库初始化
mysql -u root -p -e "CREATE DATABASE agent_db CHARACTER SET utf8mb4;"
mysql -u root -p agent_db < src/main/resources/sql/init.sql
# 3. 配置API密钥
export DASHSCOPE_API_KEY=sk-你的密钥
# 4. 启动后端
mvn spring-boot:run
# 5. 启动前端(新终端)
cd frontend && npm install && npm run dev访问地址:
- 🌐 前端界面: http://localhost:5173
- 🔌 后端服务: http://localhost:8080
- 📖 API文档: http://localhost:8080/swagger-ui.html
curl -X POST http://localhost:8080/api/agent/chat \
-H "Content-Type: application/json" \
-d '{"message": "上海今天天气怎么样?"}'┌─────────────────────────────────────────────────────────┐
│ 前端展示层 │
│ Vue 3 + Element Plus + SSE 流式展示 │
└────────────────────┬────────────────────────────────────┘
│ REST API / SSE
┌────────────────────▼────────────────────────────────────┐
│ 控制器层 │
│ Agent │ Tool │ Workflow │ RAG │ Multi-Agent │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────┐
│ 服务层 │
│ AgentService │ StreamingService │ MonitorService │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────┐
│ Spring AI Alibaba 框架层 │
│ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ │
│ │ReactAgent│ │ Hooks │ │Interceptors│ │StateGraph│ │
│ └─────────┘ └─────────┘ └──────────┘ └──────────┘ │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────┐
│ 数据与缓存层 │
│ MySQL (JPA) │ Redis (缓存/检查点) │
└─────────────────────────────────────────────────────────┘
|
后端技术 |
前端技术 |
agent/
├── src/main/java/com/kinch/agent/
│ ├── config/ # 配置类
│ │ ├── AgentConfig.java # ⭐ 核心Agent配置
│ │ ├── SecurityConfig.java # 安全配置
│ │ └── WebConfig.java # Web配置
│ ├── hook/ # ⭐ 框架Hooks
│ │ ├── CustomAuditHook.java # 审计日志
│ │ ├── CustomSecurityHook.java # 安全检查
│ │ ├── CustomTokenLimitHook.java # Token限制
│ │ └── MessageTrimmingHook.java # 消息修剪
│ ├── interceptor/ # ⭐ 框架Interceptors
│ │ ├── PerformanceInterceptor.java # 性能监控
│ │ ├── SafetyInterceptor.java # 安全拦截
│ │ └── ToolMonitorInterceptor.java # 工具监控
│ ├── tool/ # 工具实现
│ │ ├── WeatherTool.java # 天气查询
│ │ ├── NamingTool.java # 命名助手
│ │ ├── ScriptGenerationTool.java # 脚本生成
│ │ ├── DatabaseQueryTool.java # 数据库查询
│ │ ├── ApiCallTool.java # API调用
│ │ └── FileOperationTool.java # 文件操作
│ ├── workflow/ # ⭐ StateGraph工作流
│ │ └── RealStateGraphWorkflow.java # 工作流编排
│ ├── service/ # 业务服务
│ │ ├── AgentService.java # Agent核心服务
│ │ ├── StreamingService.java # 流式响应
│ │ ├── RagService.java # RAG服务
│ │ ├── MultiAgentService.java # Multi-Agent
│ │ ├── HumanInLoopService.java # 人机协同
│ │ └── MonitorService.java # 监控服务
│ ├── controller/ # REST控制器
│ ├── entity/ # JPA实体
│ └── repository/ # 数据访问
└── frontend/ # Vue 3 前端
└── src/
├── views/ # 页面组件
│ ├── Chat.vue # 对话界面
│ ├── FrameworkCenter.vue # 框架中心
│ ├── RagDemo.vue # RAG演示
│ ├── MultiAgentDemo.vue # Multi-Agent演示
│ └── HumanInLoopDemo.vue # 人机协同演示
└── api/ # API客户端
GET /api/monitor/stats
{
"totalModelCalls": 1523, // 总模型调用次数
"totalModelTimeMs": 45678, // 总耗时(毫秒)
"avgModelTimeMs": 30.0, // 平均耗时
"totalToolCalls": 856, // 总工具调用
"successfulToolCalls": 831, // 成功次数
"failedToolCalls": 25, // 失败次数
"totalSecurityChecks": 1523, // 安全检查次数
"passedSecurityChecks": 1520, // 通过次数
"failedSecurityChecks": 3 // 拦截次数
}每次AI交互都会记录:
- ⏱️ 时间戳与执行时长
- 👤 用户信息与IP地址
- 📝 输入输出完整内容
- 🔧 工具调用与执行结果
- 💰 Token消耗与成本估算
- ❌ 错误信息与堆栈跟踪
ReactAgent agent = agentFactory.createAgent("chat_agent");
AssistantMessage response = agent.call("北京今天天气怎么样?", config);
// Agent自动调用WeatherTool并返回自然语言回复// 上传文档
ragService.uploadDocument(pdfFile);
// 查询知识库
String answer = ragService.query("公司的年假政策是什么?");
// 返回: "根据公司政策,正式员工享有10天年假..."
// 来源: 员工手册.pdf(第23页)// 监督者将任务分配给专业智能体
MultiAgentResult result = multiAgentService.executeSupervisor(
"分析这段代码并提出改进建议",
List.of(codeReviewAgent, securityAgent, performanceAgent)
);StateGraph<OverAllState> graph = workflow.createDevelopmentWorkflow();
Map<String, Object> result = graph.invoke("创建用户注册API");
// 执行流程: 需求分析 → 设计 → 代码生成 → 测试 → 审核- 🔒 JWT身份认证与授权
- 🛡️ SQL注入防护
- 🚫 敏感词过滤
- 🔍 PII检测与脱敏
- 💳 Token配额强制执行
- 📋 完整审计追踪
docker-compose up -dapiVersion: apps/v1
kind: Deployment
metadata:
name: spring-ai-agent
spec:
replicas: 3
template:
spec:
containers:
- name: agent
image: zhulaoqi/agent:latest
env:
- name: DASHSCOPE_API_KEY
valueFrom:
secretKeyRef:
name: ai-secrets
key: api-key欢迎贡献代码!请遵循以下步骤:
- 🍴 Fork 本仓库
- 🌿 创建特性分支 (
git checkout -b feature/AmazingFeature) - ✅ 提交你的更改 (
git commit -m 'Add AmazingFeature') - 📤 推送到分支 (
git push origin feature/AmazingFeature) - 🔀 提交 Pull Request
阅读 贡献指南 了解详情。
本项目采用 MIT 协议 - 查看 LICENSE 文件了解详情。
特别感谢以下项目和团队:
- Spring AI Alibaba 团队 - 提供强大的AI框架
- 阿里云百炼 - 提供通义千问和通义万相模型
- Spring Boot 团队 - 提供稳定的基础框架
- Vue.js 团队 - 提供优秀的前端框架
如果这个项目对你有帮助,请给个 Star!⭐
- 核心 ReactAgent 实现
- Hooks & Interceptors 完整集成
- StateGraph 工作流编排
- RAG 知识库集成
- Multi-Agent 多智能体协作
- Human-in-the-Loop 人机协同
- 监控与审计体系
- 向量数据库集成(Milvus)
- 高级RAG策略
- 多模态支持(视觉、音频)
- GraphQL API
- Kubernetes Operator
- 性能基准测试
用 ❤️ 和 Spring AI Alibaba 构建