本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
定义 OpenAPI Amazon Bedrock 中代理人行动小组的架构
在 Amazon Bedrock 中创建操作组时,必须定义代理需要从用户那里调用的参数。您也可以使用这些参数定义代理可以调用的API操作。要定义API操作,请创建一个 OpenAPI JSON或YAML格式的架构。你可以创建 OpenAPI 架构文件并将其上传到亚马逊简单存储服务 (Amazon S3) Semple Service。或者,你可以使用 OpenAPI 控制台中的文本编辑器,它将验证您的架构。创建代理后,您可以使用文本编辑器向代理添加操作组或编辑现有操作组。有关更多信息,请参阅 修改代理。
代理使用架构来确定需要调用的API操作以及API发出请求所需的参数。然后,这些详细信息将通过您为执行操作而定义的 Lambda 函数发送,或者在代理调用的响应中返回。
有关API架构的更多信息,请参阅以下资源:
以下是 a 的一般格式 OpenAPI 操作组的架构。
{ "openapi": "3.0.0", "paths": { "/
path
": { "method
": { "description": "string
", "operationId": "string
", "parameters": [ ... ], "requestBody": { ... }, "responses": { ... } "x-requireConfirmation": ENABLED | DISABLED } } } }
以下列表描述了中的字段 OpenAPI 架构
-
openapi
—(必填)的版本 OpenAPI 那正在被使用。必须使用"3.0.0"
此值才能使操作组发挥作用。 -
paths
–(必填)包含指向各个端点的相对路径。每条路径必须以正斜杠 (/
) 开头。 -
method
–(必填)定义要使用的方法。 -
x-requireConfirmation
—(可选)指定在调用操作之前是否需要用户确认。启用此字段可在调用操作之前请求用户进行确认。在调用操作之前请求用户确认可以防止您的应用程序因恶意提示注入而采取行动。默认情况下,DISABLED
如果未指定此字段,则为用户确认。
最低限度,每种方法都需要以下字段:
-
description
— 对API操作的描述。使用此字段通知代理何时调用此API操作以及该操作的用途。 -
operationId
— 用于标识操作的唯一字符串API,例如函数名称。这是所有新 toolUse 启用的模型的必填字段,例如 Anthropic Claude 3.5 Sonnet, Meta Llama、 等 确保您提供的标识符 (Id) 在所有操作中都是唯一的,并且遵循简单的字母数字模式,仅使用连字符或下划线作为分隔符。 -
responses
— 包含代理在API响应中返回的属性。代理使用响应属性来构造提示,准确处理API呼叫结果,并确定执行任务的正确步骤集。代理可以使用来自一个操作的响应值作为编排中后续步骤的输入。
以下两个对象中的字段可为代理提供更多信息,让其有效利用操作组。对于每个字段,true
如果需要,将该required
字段的值设置为,如果可选,false
则设置为。
-
parameters
– 包含可在请求中添加的参数的相关信息。 -
requestBody
– 包含操作请求正文中的字段。不要在GET
和DELETE
方法中包含此字段。
要了解有关结构的更多信息,请从以下选项卡中进行选择。
要了解如何添加 OpenAPI 您在创建操作组时创建的架构,请参阅在 Amazon Bedrock 中向你的代理添加一个行动组。
示例API架构
以下示例提供了一个简单的 OpenAPI 架构的YAML格式为以摄氏度为单位获取给定位置的天气。
openapi: 3.0.0 info: title: GetWeather API version: 1.0.0 description: gets weather paths: /getWeather/{location}/: get: summary: gets weather in Celsius description: gets weather in Celsius operationId: getWeather parameters: - name: location in: path description: location name required: true schema: type: string responses: "200": description: weather in Celsius content: application/json: schema: type: string
以下示例API架构定义了一组有助于处理保险索赔的API操作。三APIs种定义如下:
-
getAllOpenClaims
— 如果需要未结索赔清单,您的代理可以使用该description
字段来确定是否应调用此API操作。responses
中的properties
用于指定要返回 ID、保单持有人以及理赔状态。代理将此信息返回给代理用户,或者使用部分或全部响应作为后续API呼叫的输入。 -
identifyMissingDocuments
— 如果必须识别保险索赔中丢失的文件,您的代理人可以使用该description
字段来确定是否应调用此API操作。name
、description
和required
字段用于告诉代理必须从客户那里获取未结理赔的唯一标识符。properties
中responses
指定要返回未IDs结保险索赔的。代理将此信息返回给最终用户,或者使用部分或全部响应作为后续API调用的输入。 -
sendReminders
— 如果需要向客户发送提醒,您的代理可以使用该description
字段来确定是否应调用此API操作。例如,提醒他们有待处理的未决索赔文件。然后requestBody
告诉代理人必须找到索赔IDs和待处理的文件。properties
properties
中的responses
指定返回提醒的 ID 及其状态。代理将此信息返回给最终用户,或者使用部分或全部响应作为后续API调用的输入。
{ "openapi": "3.0.0", "info": { "title": "Insurance Claims Automation API", "version": "1.0.0", "description": "APIs for managing insurance claims by pulling a list of open claims, identifying outstanding paperwork for each claim, and sending reminders to policy holders." }, "paths": { "/claims": { "get": { "summary": "Get a list of all open claims", "description": "Get the list of all open insurance claims. Return all the open claimIds.", "operationId": "getAllOpenClaims", "responses": { "200": { "description": "Gets the list of all open insurance claims for policy holders", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "claimId": { "type": "string", "description": "Unique ID of the claim." }, "policyHolderId": { "type": "string", "description": "Unique ID of the policy holder who has filed the claim." }, "claimStatus": { "type": "string", "description": "The status of the claim. Claim can be in Open or Closed state" } } } } } } } } } }, "/claims/{claimId}/identify-missing-documents": { "get": { "summary": "Identify missing documents for a specific claim", "description": "Get the list of pending documents that need to be uploaded by policy holder before the claim can be processed. The API takes in only one claim id and returns the list of documents that are pending to be uploaded by policy holder for that claim. This API should be called for each claim id", "operationId": "identifyMissingDocuments", "parameters": [{ "name": "claimId", "in": "path", "description": "Unique ID of the open insurance claim", "required": true, "schema": { "type": "string" } }], "responses": { "200": { "description": "List of documents that are pending to be uploaded by policy holder for insurance claim", "content": { "application/json": { "schema": { "type": "object", "properties": { "pendingDocuments": { "type": "string", "description": "The list of pending documents for the claim." } } } } } } } } }, "/send-reminders": { "post": { "summary": "API to send reminder to the customer about pending documents for open claim", "description": "Send reminder to the customer about pending documents for open claim. The API takes in only one claim id and its pending documents at a time, sends the reminder and returns the tracking details for the reminder. This API should be called for each claim id you want to send reminders for.", "operationId": "sendReminders", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "claimId": { "type": "string", "description": "Unique ID of open claims to send reminders for." }, "pendingDocuments": { "type": "string", "description": "The list of pending documents for the claim." } }, "required": [ "claimId", "pendingDocuments" ] } } } }, "responses": { "200": { "description": "Reminders sent successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "sendReminderTrackingId": { "type": "string", "description": "Unique Id to track the status of the send reminder Call" }, "sendReminderStatus": { "type": "string", "description": "Status of send reminder notifications" } } } } } }, "400": { "description": "Bad request. One or more required fields are missing or invalid." } } } } } }
有关以下内容的更多示例 OpenAPI 架构,参见网站上的 Open API-s https://github.com/OAI/ pecification/Tree/main/examples/v3.0