Usa l'API per richiamare un modello con un solo prompt - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa l'API per richiamare un modello con un solo prompt

Esegui l'inferenza su un modello tramite l'API inviando una InvokeModelWithResponseStreamrichiesta InvokeModelor. Puoi specificare il tipo di supporto per i corpi di richiesta e risposta nei campi contentType e accept. Se non specifichi un valore, il valore predefinito per entrambi i campi è application/json.

Lo streaming è supportato per tutti i modelli di output di testo ad eccezione dei AI21 Labs Jurassic-2 modelli. Per verificare se un modello supporta lo streaming, invia una ListFoundationModelsrichiesta GetFoundationModelOR e verifica il valore nel responseStreamingSupported campo.

Specifica i seguenti campi, a seconda del modello che utilizzi.

  1. modelId: utilizza l'ID del modello o il relativo ARN. Il metodo per trovare modelId o modelArn dipende dal tipo di modello utilizzato:

    • Modello base: effettua una delle seguenti operazioni.

    • Modello personalizzato: acquista velocità di trasmissione effettiva assegnata per il modello personalizzato (per ulteriori informazioni, consulta Throughput assegnato per Amazon Bedrock) e trova l'ARN o l'ID del modello assegnato.

    • Modello assegnato: se hai creato una velocità di trasmissione effettiva assegnata per un modello base o personalizzato, effettua una delle seguenti operazioni.

      • Invia una ListProvisionedModelThroughputsrichiesta e trova provisionedModelArn il modello da utilizzare nella risposta.

      • Nella console, seleziona un modello in Provisioned Throughput e trova l'ARN del modello nella sezione Dettagli del modello.

  2. body: ogni modello base ha i propri parametri impostati nel campo body. I parametri di inferenza per un modello personalizzato o assegnato dipendono dal modello di base da cui è stato creato. Per ulteriori informazioni, consulta Parametri di inferenza per modelli di fondazione.

Richiama esempi di codice del modello

Gli esempi seguenti mostrano come eseguire l'inferenza con l'API. InvokeModel Per esempi con modelli diversi, vedi la documentazione di riferimento sui parametri di inferenza per il modello desiderato (Parametri di inferenza per modelli di fondazione).

CLI

L'esempio seguente salva la risposta generata al prompt story di due cani in un file chiamato invoke-model-output .txt.

aws bedrock-runtime invoke-model \ --model-id anthropic.claude-v2 \ --body '{"prompt": "\n\nHuman: story of two dogs\n\nAssistant:", "max_tokens_to_sample" : 300}' \ --cli-binary-format raw-in-base64-out \ invoke-model-output.txt
Python

L'esempio seguente restituisce una risposta generata al prompt spiega i buchi neri agli studenti di terza media.

import boto3 import json brt = boto3.client(service_name='bedrock-runtime') body = json.dumps({ "prompt": "\n\nHuman: explain black holes to 8th graders\n\nAssistant:", "max_tokens_to_sample": 300, "temperature": 0.1, "top_p": 0.9, }) modelId = 'anthropic.claude-v2' accept = 'application/json' contentType = 'application/json' response = brt.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get('body').read()) # text print(response_body.get('completion'))

Invocazione del modello con un esempio di codice in streaming

Nota

AWS CLI Non supporta lo streaming.

L'esempio seguente mostra come utilizzare l'InvokeModelWithResponseStreamAPI per generare testo in streaming con Python utilizzando il prompt write an essay for living on mars in 1000 words.

import boto3 import json brt = boto3.client(service_name='bedrock-runtime') body = json.dumps({ 'prompt': '\n\nHuman: write an essay for living on mars in 1000 words\n\nAssistant:', 'max_tokens_to_sample': 4000 }) response = brt.invoke_model_with_response_stream( modelId='anthropic.claude-v2', body=body ) stream = response.get('body') if stream: for event in stream: chunk = event.get('chunk') if chunk: print(json.loads(chunk.get('bytes').decode()))