Utilisation de l’API Invoke - Amazon Nova

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l’API Invoke

Note

Cette documentation concerne la version 1 d'Amazon Nova. Pour plus d'informations sur l'utilisation de l'API Invoke avec Amazon Nova 2, consultez la page Utilisation de l'API Invoke.

Une autre méthode pour invoquer les modèles de compréhension Amazon Nova (Amazon Nova Micro, Lite, Pro et Premier) consiste à utiliser l’API Invoke. L’API Invoke pour les modèles Amazon Nova est conçue pour être compatible avec l’API Converse, ce qui permet d’étendre la même unification pour prendre en charge les utilisateurs qui utilisent l’API Invoke (à l’exception de la fonctionnalité de compréhension de documents, qui est spécifique à l’API Converse). Les composants évoqués précédemment sont utilisés tout en conservant un schéma cohérent entre les fournisseurs de modèles. L’API Invoke prend en charge les fonctionnalités de modèle suivantes :

  • InvokeModel: les conversations de base à plusieurs tours avec des réponses mises en mémoire tampon (par opposition à des réponses diffusées en continu) sont prises en charge

  • InvokeModel Avec Response Stream : conversations à plusieurs tours avec réponse diffusée en continu pour une génération plus progressive et une sensation plus interactive

  • Invites système : instructions système telles que des personas ou des directives de réponse

  • Vision : entrées d’images et de vidéos

  • Utilisation d’outils : appel de fonctions pour sélectionner divers outils externes

  • Utilisation d’outils de streaming : combiner l’utilisation d’outils et le streaming de génération en temps réel

  • Barrières de protection : prévention des contenus inappropriés ou préjudiciables

Important

Le délai d’expiration pour les appels d’inférence vers Amazon Nova est de 60 minutes. Par défaut, les clients du AWS SDK expirent au bout d'une minute. Nous vous recommandons d'augmenter le délai de lecture de votre client AWS SDK à au moins 60 minutes. Par exemple, dans le kit SDK AWS Python botocore, modifiez la valeur du champ read_timeout dans botocore.config à au moins 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} ) )

Voici un exemple d'utilisation de l'API Invoke Streaming avec boto3, le AWS SDK pour Python avec 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.")

Pour plus d'informations sur les opérations de l'API Invoke, y compris la syntaxe des demandes et des réponses, consultez InvokeModelWithResponseStreamla documentation de l'API Amazon Bedrock.