Verwenden der Invoke-API - Amazon Nova

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der Invoke-API

Anmerkung

Diese Dokumentation bezieht sich auf Amazon Nova Version 1. Informationen zur Verwendung der Invoke-API mit Amazon Nova 2 finden Sie unter Verwenden der Invoke-API.

Eine weitere Methode zum Aufrufen der Amazon-Nova-Verständnismodelle (Amazon Nova Micro, Lite, Pro und Premier) ist die Invoke-API. Die Invoke-API für Amazon-Nova-Modelle wurde so konzipiert, dass sie mit der Converse-API kompatibel ist, sodass dieselbe Vereinheitlichung erweitert werden kann, um Benutzer zu unterstützen, welche die Invoke-API verwenden (mit Ausnahme der Dokumentenverständnisfunktion, die spezifisch für die Converse-API ist). Die zuvor besprochenen Komponenten werden unter Beibehaltung eines einheitlichen Schemas über alle Modellanbieter hinweg verwendet. Die Invoke-API unterstützt die folgenden Modell-Features:

  • InvokeModel: Einfache Multi-Turn-Konversationen mit gepufferten (im Gegensatz zu gestreamten) Antworten werden unterstützt

  • InvokeModel Mit Response Stream: Multi-Turn-Konversationen mit einer gestreamten Antwort für eine inkrementellere Generierung und eine interaktivere Atmosphäre

  • System-Prompts: Systemanweisungen wie Personas oder Antwortrichtlinien

  • Vision: Bild- und Videoeingänge

  • Verwendung des Tools: Funktionsaufruf zur Auswahl verschiedener externer Tools

  • Verwendung von Streaming-Tools: Kombination von Tool-Nutzung und Echtzeit-Generierungs-Streaming

  • Integritätsschutz: verhindern unangemessene oder schädliche Inhalte

Wichtig

Der Timeout-Zeitraum für Inferenzaufrufe an Amazon Nova beträgt 60 Minuten. Standardmäßig läuft das Timeout für AWS SDK-Clients nach 1 Minute ab. Wir empfehlen, dass Sie das Lese-Timeout Ihres AWS SDK-Clients auf mindestens 60 Minuten erhöhen. Ändern Sie beispielsweise im AWS Python Botocore SDK den Wert des Felds read_timeout in botocore.config auf mindestens 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} ) )

Hier ist ein Beispiel für die Verwendung der Invoke Streaming API mit boto3, dem AWS SDK für Python mit 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.")

Weitere Informationen zu den Invoke API-Vorgängen, einschließlich der Anfrage- und Antwortsyntax, finden Sie InvokeModelWithResponseStreamin der Amazon Bedrock API-Dokumentation.