Generierung strukturierter Ausgaben mit Nova - 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.

Generierung strukturierter Ausgaben mit Nova

Strukturierte Ergebnisse sind für Anwendungsfälle im machine-to-machine Bereich Kommunikation von entscheidender Bedeutung, da sie es nachgelagerten Anwendungsfällen ermöglichen, die generierten Ergebnisse effektiver zu nutzen und zu verarbeiten. Ganz gleich, ob es darum geht, Informationen aus Dokumenten zu extrahieren, Assistenten einzurichten, von denen Daten abgerufen werden APIs, oder Agenten zu entwickeln, die Maßnahmen ergreifen, diese Aufgaben erfordern grundlegende Modelle, um Ergebnisse in bestimmten strukturierten Formaten zu generieren.

Die Nova-Modelle nutzen Constrained Decoding, um eine hohe Modellzuverlässigkeit bei der generierten Ausgabe zu gewährleisten und das Modell in die Lage zu versetzen, komplexe Schemas problemlos zu handhaben. Die eingeschränkte Dekodierung basiert auf einer Grammatik, um die möglichen Tokens, die ein Modell bei jedem Schritt ausgeben kann, „einzuschränken“. Dies unterscheidet sich von den in der Vergangenheit verwendeten Promptinging-Techniken, da dadurch die tatsächlichen Tokens geändert werden, aus denen ein Modell bei der Generierung einer Ausgabe wählen kann. Beim Schließen eines JSON-Objekts wäre das Modell beispielsweise darauf beschränkt, nur ein} -Token auszuwählen. Die eingeschränkte Dekodierung wird jedes Mal genutzt, wenn eine Toolkonfiguration übergeben wird. Da uns die Verwendung des Tools bereits ein bestimmtes Schema zur Verfügung stellt, können wir dieses verwenden, um dynamisch eine Grammatik zu generieren, die auf dem vom Entwickler gewünschten Schema basiert. Die eingeschränkte Dekodierung verhindert, dass das Modell ungültige Schlüssel generiert, und erzwingt korrekte Datentypen auf der Grundlage des definierten Schemas.

Um die Verwendung von Tools mit strukturierter Ausgabe optimal zu nutzen, besteht der erste Schritt darin, das JSON-Schema zu definieren, das Sie für die Ausgabe benötigen. Im Folgenden finden Sie ein Beispiel für ein JSON-Schema, das in einer tool_config Definition definiert ist:

tool_config = { "tools": [ { "toolSpec": { "name": "ProductAnalysis", "description": "Analyze product information from text.", "inputSchema": { "json": { "type": "object", "properties": { "name": { "type": "string", "description": "Product name" }, "rating": { "maximum": 5, "description": "Customer rating 1-5", "type": [ "number", "null" ], "minimum": 1 }, "features": { "description": "Key product features", "type": "array", "items": { "type": "string" } }, "category": { "type": "string", "description": "Product category" }, "price": { "type": "number", "description": "Price in USD" } }, "required": [ "name", "category", "price", "features" ] } } } } ], "toolChoice": { "tool": { "name": "ProductAnalysis" } } }

Wenn Sie das Tool später mithilfe des Modells aufrufen, erhalten Sie eine Ausgabe, die im Schemaformat reagiert. Im Folgenden finden Sie beispielsweise ein Beispiel für den Aufruf des Modells in Python:

import boto3 client = boto3.client("bedrock-runtime") model_id = "amazon.nova-lite-1-5-v1:0" user_query = """The Amazon Kindle Scribe is a state-of-the-art e-reader designed for both reading and writing, featuring a 10.2-inch paper-like display and a premium stylus. This versatile device allows users to enjoy books, take notes, annotate PDFs, and even sketch, making it ideal for readers, students, and professionals. Priced at $339.99, it falls under the electronics category and boasts features like a front light, adjustable warm light settings, and up to 12 weeks of battery life on a single charge. Customer ratings for the Kindle Scribe average around 4.5 stars, reflecting its high user satisfaction.""" messages = [{ "role": "user", "content": [{ "text": user_query }] }] system = [{"text": "Leverage the ProductAnalysis tool to extract product information"}] inference_params = {"temperature": 0} response = client.converse(modelId=model_id, system=system, messages=messages, toolConfig=tool_config, inferenceConfig=inference_params) print(next( block["toolUse"] for block in response["output"]["message"]["content"] if "toolUse" in block ))

Die Ausgabe sieht dann so aus:

{ "toolUseId": "tooluse_hke1FUeuRbKXK8DPqIptVg", "name": "ProductAnalysis", "input": { "name": "Amazon Kindle Scribe", "rating": 4.5, "features": [ "10.2-inch paper-like display", "premium stylus", "front light", "adjustable warm light settings", "up to 12 weeks of battery life" ], "category": "electronics", "price": 339.99 } }