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 multi-tours de base avec des réponses mises en mémoire tampon (par opposition aux réponses en continu) sont prises en charge
-
InvokeModel avec flux de réponses : conversations multi-tours avec une réponse en continu pour une génération plus incrémentielle et une expérience 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 kit AWS SDK expirent au bout d’une minute. Nous vous recommandons d’augmenter le délai de lecture du client de votre kit 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
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 de streaming Invoke avec boto3, le kit SDK AWS 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 API de l’API Invoke, y compris la syntaxe des demandes et des réponses, consultez InvokeModelWithResponseStream dans la documentation de l’API Amazon Bedrock.