首页 / 资讯中心 / 文章详情

Nexent 外部 A2A Agent 接入实战指南:URL/Nacos 双通道发现、协议配置与协作智能体集成

Nexent 外部 A2A Agent 接入实战指南:URL/Nacos 双通道发现、协议配置与协作智能体集成 ★ FEATURED ARTICLE
人工智能AI AgentAgent 编排低代码AI 技能RAG【免费下载链接】nexentNexent 是一个开源智能体SDK和平台能够将描述流程的自然语言转化为完整的多模态服务 —— 无需编排无需复杂拖拉拽。基于 MCP 工具生态系统构建Nexent 提供灵活的模型集成、可扩展的数据处理和强大的知识库管理。我们的目标很简单将数据、模型和工具整合到一个智能中心中让任何人都能轻松地将 Nexent 集成到项目中使日常工作流程更智能、更互联。项目地址https://gitcode.com/ModelEngine/nexent点击查看免费下载Nexent 通过A2AAgent-to-Agent协议开放了一条跨平台智能体互操作通道允许你把其他平台开发的 Agent 以外部协作智能体的形式纳入自己的工作流。本文以 Agent 智能体接入文档 为主线结合 Nexent 开源的 A2A 数据模型、客户端服务与 API 实现完整讲解 URL 发现与 Nacos 发现两种接入方式、Agent Card 规范、调用协议与认证配置、以及与主智能体绑定协作的完整链路。读完本文你将能够独立完成第三方 A2A Agent 的发现、验证、配置和接入使用。 A2A 协议跨平台智能体互操作的开放标准A2AAgent-to-Agent是一个开放协议旨在解决不同平台、不同技术栈的 AI Agent 之间的互操作问题。在 Nexent 中它承担着外部智能体接入总线的角色本地智能体通过 A2A 协议可以发现远端 Agent、读取其能力描述并在任务需要时调用远端 Agent 作为子智能体sub-agent整体模式与 MCP 工具接入类似。通过 A2A 协议Nexent 实现三个核心价值标准化通信统一的 Agent 发现和调用机制无需针对每家供应商定制对接代码能力抽象Agent 通过元数据声明自身能力调用方无需了解对方的内部实现细节跨平台协作来自不同供应商、不同技术栈的 Agent 可以无缝协作构成多智能体协同网络。A2A 协议核心概念概念说明Agent CardAgent 的元数据描述文件包含名称、描述、端点、能力等信息是发现与调用的起点Task任务实体代表一次 Agent 调用包含状态working/completed/failed/canceled与产物Message消息支持同步和流式两种模式携带 role 与内容SkillAgent 提供的具体能力列表描述它可以做什么在 Nexent 源码中这些概念被完整建模为 Pydantic 模型见 backend/consts/a2a_models.pyA2AMessage、A2ATask、A2ATaskStatus、A2ATaskEvent流式事件、A2AAgentSkill、A2AAgentCard等字段定义与 A2A 1.0 规范保持一致。 Agent Card 规范详解元数据驱动的能力自描述Agent Card 是 A2A 生态的名片外部 Agent 通常将其发布在/.well-known/agent-card.json或/.well-known/agent.json路径下。Nexent 的服务端数据模型 A2AAgentCard 给出了一个完整的字段参考字段类型说明name/description/versionstringAgent 显示名称、描述、版本如1.2.0providerobject供应商信息organization、urldocumentationUrlstring文档地址capabilitiesobject能力声明streaming、pushNotifications、stateTransitionReports、artifacts、supportedTransportTypes、protocolVersion默认1.0defaultInputModes/defaultOutputModesstring[]默认输入/输出 MIME 类型默认[text/plain]skillsA2AAgentSkill[]能力列表每个 Skill 含id、name、description、tags、examples、inputModes、outputModessupportedInterfacesA2ASupportedInterface[]支持的协议端点数组每项含protocolBindinghttp-json-rpc/rest/grpc、url、protocolVersionurlstring兼容旧格式的 Base URL作为http-json-rpc接口的兜底securitySchemes/securityRequirementsobject / array安全方案声明与认证要求metadataobject附加元数据符合 A2A 1.0 规范的一份 Agent Card 示例如下{ name: data-analysis-agent, description: 专业的数据分析助手可以执行统计分析、生成图表、解读数据趋势, url: https://agent.example.com/nb/a2a/agent-123, version: 1.0.0, capabilities: { streaming: true, pushNotifications: false }, skills: [ { id: statistical-analysis, name: 统计分析, description: 执行描述性统计和推断性统计 }, { id: chart-generation, name: 图表生成, description: 根据数据生成各种类型的图表 } ], endpoints: { http: https://agent.example.com/nb/a2a/agent-123 } }说明A2A 1.0 规范推荐使用supportedInterfaces数组来描述协议端点。Nexent 在解析 Agent Card 时会按supportedInterfaces→endpoints→provider.url→ 顶层url的优先级提取可调用地址见 a2a_client_service.py 的_extract_agent_url因此新旧格式的 Agent Card 均可被兼容解析。 发现外部 A2A AgentURL 与 Nacos 双通道Nexent 提供两种发现外部 A2A Agent 的方式覆盖已知目标地址与服务注册中心批量扫描两类场景发现方式适用场景前置条件URL 发现已知 Agent Card 地址Agent Card URL 可访问Nacos 发现批量发现注册到 Nacos 的 AgentNacos 服务运行中方式一URL 发现当您知道目标 Agent 的 Agent Card 地址时使用 URL 发现方式最直接。Nexent 前端入口位于智能体开发 → 协作 Agent页面的「外部 A2A Agent」页签操作步骤如下进入智能体开发 → 协作 Agent页面在「外部 A2A Agent」页签下点击「添加外部 Agent」选择「URL 发现」页签填写 Agent Card URL例如https://example.com/.well-known/agent.json如需认证填写自定义请求头JSON 格式{Authorization: Bearer token}点击「发现」按钮系统获取 Agent 信息后展示 Agent 详情确认无误后点击「添加到列表」注意事项自定义请求头仅用于获取和刷新 Agent Card不会用于后续调用。源码层面该头信息在 discover_from_url 中随请求头合并发送并以agent_card_headers字段随外部 Agent 一起入库刷新 Agent Card 时refresh_agent_card会重新携带。再次发现同一 URL 时请求头留空会保留现有配置填写{}可清空配置。后端对应接口为POST /a2a/client/discover/url见 backend/apps/a2a_client_app.py请求体包含url、可选name覆盖显示名、custom_headers三个字段。发现失败如 URL 不可达、Card 解析失败时返回 HTTP 400 并附带AgentDiscoveryError错误详情。源码视角发现时如何提取 Agent 信息在 discover_from_url 中Nexent 完成以下关键处理通过A2AHttpClient拉取 Agent Card默认超时 10 秒见 backend/utils/a2a_http_client.py按agent_id→id→endpoint_id→name的顺序提取 Agent ID缺失时用name URL 哈希兜底生成从supportedInterfaces中提取第一个接口的url、protocolVersion与streaming能力缺失时回退到顶层capabilities连同securitySchemes、securityRequirements与原始 Card 一起落库供后续协议配置与认证使用。 方式二Nacos 发现如果目标 Agent 注册在 Nacos 服务发现平台可以使用 Nacos 发现方式批量接入操作步骤如下进入智能体开发 → 协作 Agent页面在「外部 A2A Agent」页签下点击「添加外部 Agent」选择「Nacos 发现」页签首次使用时配置 Nacos 连接信息配置项说明示例Nacos 服务器地址Nacos 服务地址http://127.0.0.1:8848命名空间 IDNacos 命名空间可选默认publicdev分组名服务分组名默认DEFAULT_GROUPDEFAULT_GROUP用户名/密码Nacos 访问凭证可选nacos/nacos点击「保存配置」填写要扫描的 Agent 服务名称点击「扫描」系统从 Nacos 获取匹配的 Agent 列表选择需要的 Agent点击「添加」前提条件Nacos 服务正常运行目标 Agent 已正确注册到 Nacos服务元数据中包含 Agent Card 地址agent_url或url。源码视角Nacos 扫描链路Nacos 发现的实现位于 discover_from_nacos 与_discover_single_from_nacosL209-L345按nacos_config_id读取已保存的连接配置要求is_active为真命名空间可在请求时覆盖对每个服务名调用NacosClient.query_a2a_agentNacos 客户端封装见 backend/utils/nacos_client.py从响应中提取agent_url与元数据描述拿到agent_url后会按以下候选路径逐一尝试拉取 Agent Card越具体的路径越优先以补全supportedInterfaces与能力声明{agent_url}/.well-known/agent-card.json {agent_url}/.well-known/agent.json {agent_url}/.well-known/agent-1.0.json {agent_url}/agent-card.json {agent_url}/agent.json拉取失败时回退使用 Nacos 元数据中的接口信息单个服务失败不会中断整体扫描全部失败才抛错扫描完成后会更新 Nacos 配置的last_scan时间戳。此外Nexent 还提供POST /a2a/client/nacos-configs/test-connection接口见 backend/apps/a2a_client_app.py可以在不保存配置的情况下先验证 Nacos 连通性便于排障。️ 管理外部 Agent从验证到协议与认证配置在「外部 A2A Agent」列表中您可以对每个已发现的 Agent 执行以下管理操作。这些操作在后端均有对应 API路由前缀/a2a/client见 backend/apps/a2a_client_app.py前端页面只是对它们的可视化封装。查看 Agent 详情点击 Agent 卡片可以查看完整信息名称、描述、版本、URL 端点、支持的能力列表Skills、调用协议支持情况。对应接口为GET /a2a/client/agents/{external_agent_id}。测试 Agent点击「测试」按钮向 Agent 发送测试消息验证其是否正常工作。后端通过POST /a2a/client/agents/{external_agent_id}/chat完成消息会按 A2A 协议组装message_id、role: ROLE_USER、parts[].text见 backend/apps/a2a_client_app.py。与 Agent 对话点击「对话」按钮打开对话窗口与 Agent 进行实时交互测试。对话消息同样走上述 chat 接口若 Agent Card 声明了streaming: true还可通过服务层call_agent_streamingbackend/services/a2a_client_service.py接收taskProgress、taskArtifact等流式事件。配置调用协议点击「协议配置」按钮选择该 Agent 的调用协议对应接口为PUT /a2a/client/agents/{external_agent_id}/protocol协议说明适用场景HTTP JSONREST API 风格调用直接提交 message 载荷通用场景兼容性更好JSON-RPCJSON-RPC 2.0 协议调用method: SendMessage标准化 RPC 调用源码层面协议类型在 backend/database/a2a_agent_db.py 中定义为PROTOCOL_HTTP_JSON HTTPJSON、PROTOCOL_JSONRPC JSONRPC、PROTOCOL_GRPC GRPC。Agent Card 的protocolBinding会按映射表http-json-rpc/jsonrpc→ JSONRPCrest/httprest/httpjson→ HTTPJSONgrpc→ GRPC自动推导默认协议用户也可手动切换切换时会从supportedInterfaces中查找对应 binding 的端点 URL保证协议与端点来自同一个接口。配置认证如果 Agent Card 声明了securitySchemes与securityRequirements点击「Agent 认证」填写认证信息对应接口为PUT /a2a/client/agents/{external_agent_id}/security-credentials。支持的认证方式包括Bearer TokenhttpAuthSecurityScheme如bearerFormat: jwt时自动使用Bearer前缀API KeyapiKeySecurityScheme支持放在 Header / Query / Cookie由location字段决定Basic AuthHTTP Auth scheme。认证校验非常严格见 backend/apps/a2a_client_app.py凭据的 scheme 名称必须属于 Card 声明的securitySchemes若 Card 声明了多个 security requirement必须完整填写选中项所需的所有字段服务端会校验selected_security_requirement_index指向的方案集合是否全部被满足。调用时服务层_build_security_request_partsbackend/services/a2a_client_service.py会把凭据按方案类型分别组装到请求头、查询参数或 Cookie 中。刷新 Agent 信息Agent 信息变更后点击「刷新」重新获取最新的 Agent Card对应接口POST /a2a/client/agents/{external_agent_id}/refresh。刷新逻辑按来源区分Nacos 来源的 Agent 通过{base_url}/health做健康检查并更新可用性URL 来源的 Agent 重新拉取source_url并合并新的supportedInterfaces、名称、描述与安全方案。选中的协议和端点在不完整的 Card 刷新中会得到保留避免刷新导致配置丢失。移除 Agent点击「移除」将 Agent 从已发现列表中删除对应接口DELETE /a2a/client/agents/{external_agent_id}。 与外部 Agent 协作绑定为协作智能体发现并配置外部 Agent 后可以将其设为当前智能体的协作智能体让主智能体在任务执行中按需调度它。操作步骤在智能体开发页面进入「协作 Agent」配置在「外部 A2A Agent」列表中点击选择目标 AgentAgent 会出现在「已选择的协作 Agent」列表中保存智能体配置后端通过POST /a2a/client/relations建立本地 Agent ↔ 外部 Agent的关系见 backend/apps/a2a_client_app.py并通过GET /a2a/client/sub-agents/{local_agent_id}在运行期查询当前智能体绑定的外部协作 Agent。从测试用例 test/backend/agents/test_create_agent_info.py 可以看到外部 Agent 信息最终会被编译进智能体的ExternalA2AAgentConfig缺失agent_url的条目会被跳过保证运行时配置的健壮性。协作调用示例当主智能体需要执行特定任务时可以调用协作智能体用户帮我分析这份销售数据并生成周报 主智能体分析任务后决定 - 调用「数据分析 Agent」执行统计计算 - 调用「图表生成 Agent」生成可视化图表 - 综合结果生成最终周报底层调用机制调用外部 Agent 时服务层call_agentbackend/services/a2a_client_service.py会根据协议类型构造不同的请求载荷JSON-RPC{jsonrpc: 2.0, id: 1, method: SendMessage, params: {message: {...}}}HTTP JSON{message: {...}}且端点 URL 会追加操作后缀——流式请求为/message:stream同步请求为/message:send见_build_endpoint_url/_get_protocol_pathL605-L621网络层由 backend/utils/a2a_http_client.py 提供支撑默认超时 300 秒、Agent Card 拉取超时 10 秒、最多 3 次指数退避重试退避因子 0.5并对连接池做了force_close处理以避免长连接被服务端中断。调用失败时如 HTTP 401会明确提示检查认证凭据。 实战示例接入 DataAgent A2A AgentDataAgent 是一个支持 A2A 协议的智能体平台以下是将其接入 Nexent 的完整步骤。1. 部署 DataAgent参考 DataAgent 官方文档以 A2A 服务模式启动注意当前 Nexent 不支持带认证的 Agent启动时请勿设置 auth-token。2. 获取 Agent Card 地址DataAgent 以 A2A 模式启动后其 Agent Card 地址为http://IP:9999/.well-known/agent-card.json3. 在 Nexent 中添加在「外部 A2A Agent」页签点击「添加外部 Agent」选择「URL 发现」填写 URLhttp://IP:9999/.well-known/agent-card.json点击「发现」确认展示的 Agent 名称、描述、能力无误后「添加到列表」添加成功后配置调用协议为HTTP JSON4. 测试和使用添加成功后先点击「测试」验证 Agent 响应正常再将其设为协作智能体使用即可在主智能体的工作流中按需调度 DataAgent。❓ 常见问题Q: Agent 发现失败怎么办确认 Agent Card URL 可访问可用浏览器或curl直接验证检查网络连通性和防火墙配置验证 Agent 服务是否正常运行确认认证信息是否正确自定义请求头仅用于拉取/刷新 Card。Q: 调用协议应该如何选择HTTP JSON大多数场景首选兼容性更好JSON-RPC如 Agent 端明确要求 JSON-RPC 协议选择后请确认 Agent Card 的supportedInterfaces中存在对应的protocolBinding否则切换会因找不到匹配端点而失败。Q: 如何开发支持 A2A 的 Agent可以对照 Nexent 的 A2A 实现作为参考服务端数据模型见 backend/consts/a2a_models.pyHTTP 客户端封装见 backend/utils/a2a_http_client.py完整测试用例覆盖了客户端服务、数据库层与 HTTP 客户端test/backend/services/test_a2a_client_service.py、test/backend/database/test_a2a_agent_db.py、test/backend/utils/test_a2a_http_client.py可作为协议实现的落地参考。关键是发布符合 A2A 1.0 规范的 Agent Card并确保 Card 中声明的端点、协议与安全方案真实可用。 相关资源添加外部 A2A Agent 完整操作指南 — 协作 Agent 中添加外部 A2A Agent 的图文操作说明A2A 客户端 API 端点 — 发现、管理、调用外部 Agent 的全部 REST 接口A2A 客户端服务实现 — 发现、刷新、协议组装与认证的底层逻辑A2A 数据库操作 — 外部 Agent 存储、协议映射与缓存 TTL默认 24 小时管理赞分享人工智能AI AgentAgent 编排低代码AI 技能RAG【免费下载链接】nexentNexent 是一个开源智能体SDK和平台能够将描述流程的自然语言转化为完整的多模态服务 —— 无需编排无需复杂拖拉拽。基于 MCP 工具生态系统构建Nexent 提供灵活的模型集成、可扩展的数据处理和强大的知识库管理。我们的目标很简单将数据、模型和工具整合到一个智能中心中让任何人都能轻松地将 Nexent 集成到项目中使日常工作流程更智能、更互联。项目地址https://gitcode.com/ModelEngine/nexent点击查看免费下载相关推荐Nexent 外部 A2A 智能体接入实战URL 与 Nacos 双通道发现、协议与安全配置全指南Nexent 外部 A2A 智能体接入实战URL 与 Nacos 双通道发现、协议与安全配置全指南 Nexent 是一个零代码构建生产级 AI Agent 的AI AgentAI 应用后端前端大模型RAGNexent Agent 智能体接入指南通过 A2A 协议发现与协作调用外部 AgentNexent Agent 智能体接入指南通过 A2A 协议发现与协作调用外部 Agent Nexent 通过 A2AAgent to Agent协议 支持AI AgentAI 应用后端前端大模型RAGNexent 外部 A2A Agent 接入实战从 Agent Card 发现到协作智能体调用Nexent 外部 A2A Agent 接入实战从 Agent Card 发现到协作智能体调用 A2AAgent to Agent是连接不同技术栈、不同平AI AgentAI 应用后端前端大模型RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站