分布式AI代理协作框架

Aegis是DAWN框架的参考实现,旨在实现异构人工智能代理之间的通用互操作性、发现和协作。

  • by amsilveira-ce
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 amsilveira-ce/Aegis-Agent-Interoperability

使用说明

Aegis:实施DAWN框架

Aegis是 DAWN(分布式代理工作流网络) --一个架构框架,旨在实现 异构人工智能代理之间的通用互操作性、发现和协作.


1.问题:AI孤岛

今天的人工智能领域是支离破碎的。自主代理在孤立的生态系统(如LangChain、CrewAI等)中运行,无法与外部代理协作。这导致了冗余开发,并限制了可解决问题的复杂性。 DAWN旨在打破这些孤岛,为真正的协作人工智能生态系统创建一个通信标准。


2.解决方案:DAWN框架

DAWN提议 自上而下编排模型,围绕两个主要组成部分,构建一个 人工智能能力的全球精英市场.

核心架构

DAWN架构由三个主要支柱组成:

  1. 主要代理人: 中央协调人。它接收用户请求,将其分解为任务,计划执行并管理上下文。
  2. 网关代理: 服务发现注册表。充当“智能目录”,资源代理(工具或其他代理)在其中注册,并根据其功能和性能指标(QoS)进行发现。
  3. 资源代理: 任何提供特定功能的专用代理或工具(例如计算器、网络搜索代理或专用AI模型)。

3.宙斯盾核心组件

Aegis的实施分为以下主要部分,反映了DAWN蓝图。

3.1.主要代理人(Aegis/core/principal_agent)

充当编排的中央大脑。

设计原理:

  • 灵活的操作模式: 支持 NO_LLM, ASSISTED (复制品), AGENT,以及 HYBRID 模式,允许在确定性和自主工作流之间进行转换。
  • 上下文管理: 维护层次结构上下文(conversation_history, user_preferences, task_history, memory_bank)实现复杂任务的个性化和连续性。
  • 推理策略: 设计用于实现多个“推理引擎”(例如ReAct、ReWOO、ToT)进行任务分解。
  • 本地资源缓存: 保留本地资源缓存,以减少频繁网关查询的网络开销。

架构(principalAgent.py):

  • mode: OperationalMode
  • gateway_agents: List[GatewayAgent]
  • local_resources: Dict[str, Resource]
  • task_queue: List[Task]
  • execution_history: List[Dict]
  • context: Dict
  • reasoning_strategies: Dict

3.2.网关代理(Aegis/core/gateway_agent)

管理网络中所有可用资源的注册、验证和智能发现。

设计原理:

  • 双索引注册表: 使用一个 registry (用于通过ID查找O(1))和a capability_index (对于按能力发现O(1))——对于高性能至关重要。
  • 性能跟踪(QoS): 每个注册的资源都包含自己的性能指标(performance_metrics, success_rate, avg_response_time).这允许网关充当智能选择器,不仅根据能力,而且根据历史性能对资源进行排名。
  • 资源验证: 包含 test_results 和 is_active,允许在不删除的情况下优雅地停用故障资源,从而确保系统的健壮性。

架构(gatewayAgent.py 和 gatewayAgent_schemas.py):

  • registry: Dict[str, RegisteredResource]

  • capability_index: Dict[str, List[str]]

  • security_filters: List[Callable]

  • gateway_metrics: Dict

  • RegisteredResource (模式):

    • id: str
    • capabilities: List[str]
    • endpoint: str
    • api_schema: Dict[str, Any]
    • manifest: Dict[str, Any]
    • performance_metrics: Dict[str, float]
    • is_active: bool

4.技术栈(MVP)

此MVP的方法使用以下技术:

  • 后端: Python(FastAPI)和Node.js用于代理服务。
  • 协议: A2A(代理到代理)用于水平通信(代理代理),MCP(模型上下文协议)用于垂直通信(代理工具),通过HTTP(S)使用JSON-RPC 2.0。
  • 数据库: PostgreSQL用于网关注册表、清单和指标的持久存储。
  • 消息: Redis Streams或NATS用于异步通信和任务状态管理。
  • 监控: Prometheus+Grafana堆栈用于实时性能指标(延迟、成功率)。
  • LLM(推理引擎): 主代理的模型,如Granite、Mistral和Llama2(通过API)。

5.入门

先决条件

  • Python 3.9+
  • PostgreSQL
  • Redis或NATS

安装

  1. 克隆此存储库:

    git clone https://github.com/your-username/aegis.git
    cd aegis
    
  2. 创建并激活虚拟环境:

    python -m venv venv
    source venv/bin/activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 配置环境变量(创建 .env 文件):

    DATABASE_URL="postgresql://user:pass@localhost/aegis_db"
    REDIS_URL="redis://localhost:6379"
    # ... other configurations
    

运行服务

  1. 启动网关代理:

    uvicorn Aegis.core.gateway_agent.main:app --host 0.0.0.0 --port 8000
    
  2. 启动主代理:

    uvicorn Aegis.core.principal_agent.main:app --host 0.0.0.0 --port 8001
    

6.执行流程(MVP示例)

  1. A. 资源代理 (例如。, WeatherAgent)将其元数据(清单、API架构、功能)发送到 网关代理s REGISTER_RESOURCE 终点。
  2. 这 网关代理 验证资源(执行健康检查)并存储它,由两者进行索引 id 和 capabilities.
  3. 用户向发送请求(例如,“圣保罗的天气预报是什么?”) 委托代理.
  4. 这 委托代理 使用其推理引擎(例如ReAct)将请求分解为任务: Task(description="get_weather_forecast", requirements=["weather", "location:São Paulo"]).
  5. 这 委托代理 查询 网关代理 (通过 QUERY_RESOURCES)对于满足以下条件的代理商 requirements.
  6. 这 网关代理 查找它 capability_index,找到 WeatherAgent,根据QoS指标(延迟、成功率)对其进行排名,并返回其详细信息。
  7. 这 委托代理 使用A2A协议委派 Task 到 WeatherAgent的端点。
  8. 这 WeatherAgent 执行任务并返回结果。
  9. 这 委托代理 更新网关中的执行指标,并将最终响应返回给用户。