Akka代理AI分类演示
企业级多代理事件分类系统,展示Akka Java SDK与MCP协议集成
🎯 概述
该项目展示了 用Akka实现人工智能的可能性艺术 通过展示由多个AI代理通过模型上下文协议(MCP)协调的完整事件分流系统。
这表明了什么
- ✅ 多智能体协调:证据收集、知识库访问和分诊编排
- ✅ MCP协议集成:远程MCP工具(操作数据)和资源(文档)
- ✅ 工作流编排:使用Akka工作流的5步自动分诊工作流程
- ✅ 护栏:跨外部系统的PII检测,以防止数据泄露
- ✅ 服务发现:Akka-dev模式下的自动服务发现
- ✅ 韧性:当外部系统发生故障时,性能会下降
- ✅ 事件驱动架构:Akka事件源实体和消息传递
🏗️ 建筑
┌─────────────────────────────────────────────────────────────────┐
│ Agentic Triage System │
│ (Port 9100) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Evidence │ │ Knowledge │ │ Triage │ │
│ │ Agent │ │ Base Agent │ │ Workflow │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
│ │ │ │
│ │ MCP Tools │ MCP Resources │
└─────────┼─────────────────┼─────────────────────────────────────┘
│ │
↓ ↓
┌──────────────────┐ ┌──────────────────┐
│ Evidence MCP │ │ Knowledge Base │
│ Server │ │ MCP Server │
│ (Port 9200) │ │ (Port 9300) │
│ │ │ │
│ Tools: │ │ Resources: │
│ - fetch_logs │ │ - runbooks │
│ - query_metrics │ │ - docs │
│ - get_services │ │ (with PII) │
│ - correlate │ │ │
└──────────────────┘ └──────────────────┘建筑图(美人鱼)
flowchart LR
ATS["Agentic Triage System"]
EVS["Evidence MCP Server"]
KBS["Knowledge Base MCP Server"]
subgraph Agents[Agents & Workflows]
direction TB
EA["Evidence Agent"]
KA["Knowledge Base Agent"]
TW["Triage Workflow"]
end
ATS -->|"consumes MCP"| EVS
ATS -->|"consumes MCP"| KBS
TW --> EA
TW --> KA
EA -->|"calls tools"| EVS
KA -->|"fetches resources"| KBS
EVS -->|"exposes tools"| Tools["Tools"]
KBS -->|"exposes resources"| Resources["Resources (runbooks, docs)"]
Tools -->|"MCP calls"| EA
Resources -->|"MCP fetch"| KA
classDef svc fill:#d3d3d3,stroke:#2b2b2b,stroke-width:1px,color:#000;
classDef app fill:#cfe3f2,stroke:#2b2b2b,stroke-width:1px,color:#000;
class ATS,EVS,KBS,Tools,Resources svc;
class EA,KA,TW app;系统组件
| 组件 | 端口 | 用途 | MCP类型 | 技术 |
|---|---|---|---|---|
| 证据MCP服务器 | 9200 | 运营数据(日志、指标) | 工具 | 类似Splunk/Datadog |
| 知识库MCP服务器 | 9300 | 文档和运行手册 | 资源 | Confluence/类似SharePoint |
| 代理分流制度 | 9100 | 多代理编排 | 消费者 | Akka工作流 |
🚀 快速开始
先决条件
- Java 21或更高版本
- Maven 3.8+
OPENAI_API_KEY环境变量集
构建所有服务
# Clone repository
git clone https://github.com/YourAccount/akka-agentic-triage-demo
cd akka-agentic-triage-demo
# Build entire monorepo (note: agentic-triage-system has known compilation issues)
mvn clean install -DskipTests
# Build individual modules
cd evidence-mcp-server && mvn compile
cd knowledge-base-mcp-server && mvn compile运行演示
终端1-证据MCP服务器:
cd evidence-mcp-server
mvn compile exec:java
# Wait for: "Akka Runtime started at 127.0.0.1:9200"终端2-知识库MCP服务器:
cd knowledge-base-mcp-server
mvn compile exec:java
# Wait for: "Akka Runtime started at 127.0.0.1:9300"3号航站楼-代理分诊系统:
cd agentic-triage-system
export OPENAI_API_KEY=your-key-here
mvn compile exec:java
# Wait for: "Akka Runtime started at 127.0.0.1:9100"测试系统
# Test Evidence MCP Server
curl http://localhost:9200/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}}'
# Test Knowledge Base MCP Server
curl http://localhost:9300/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":"1","method":"resources/list","params":{}}'
# Start a triage workflow
curl -X POST http://localhost:9100/triage/demo-001 \
-H "Content-Type: application/json" \
-d '{"incident": "Payment service experiencing high error rates"}'
# Check workflow status
curl http://localhost:9100/triage/demo-001/state📖 文档
服务特定文档
关键概念
MCP(模型上下文协议)
此演示展示了两种类型的MCP端点:
- 工具 (证据服务器):用于主动数据收集的可调用功能
- 资源 (知识库服务器):可检索内容以丰富上下文
多代理工作流
分流系统协调多个代理:
- 分类代理:对事件严重程度和类型进行分类
- 证据代理人:通过MCP工具收集日志和指标
- 知识库代理:通过MCP资源检索Runbook
- 分类代理人:分析证据并建议采取行动
- 补救剂:基于Runbook提出修复建议
护栏
该系统演示了PII检测护栏:
- 知识库运行手册包含团队联系信息(电子邮件、电话号码)
- PiiGuardrail在返回给代理之前拦截并阻止PII
- 尽管数据被阻止,工作流仍能正常进行
🎬 演示场景
场景1:支付服务中断(P1)
curl -X POST http://localhost:9100/triage/payment-outage-001 \
-H "Content-Type: application/json" \
-d '{
"incident": "Payment service is down with 503 errors"
}'预期流量:
- 证据代理获取支付服务日志→ 503 检测到错误
- Evidence Agent查询错误度量→ UTC时间14:25达到峰值
- 知识库代理检索支付服务runbook→ PII被封锁
- 分类试剂关联证据→ 数据库连接池耗尽
- 修正代理建议重新启动卷展
场景2:数据库性能下降(P2)
curl -X POST http://localhost:9100/triage/db-perf-001 \
-H "Content-Type: application/json" \
-d '{
"incident": "Checkout service experiencing high latency"
}'预期流量:
- Evidence Agent获取结账服务日志→ 数据库超时错误
- Evidence Agent查询数据库指标→ 85% CPU持续
- 知识库代理检索数据库操作指南
- 分类代理识别资源耗尽
- Remediation Agent建议扩展数据库
🔧 Akka功能展示
核心Akka Java SDK功能
- 代理:具有模型提供商集成的AI驱动组件
- 工作流:多步骤业务流程编排
- 视图:用于高效查询的状态预测
- 事件源实体:具有事件持久性的有状态组件
- HTTP端点:带有ACL注释的REST API公开
- 服务发现:在开发模式下自动发现
MCP集成
- @Mcp端点:暴露MCP协议端点
- @McpTool:定义带有描述的可调用工具
- @Mcp资源:使用URI模板定义可检索资源
- 远程McpTools:从远程MCP服务器使用工具
- 远程Mcp资源:从远程MCP服务器消耗资源
高级模式
- 护栏:代理输出验证和筛选
- 内存提供程序:代理内存管理
- 模型提供商:LLM集成抽象
- 请求上下文:访问跟踪、安全、标头
📁 仓库结构
akka-agentic-triage-demo/
├── pom.xml # Parent POM (multi-module)
├── README.md # This file
│
├── evidence-mcp-server/ # MCP Tools Server
│ ├── pom.xml
│ ├── README.md
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/pradeepl/evidence/
│ │ │ ├── EvidenceToolsEndpoint.java
│ │ │ └── util/
│ │ └── resources/
│ │ ├── logs/ # Mock log files
│ │ └── metrics/ # Mock metric files
│ └── requests.http # HTTP test requests
│
├── knowledge-base-mcp-server/ # MCP Resources Server
│ ├── pom.xml
│ ├── README.md
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/pradeepl/knowledgebase/
│ │ │ └── KnowledgeBaseEndpoint.java
│ │ └── resources/
│ │ └── knowledge_base/
│ │ ├── *-runbook.md # Service runbooks (with PII)
│ │ └── incidents/ # Historical incidents
│ └── requests.http
│
└── agentic-triage-system/ # Main Orchestration
├── pom.xml
├── README.md
├── src/
│ └── main/
│ ├── java/
│ │ └── com/pradeepl/triage/
│ │ ├── application/
│ │ │ ├── agents/ # AI Agents
│ │ │ ├── workflows/ # Triage Workflows
│ │ │ └── endpoints/ # HTTP APIs
│ │ └── domain/ # Entities & Views
│ └── resources/
└── guard-requests.http🛠️ 发展
构建单个模块
# Build Evidence MCP Server only
mvn -pl evidence-mcp-server clean compile
# Build Knowledge Base MCP Server only
mvn -pl knowledge-base-mcp-server clean compile
# Build Agentic Triage System only
mvn -pl agentic-triage-system clean compile运行测试
# Run all tests
mvn test
# Test specific module
mvn -pl evidence-mcp-server test🐛 已知问题
- 代理分流制度:编译错误
RemoteMcpResources类-此功能可能需要更新的Akka SDK版本或不同的实现方法
📚 了解更多
📄 许可证
该项目旨在演示Akka Java SDK的功能。
🤝 贡献
这是一个示范项目。请随意分叉和实验!
______________________________________________________________________
基于Akka Java SDK 3.5.6构建
