Utilizzo dell’API Invoke - Amazon Nova

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à.

Utilizzo dell’API Invoke

Nota

Questa documentazione è per Amazon Nova versione 1. Per informazioni su come utilizzare l'API Invoke con Amazon Nova 2, visita Using the Invoke API.

Un altro metodo per invocare i modelli di comprensione di Amazon Nova (Amazon Nova Micro, Lite, Pro e Premier) è attraverso l’API Invoke. L’API Invoke per i modelli Amazon Nova è progettata per essere coerente con l’API Converse, consentendo di estendere la stessa unificazione per supportare gli utenti che utilizzano l’API Invoke (ad eccezione della funzionalità di comprensione dei documenti, che è specifica dell’API Converse). I componenti descritti in precedenza vengono utilizzati mantenendo al contempo uno schema coerente tra i fornitori di modelli. L’API Invoke supporta le seguenti caratteristiche del modello.

  • InvokeModel: sono supportate le conversazioni di base a più turni con risposte memorizzate nel buffer (anziché in streaming)

  • InvokeModel Con Response Stream: conversazioni a più turni con risposta in streaming per una generazione più incrementale e un'atmosfera più interattiva

  • Prompt di sistema: istruzioni di sistema come utenti tipo o linee guida della risposta

  • Visione: input di immagini e video

  • Utilizzo dello strumento: chiamata di funzioni per selezionare vari strumenti esterni

  • Utilizzo degli strumenti di streaming: combina l’uso degli strumenti e la generazione di streaming in tempo reale

  • Protezioni: impediscono contenuti inappropriati o dannosi

Importante

Il periodo di timeout per le chiamate di inferenza ad Amazon Nova è 60 minuti. Per impostazione predefinita, i client AWS SDK scadono dopo 1 minuto. Ti consigliamo di aumentare il periodo di timeout di lettura del tuo client AWS SDK ad almeno 60 minuti. Ad esempio, per l’ AWS SDK per Python botocore, modifica il valore del campo read_timeout in botocore.config ad almeno 3.600.

client = boto3.client( "bedrock-runtime", region_name="us-east-1", config=Config( connect_timeout=3600, # 60 minutes read_timeout=3600, # 60 minutes retries={'max_attempts': 1} ) )

Ecco un esempio di come utilizzare l'API Invoke Streaming con boto3, l' AWS SDK per Python con Amazon Nova Lite:

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 import boto3 import json from datetime import datetime # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-east-1") LITE_MODEL_ID = "us.amazon.nova-lite-v1:0" # Define your system prompt(s). system_list = [ { "text": "Act as a creative writing assistant. When the user provides you with a topic, write a short story about that topic." } ] # Define one or more messages using the "user" and "assistant" roles. message_list = [{"role": "user", "content": [{"text": "A camping trip"}]}] # Configure the inference parameters. inf_params = {"maxTokens": 500, "topP": 0.9, "topK": 20, "temperature": 0.7} request_body = { "schemaVersion": "messages-v1", "messages": message_list, "system": system_list, "inferenceConfig": inf_params, } start_time = datetime.now() # Invoke the model with the response stream response = client.invoke_model_with_response_stream( modelId=LITE_MODEL_ID, body=json.dumps(request_body) ) request_id = response.get("ResponseMetadata").get("RequestId") print(f"Request ID: {request_id}") print("Awaiting first token...") chunk_count = 0 time_to_first_token = None # Process the response stream stream = response.get("body") if stream: for event in stream: chunk = event.get("chunk") if chunk: # Print the response chunk chunk_json = json.loads(chunk.get("bytes").decode()) # Pretty print JSON # print(json.dumps(chunk_json, indent=2, ensure_ascii=False)) content_block_delta = chunk_json.get("contentBlockDelta") if content_block_delta: if time_to_first_token is None: time_to_first_token = datetime.now() - start_time print(f"Time to first token: {time_to_first_token}") chunk_count += 1 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f") # print(f"{current_time} - ", end="") print(content_block_delta.get("delta").get("text"), end="") print(f"Total chunks: {chunk_count}") else: print("No response stream received.")

Per ulteriori informazioni sulle operazioni dell'API Invoke, inclusa la sintassi di richiesta e risposta, consulta InvokeModelWithResponseStreamla documentazione dell'API Amazon Bedrock.