Strukturierte Ausgabe erforderlich
Um konsistente und strukturierte Ausgabeformate zu gewährleisten, können Sie strukturierte Ausgaben verwenden, einschließlich Formaten wie XML, JSON oder Markdown. Dieser Ansatz ermöglicht es nachgelagerten Anwendungsfällen, die vom Modell generierten Ausgaben effektiver zu nutzen und zu verarbeiten. Durch die Bereitstellung expliziter Anweisungen für das Modell werden die Antworten auf eine Weise generiert, die einem vordefinierten Schema entspricht. Wir empfehlen, dass Sie einen output
schema angeben, dem das Modell folgt.
Wenn der Downstream-Parser beispielsweise bestimmte Namenskonventionen für Schlüssel in einem JSON-Objekt erwartet, sollten Sie dies in einem Ausgabeschema-Feld der Abfrage angeben. Wenn Sie es vorziehen, Antworten im JSON-Format ohne Präambeltext zu erhalten, weisen Sie das Modell außerdem entsprechend an. Geben Sie also explizit an: „Bitte generiere nur JSON-Ausgabe. Geben Sie KEINE Präambel an.“.
Verwendung von Vorausfüllungen, um das Modell zu unterstützen
Eine effiziente Alternative besteht darin, die Reaktion des Modells durch Vorausfüllen des assistant-Inhalts zu beeinflussen. Mit dieser Technik können Sie die Aktionen des Modells steuern, Präambeln umgehen und bestimmte Ausgabeformate wie JSON und XML erzwingen. Wenn Sie den Inhalt des Assistenten beispielsweise mit "{" oder "```json" vorausfüllen, kann diese Eingabe das Modell dazu veranlassen, das JSON-Objekt zu generieren, ohne zusätzliche Informationen bereitzustellen.
Tipp
Wenn Sie explizit nach dem Extrahieren von JSON suchen, besteht ein häufig beobachtetes Muster darin, es vorab mit ```json auszufüllen und eine Stoppsequenz bei ``` hinzuzufügen. Dadurch wird sichergestellt, dass das Modell ein JSON-Objekt ausgibt, welchess programmgesteuert analysiert werden kann.
Im Folgenden finden Sie Beispiele für einige gängige Formatierungsschemas.
Der folgende Code veranschaulicht, wie man mit der API vorab ausfüllt:
import boto3 import json # Create a Bedrock Runtime client. client = boto3.client( "bedrock-runtime", region_name="us-east-1" ) request_body = { "system": [ {"text": "You write JSON objects based on the given instructions"} ], "messages": [ { "role": "user", "content": [{"text": "Provide details about the best selling full-frame cameras in past three years. Answer in JSON format with keys like name, brand, price and a summary."}] }, { "role": "assistant", "content": [{"text": " Here is the JSON response: ```json"}] }, ], "inferenceConfig": { "maxTokens": 300, "temperature": 0, } } # Invoke the model and extract the response body. response = client.invoke_model( modelId="amazon.nova-micro-v1:0", body=json.dumps(request_body) ) model_response = json.loads(response["body"].read())
Anmerkung
Für strukturierte Ausgaben empfehlen wir die Verwendung von Greedy-Dekodierungsparametern, unabhängig davon, ob Sie die Verwendung von Tools nutzen. Das heißt, temperature=0.
Durch Hinzufügen des Abschnitts „Ausgabeschema“ mit dem entsprechenden Schema wird das Modell dazu veranlasst, dieses Schema vorrangig anzupassen. Die Modellausgabe ist jedoch nicht deterministisch und kann vom Ausgabeschema abweichen.
Rolle |
Prompt |
|
|---|---|---|
Benutzer |
Gib Einzelheiten zu den meistverkauften Vollformatkameras der letzten drei Jahre an. Antworte im JSON-Format mit Schlüsseln wie Name, Marke, Preis und einer Zusammenfassung. |
Gib Einzelheiten zu den meistverkauften Vollformatkameras der letzten drei Jahre an. Du darfst NUR im JSON-Format antworten. Bitte folge dem untenstehenden Ausgabeschema. Ausgabeschema:
|
Assistent |
|
|
Ein weiterer Ansatz besteht darin, die Antwort des Modells vorauszufüllen, indem der gewünschte Anfangstext in die Nachricht des Assistenten aufgenommen wird. In diesem Fall wird die Antwort des Amazon-Nova-Modells dort fortgesetzt, wo die Nachricht des Assistenten aufhört.
Rolle |
Prompt |
|---|---|
Benutzer |
Gib Einzelheiten zu den meistverkauften Vollformatkameras der letzten drei Jahre an. Deine Antwort sollte im JSON-Format mit den folgenden Schlüsseln erfolgen: Name, Marke, Jahr, Preis, Zusammenfassung. |
Assistent (Vorausfüllung) |
```json |
Assistent |
|
Ein dritter Ansatz besteht darin, mithilfe von Tools ein bestimmtes Schema für die Antwort des Modells zu erzwingen, indem das pydantische JSON-Schema in den Abschnitt zum Toolverwendungsschema aufgenommen wird. Sie können die Tool-Auswahl anhand des bereitgestellten Schemas angeben und die Antwort von Amazon Nova wird auf der Grundlage des ausgewählten Tools strukturiert. Weitere Informationen zur Nutzung von Tools finden Sie unter Verwendung von Tools (Funktionsaufruf) mit Amazon Nova.
Benutzer |
Extrahiere aus der unten angegebenen Abfrage die relevanten Entitäten
|
ToolConfig |
|