Definire schemi OpenAPI per i gruppi di operazioni dell’agente in Amazon Bedrock
Quando crei un gruppo di operazioni in Amazon Bedrock, devi definire i parametri che l’agente deve invocare dall’utente. Puoi anche definire operazioni API che l’agente può invocare utilizzando questi parametri. Per definire le operazioni API, crea uno schema OpenAPI in formato JSON o YAML. È possibile creare file di schemi OpenAPI e caricarli su Amazon Simple Storage Service (Amazon S3). In alternativa, è possibile utilizzare l’editor di testo OpenAPI nella console, che convaliderà lo schema. Dopo aver creato un agente, puoi utilizzare l’editor di testo quando aggiungi un gruppo di operazioni all’agente o modifichi un gruppo di operazioni esistente. Per ulteriori informazioni, consulta Modifica di un agente.
L’agente utilizza lo schema per determinare l’operazione API da invocare e i parametri necessari per effettuare la richiesta API. Questi dettagli vengono quindi inviati tramite una funzione Lambda definita per eseguire l’azione o restituiti nella risposta all’invocazione dell’agente.
Per ulteriori informazioni sugli schemi API, consulta le seguenti risorse:
-
Per ulteriori dettagli sugli schemi OpenAPI, consulta Specifiche OpenAPI
sul sito web di Swagger. -
Per le best practice relative alla scrittura di schemi API, consulta Best practice per la progettazione delle API
sul sito web di Swagger.
Di seguito è riportato il formato generale di uno schema OpenAPI per un gruppo di operazioni.
{ "openapi": "3.0.0", "paths": { "/path": { "method": { "description": "string", "operationId": "string", "parameters": [ ... ], "requestBody": { ... }, "responses": { ... }, "x-requireConfirmation": ENABLED | DISABLED } } } }
Nell’elenco seguente vengono descritti i campi presenti nello schema OpenAPI:
-
openapi: (obbligatorio) la versione di OpenAPI in uso. Affinché il gruppo di operazioni funzioni, questo valore deve essere"3.0.0". -
paths: (obbligatorio) contiene percorsi relativi ai singoli endpoint. Ogni nome di percorso deve iniziare e terminare con una barra (/). -
method: (obbligatorio) definisce il metodo da utilizzare. -
x-requireConfirmation: (facoltativo) specifica se è richiesta la conferma dell’utente prima di invocare l’azione. Abilita questo campo per richiedere la conferma all’utente prima che l’azione venga invocata. Richiedere la conferma dell’utente prima di invocare l’azione può impedire all’applicazione di intraprendere azioni causate da iniezioni di prompt dannose. Se questo campo non viene specificato, per impostazione predefinita la conferma dell’utente èDISABLED.
Ogni metodo richiede almeno i seguenti campi:
-
description: una descrizione dell'operazione API. Utilizza questo campo per indicare all’agente quando chiamare questa operazione API e cosa fa l’operazione. -
operationId: una stringa univoca che identifica un’operazione in un’API, ad esempio il nome di una funzione. Questo è un campo obbligatorio per tutti i nuovi modelli basati su toolUse come Anthropic, Claude 3.5 Sonnet e Meta Llama. Assicurati che l’identificatore (Id) che fornisci sia univoco per tutte le operazioni e segua un semplice pattern alfanumerico in cui i separatori sono solo trattini o trattini bassi. -
responses: contiene le proprietà che l’agente restituisce nella risposta dell’API. L’agente utilizza le proprietà di risposta per creare prompt, elaborare accuratamente i risultati di una chiamata API e determinare una serie di fasi corrette per eseguire un’attività. L’agente può utilizzare i valori di risposta di un’operazione come input per le fasi successive dell’orchestrazione.
I campi all'interno dei due oggetti seguenti forniscono ulteriori informazioni affinché l'agente possa sfruttare efficacemente il gruppo di operazioni. Imposta il valore dei campi required su true se obbligatori e su false se facoltativi.
-
parameters: contiene informazioni sui parametri che possono essere inclusi nella richiesta. -
requestBody: contiene i campi nel corpo della richiesta per l'operazione. Non includere questo campo per i metodiGETeDELETE.
Per ulteriori informazioni su una struttura, seleziona una delle seguenti schede.
Per informazioni su come aggiungere lo schema OpenAPI creato durante la creazione del gruppo di operazioni, consulta Aggiunta di un gruppo di operazioni all’agente in Amazon Bedrock.
Esempi di schemi API
L’esempio seguente fornisce uno schema OpenAPI semplice in formato YAML che ottiene informazioni sul meteo di una determinata località in gradi Celsius.
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
Il seguente esempio di schema API definisce un gruppo di operazioni API che semplificano la gestione delle richieste di indennizzo assicurativo. Le tre API sono definite come segue:
-
getAllOpenClaims: il tuo agente può utilizzare il campodescriptionper stabilire se chiamare questa operazione API nel caso in cui sia necessario un elenco di richieste di indennizzo aperte.propertiesinresponsesspecifica se restituire l'ID e l'intestatario della polizza e lo stato della richiesta di indennizzo. L'agente restituisce queste informazioni all'utente dell'agente o utilizza alcune o tutte le risposte come input per le successive chiamate API. -
identifyMissingDocuments: l’agente può utilizzare il campodescriptionper stabilire che deve chiamare questa operazione API se è necessario identificare i documenti mancanti per una richiesta di indennizzo. I campiname,descriptionerequiredindicano all'agente che deve richiedere al cliente l'identificativo univoco della richiesta di indennizzo aperta.propertiesinresponsesspecificano di restituire gli ID delle richieste di indennizzo assicurativo aperte. L’agente restituisce queste informazioni all’utente finale oppure utilizza alcune o tutte le risposte come input per le chiamate API successive. -
sendReminders: l’agente può utilizzare il campodescriptionper stabilire che deve chiamare questa operazione API se è necessario inviare dei promemoria al cliente, ad esempio su documenti in sospeso per le richieste di indennizzo aperte. LepropertiesnelrequestBodycomunicano all’agente che deve trovare gli ID delle richieste di indennizzo e i documenti in sospeso. Lepropertiesnelleresponsesspecificano di restituire un ID di un promemoria e il relativo stato. L’agente restituisce queste informazioni all’utente finale oppure utilizza alcune o tutte le risposte come input per le chiamate API successive.
{ "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." } } } } } }
Per altri esempi di schemi OpenAPI, consulta Descrizioni di API di esempio