Richiedi un output strutturato
Per garantire formati di output coerenti e strutturati, puoi utilizzare output strutturati, inclusi formati come XML, JSON o Markdown. Questo approccio consente ai casi d’uso a valle di utilizzare ed elaborare in modo più efficace gli output generati dal modello. Fornendo istruzioni esplicite al modello, le risposte vengono generate in modo tale da aderire a uno schema predefinito. Ti consigliamo di fornire un output
schema da seguire per il modello.
Ad esempio, se il parser a valle prevede convenzioni di denominazione specifiche per le chiavi in un oggetto JSON, devi specificarle in un campo Schema di output della query. Inoltre, se preferisci che le risposte siano in formato JSON senza alcun testo di preambolo, istruisci il modello di conseguenza. Ossia, indica esplicitamente “Genera solo l’output JSON. NON fornire alcun preambolo.”.
Utilizzo della precompilazione per facilitare l’avvio del modello
Un’alternativa efficace prevede l’esortazione della risposta del modello tramite la precompilazione del contenuto assistant. Questa tecnica consente di indirizzare le azioni del modello, ignorare i preamboli e applicare formati di output specifici come JSON e XML. Ad esempio, se precompili il contenuto dell’assistente con "{" o "```json", tale input può guidare il modello a generare l’oggetto JSON senza fornire informazioni aggiuntive.
Suggerimento
Se stai cercando esplicitamente di estrarre JSON, uno schema comune osservato prevede la sua precompilazione con ```json e l’aggiunta di una sequenza di arresto su ```. Ciò garantisce che il modello emetta un oggetto JSON che può essere analizzato a livello di codice.
Di seguito sono riportati alcuni esempi di schemi di formattazione comuni.
Il codice seguente dimostra come precompilare con le API:
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())
Nota
Per l’output strutturato, indipendentemente dal fatto che si stia sfruttando l’uso degli strumenti, consigliamo di utilizzare parametri di decodifica greedy. In altre parole, temperature=0.
L’aggiunta della sezione Schema di output con lo schema appropriato fa sì che il modello preferisca adattarsi a tale schema. Tuttavia, l’output del modello non è deterministico e potrebbe variare rispetto allo schema di output.
Ruolo |
Prompt |
|
|---|---|---|
Utente |
Fornisci dettagli sulle fotocamere full frame più vendute negli ultimi tre anni. Rispondi in formato JSON con chiavi come nome, marchio, prezzo e un riepilogo. |
Fornisci dettagli sulle fotocamere full frame più vendute negli ultimi tre anni. DEVI rispondere solo in formato JSON. Segui lo schema di output riportato di seguito. Schema di output:
|
Assistente |
|
|
Un altro approccio prevede la precompilazione della risposta del modello includendo il testo iniziale desiderato nel messaggio dell’assistente. In questo caso, la risposta del modello di Amazon Nova continuerà dal punto in cui è stato interrotto il messaggio dell’assistente.
Ruolo |
Prompt |
|---|---|
Utente |
Fornisci dettagli sulle fotocamere full frame più vendute negli ultimi tre anni. La risposta deve essere in formato JSON, con le seguenti chiavi: nome, marchio, anno, prezzo, riepilogo. |
Assistente (precompilazione) |
```json |
Assistente |
|
Un terzo approccio prevede l’utilizzo dello strumento per forzare uno schema specifico per la risposta del modello includendo lo schema JSON di Pydantic nella sezione dello schema di utilizzo degli strumenti. Puoi specificare la scelta dello strumento nello schema fornito e la risposta di Amazon Nova sarà strutturata in base allo strumento selezionato. Per ulteriori informazioni su come sfruttare l’utilizzo degli strumenti, consulta Utilizzo dello strumento (chiamata delle funzioni) con Amazon Nova.
Utente |
Dalla query fornita di seguito, estrai le entità pertinenti
|
ToolConfig |
|