通过


将代理注册到代理注册表

在 Microsoft Entra 代理注册表中注册代理可在整个组织中集中查看和管理。 它提供所有代理的统一视图,包括来自非Microsoft生成器平台和标识提供者的代理。 注册过程因代理的创建方式而异。

注册表为每个代理存储两种密钥类型的信息:

  • 代理实例:有关执行和管理的操作细节。
  • 代理卡片清单:用于协作的发现元数据。

了解此区别可确保准确注册。

Microsoft产品集成

如果代理是基于以下Microsoft产品之一构建的,则无需将代理注册到代理注册表。 基于这些产品构建的代理会自动集成到代理实例和代理卡清单中,并包含有关代理 ID 的信息。 目前,Microsoft与 Microsoft Entra 代理注册表集成的产品包括:

先决条件

Microsoft Entra 代理 ID 是 Microsoft Agent 365 的一部分。 这两者都可通过 Microsoft 365 中的 边境计划 获得。 若要访问这些功能,必须拥有 Microsoft 365 Copilot 的许可证,并为用户启用 Frontier。

按照 Frontier 入门指南 进行操作,或使用以下步骤检查是否已启用 Frontier:

  1. 计费管理员身份登录到 Microsoft 365 管理中心
  2. 浏览到 Copilot>设置>用户访问>Copilot Frontier 并确保为用户启用。 如果未看到这些选项,请联系管理员以检查Microsoft 365 Copilot 许可。

在向注册表注册代理之前,请确保满足以下要求:

  • 代理注册表管理员角色
  • 具有 https://graph.microsoft.com/.default 作用域的有效 Microsoft Entra 访问令牌
  • 仅限应用的权限或委派的权限
  • 对于非 Microsoft 代理,您需要代理的操作端点和元数据信息。

代理实例和代理卡片

在注册表中注册代理涉及创建代理实例和代理卡。

  • 代理实例是在注册表中的登记,其中包含操作详细信息,例如代理的终结点 URL、代理标识、源存储和所有者信息。
  • 代理卡包含描述代理的功能、技能和其他发现相关信息的元数据。 如果没有代理卡,您的代理将无法被发现。

创建代理实例时,无需同时创建代理卡。 稍后可以使用代理实例 ID 创建代理卡。 代理卡只能通过代理实例创建。 代理实例可以共享代理卡。

自助注册

在上面未列出的Microsoft平台上创建的代理和非Microsoft平台需要使用 Microsoft Graph API 进行自助注册。 此过程涉及:

  • 注册代理程序实例进行库存和运营管理。
  • 注册代理卡清单规范,以促进发现和协作。

注册代理实例

代理的实例包含代理执行与管理所需的操作信息。

  1. 确保你拥有所需的权限:

    • 对于委托流: AgentInstance.ReadWrite.All
    • 对于仅限应用的流: AgentInstance.ReadWrite.AllAgentInstance.ReadWrite.ManagedBy
  2. 发出 POST 请求以注册代理。

POST /beta/agentRegistry/agentInstances
Authorization: Bearer {token}
Content-Type: application/json

{
    "displayName": "My Agent Instance",
    "ownerIds": [
        "11112222-bbbb-3333-cccc-4444dddd5555"
    ],
    "sourceAgentId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
    "originatingStore": "Copilot Studio",
    "agentIdentityBlueprintId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "agentIdentityId": "aaaabbbb-6666-cccc-7777-dddd8888eeee",
    "agentUserId": "22cc22cc-dd33-ee44-ff55-66aa66aa66aa",
    "url": "https://conditional-access-agent.example.com/a2a/v1",
    "preferredTransport": "JSONRPC",
    "additionalInterfaces": [
        {
            "url": "https://conditional-access-agent.example.com/a2a/v1",
            "transport": "JSONRPC"
        },
        {
            "url": "https://conditional-access-agent.example.com/a2a/grpc",
            "transport": "GRPC"
        },
        {
            "url": "https://conditional-access-agent.example.com/a2a/json",
            "transport": "HTTP+JSON"
        }
    ],
    "signatures": [
        {
            "protected": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
            "signature": "BB88CC99DD00EE11FF22AA33BB44CC55DD66EE77",
            "header": {
                "kidHint": "contoso-key-1",
                "nonce": "mN7oP8qR9sT0uV1wX2-yZ3aB4dE="
            }
        }
    ]
}

响应包括具有时间戳的已创建代理实例,并确认成功注册。 代理程序的 sourceAgentId 连接到其原始的平台标识符,而 originatingStore 表示代理程序创建的平台。

注册代理凭证

代理卡清单提供发现元数据,使其他代理和应用程序能够查找代理并与之交互。 使用相同的身份验证令牌,使用以下 API 调用注册代理卡:

    POST /beta/agentRegistry/agentInstances
    Authorization: Bearer {token}
    Content-Type: application/json
    
    {
      "displayName": "",
      "ownerIds": [],
      "sourceAgentId": "",
      "originatingStore": "",
      "url": "",
      "preferredTransport": "",
      "agentIdentityBlueprintId": "",
      "agentIdentityId": "",
      "agentUserId": "",
      "additionalInterfaces": [],
      "signatures": [],
      "agentCardManifest": {
        "ownerIds": [],
        "originatingStore": "",
        "displayName": "",
        "description": "",
        "iconUrl": "",
        "provider": {},
        "protocolVersion": "",
        "version": "",
        "documentationUrl": "",
        "capabilities": {},
        "securitySchemes": {
          "apiKeyAuth": {},
          "entraAuth": {}
        },
        "security": [],
        "signatures": [],
        "defaultInputModes": ["application/json"],
        "defaultOutputModes": ["application/json", "text/html"],
        "supportsAuthenticatedExtendedCard": true,
        "skills": []
      }
    }

技能集定义了代理提供的特定功能,从而实现基于所需功能的精确识别。 能力对象指定您的代理支持的集成协议的技术特性。

处理注册响应

注册成功返回 HTTP 201,使用完整的代理信息(包括系统生成的时间戳)创建。 如果注册失败,响应将包含有助于解决问题的错误详细信息:

错误代码 Description 决议
ValidationError 缺少或无效的必填字段 根据架构要求查看请求有效负载
Unauthorized 身份验证令牌无效 刷新令牌和重试请求
AgentAlreadyExists 代理ID已注册 使用不同的 ID 或更新现有代理

常见的验证错误包括缺少必需字段,例如代理实例的idisBlocked,或代理卡的nameskills

验证代理注册

注册后,确认代理在注册表中正确显示。 可以通过 Microsoft Entra Admin Center 或使用 Microsoft 图形 API 来验证注册。

  1. 导航到 代理身份
  2. 选择 “代理注册表”。 您的代理不会有代理 ID,但如果您在注册过程中提供了相关信息,则可以查看其关联的元数据。