

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Preparazione dei dati per SFT su Amazon Nova 2
<a name="nova-data-prep-sft-2"></a>

SFT su Amazon Nova 2 supporta la comprensione di testo, immagini, video e documenti, nonché la chiamata agli strumenti, con o senza supporto di motivazione. Questa pagina descrive i vincoli, i formati supportati e le best practice per la preparazione dei dati di formazione SFT per i modelli Amazon Nova 2 Understanding.

**Suggerimento**  
Per convalidare il formato del set di dati prima di iniziare un processo di formazione, consulta. [Strumenti di convalida](nova-data-preparation.md#nova-data-validation-tools)

**Topics**
+ [Formato dei dati](#nova-2-data-overview)
+ [Input di esempio](#nova-2-data-examples)
+ [Funzionalità supportate](#nova-2-supported-features)
+ [General/Text comprensione](#sft-general-constraints)
+ [Comprensione delle immagini](#sft-image-understanding)
+ [Comprensione dei video](#sft-video-understanding)
+ [Comprensione dei documenti](#sft-document-understanding)
+ [Chiamata dello strumento](#sft-tool-calling)
+ [Ragionamento](#sft-reasoning)
+ [Progettazione di esempi di formazione efficaci](#designing-effective-training-examples)

## Formato dei dati
<a name="nova-2-data-overview"></a>

I dati SFT di Amazon Nova 2 utilizzano lo stesso [ formato API ](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html) Converse di Amazon Nova 1, con l'aggiunta di campi opzionali [ di ragionamento. ](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningContentBlock.html)

Ogni riga del file di training JSONL è un oggetto JSON con i seguenti campi di primo livello. Espandi una sezione per saperne di più:

### messages
<a name="sft-field-messages"></a>

Obbligatorio. Il `messages` campo è una serie di oggetti messaggio, ognuno dei quali definisce una svolta nella conversazione. Un oggetto messaggio contiene i seguenti campi:
+ **ruolo ** — Obbligatorio. Definisce se il messaggio proviene da `user` (il prompt inviato al modello) o `assistant` (la risposta del modello). Il primo turno deve essere`user`, l'ultimo deve essere e `assistant` i turni devono alternarsi.
+ **contenuto**: obbligatorio. Una serie di blocchi di contenuto per questo turno.

Il `content` campo è mappato a una serie di blocchi di contenuto. I dati SFT di Amazon Nova 2 supportano i seguenti blocchi:

------
#### [ text ]

Una stringa che specifica il contenuto testuale. Supportata in entrambi `user` i `assistant` turni.

Quanto segue mostra un esempio di oggetto messaggio con un `content` array contenente solo un blocco di `text` contenuto:

```
{
    "role": "user",
    "content": [
        {
            "text": "{{string}}"
        }
    ]
}
```

------
#### [ image ]

Un oggetto immagine che ne specifica il formato e la posizione S3. Supportato solo a turni. `user`

Quanto segue mostra un esempio di oggetto messaggio con un array di contenuti contenente solo un blocco di contenuto di immagini:

```
{
    "role": "user",
    "content": [
        {
            "image": {
                "format": "jpeg",
                "source": {
                    "s3Location": {
                        "uri": "s3://{{your-bucket}}/{{your-image.jpg}}",
                        "bucketOwner": "{{account-id}}"
                    }
                }
            }
        }
    ]
}
```

------
#### [ video ]

Un oggetto video che ne specifica il formato e la posizione S3. Supportato solo a turni. `user`

Quanto segue mostra un esempio di oggetto messaggio con un array di contenuti contenente solo un blocco di contenuto video:

```
{
    "role": "user",
    "content": [
        {
            "video": {
                "format": "mp4",
                "source": {
                    "s3Location": {
                        "uri": "s3://{{your-bucket}}/{{your-video.mp4}}",
                        "bucketOwner": "{{account-id}}"
                    }
                }
            }
        }
    ]
}
```

------
#### [ document ]

Un oggetto documento che ne specifica il formato e la posizione S3. Supportato solo a turni. `user`

Di seguito viene mostrato un esempio di oggetto messaggio con un array di contenuti contenente solo un blocco di contenuto del documento:

```
{
    "role": "user",
    "content": [
        {
            "document": {
                "format": "pdf",
                "source": {
                    "s3Location": {
                        "uri": "s3://{{your-bucket}}/{{your-document.pdf}}",
                        "bucketOwner": "{{account-id}}"
                    }
                }
            }
        }
    ]
}
```

------
#### [ reasoningContent ]

Un oggetto di traccia che ragiona. Supportato solo a `assistant` turni. È supportato solo il ragionamento basato su testo; il contenuto di ragionamento basato su immagini non è supportato.

Quanto segue mostra un esempio di oggetto message con un array di contenuti contenente solo un blocco di contenuto razionalizzato:

```
{
    "role": "assistant",
    "content": [
        {
            "reasoningContent": {
                "reasoningText": {
                    "text": "{{string}}"
                }
            }
        },
        {
            "text": "{{final answer}}"
        }
    ]
}
```

------
#### [ toolUse ]

Un oggetto di invocazione di uno strumento. Supportato solo a turni. `assistant` `toolUseId`Deve essere univoco per conversazione e `name` deve corrispondere a uno strumento definito in`toolConfig`.

Di seguito viene mostrato un esempio di oggetto messaggio con un array di contenuti contenente solo un blocco di contenuto che utilizza uno strumento:

```
{
    "role": "assistant",
    "content": [
        {
            "toolUse": {
                "toolUseId": "{{unique-id}}",
                "name": "{{tool-name}}",
                "input": { {{...}} }
            }
        }
    ]
}
```

------
#### [ toolResult ]

Un oggetto risultato dello strumento. Supportato solo a `user` turni. Ciascuno `toolUseId` deve fare riferimento a un precedente `toolUse` ed essere utilizzato esattamente una volta. Il contenuto deve essere solo testo o JSON.

Di seguito viene mostrato un esempio di oggetto messaggio con un array di contenuti contenente solo un blocco di contenuto dei risultati dello strumento:

```
{
    "role": "user",
    "content": [
        {
            "toolResult": {
                "toolUseId": "{{matching-id}}",
                "content": [
                    {
                        "text": "{{result}}"
                    }
                ]
            }
        }
    ]
}
```

------

### sistema
<a name="sft-field-system"></a>

Un array opzionale che definisce un prompt di sistema: istruzioni o contesto per il modello sull'attività che deve eseguire o sulla persona che deve adottare. Utilizzate lo stesso prompt di sistema sia durante l'addestramento che durante l'inferenza per ottenere i migliori risultati.

```
"system": [
    {
        "text": "{{You are a helpful assistant.}}"
    }
]
```

### toolConfig
<a name="sft-field-toolconfig"></a>

Un oggetto opzionale che definisce gli strumenti disponibili per il modello da utilizzare durante la conversazione. Ogni strumento è definito con un nome, una descrizione e uno schema JSON per i suoi parametri di input.

```
"toolConfig": {
    "tools": [
        {
            "toolSpec": {
                "name": "{{tool-name}}",
                "description": "{{tool-description}}",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "{{param}}": {
                                "type": "string",
                                "description": "{{param-description}}"
                            }
                        },
                        "required": ["{{param}}"]
                    }
                }
            }
        }
    ]
}
```

### schemaVersion
<a name="sft-field-schemaversion"></a>

Obbligatorio. Un campo stringa che identifica la versione dello schema. Può essere qualsiasi valore di stringa.

```
"schemaVersion": "bedrock-conversation-2024"
```

**Convalida dei dati **

Prima di inviare il lavoro di formazione, convalida il set di dati per individuare tempestivamente i problemi di formattazione. Per gli strumenti di convalida disponibili, vedere. [Strumenti di convalida](nova-data-preparation.md#nova-data-validation-tools)

## Input di esempio
<a name="nova-2-data-examples"></a>

I seguenti sono oggetti JSON di esempio completi che mostrano come combinare i campi e i blocchi di contenuto per diverse modalità.

------
#### [ Text-only (Nova 1.0 compatible) ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": "You are a digital assistant with a friendly personality"
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "What country is right next to Australia?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "The closest country is New Zealand"
                }
            ]
        }
    ]
}
```

------
#### [ Image \+ text input ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": "You are a helpful assistant."
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "image": {
                        "format": "jpeg",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-image.jpg",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                },
                {
                    "text": "Which country is highlighted in the image?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "reasoningContent": {
                        "reasoningText": {
                            "text": "I will determine the highlighted country by examining its location on the map and using my geographical knowledge"
                        }
                    }
                },
                {
                    "text": "The highlighted country is New Zealand"
                }
            ]
        }
    ]
}
```

------
#### [ Video \+ text input ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": "You are a helpful assistant."
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "video": {
                        "format": "mp4",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-video.mp4",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                },
                {
                    "text": "What is shown in this video?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "reasoningContent": {
                        "reasoningText": {
                            "text": "I will analyze the video content to identify key elements"
                        }
                    }
                },
                {
                    "text": "The video shows a map with New Zealand highlighted"
                }
            ]
        }
    ]
}
```

------
#### [ Document \+ text input ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "What are the ways in which a customer can experience issues during checkout on Amazon?"
                },
                {
                    "document": {
                        "format": "pdf",
                        "source": {
                            "s3Location": {
                                "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf",
                                "bucketOwner": "123456789012"
                            }
                        }
                    }
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "reasoningContent": {
                        "reasoningText": {
                            "text": "I need to find the relevant section in the document to answer the question."
                        }
                    }
                },
                {
                    "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?"
                }
            ]
        }
    ]
}
```

------
#### [ Text with tool calling ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": "You are an expert in composing function calls."
        }
    ],
    "toolConfig": {
        "tools": [
            {
                "toolSpec": {
                    "name": "getItemAvailability",
                    "description": "Retrieve whether an item is available in a given location",
                    "inputSchema": {
                        "json": {
                            "type": "object",
                            "properties": {
                                "zipcode": {
                                    "type": "string",
                                    "description": "The zipcode of the location to check in"
                                },
                                "quantity": {
                                    "type": "integer",
                                    "description": "The number of items to check availability for"
                                },
                                "item_id": {
                                    "type": "string",
                                    "description": "The ASIN of item to check availability for"
                                }
                            },
                            "required": ["item_id", "zipcode"]
                        }
                    }
                }
            }
        ]
    },
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "reasoningContent": {
                        "reasoningText": {
                            "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086"
                        }
                    }
                },
                {
                    "toolUse": {
                        "toolUseId": "getItemAvailability_0",
                        "name": "getItemAvailability",
                        "input": {
                            "zipcode": "94086",
                            "quantity": 20,
                            "item_id": "id-123"
                        }
                    }
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "toolResult": {
                        "toolUseId": "getItemAvailability_0",
                        "content": [
                            {
                                "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]"
                            }
                        ]
                    }
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?"
                }
            ]
        }
    ]
}
```

------
#### [ Text with reasoning ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": "You are a digital assistant with a friendly personality"
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "What country is right next to Australia?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "reasoningContent": {
                        "reasoningText": {
                            "text": "I need to use my world knowledge of geography to answer this question"
                        }
                    }
                },
                {
                    "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea."
                }
            ]
        }
    ]
}
```

------

## Funzionalità supportate
<a name="nova-2-supported-features"></a>

La tabella seguente confronta il supporto delle funzionalità per SFT tra le versioni del modello Nova.


**Supporto delle funzionalità SFT per versione del modello**  

| Funzionalità | SFT su Nova 2.0 | 
| --- | --- | 
| Comprensione del testo | Supportato su Nova 2.0 Lite. Consulta [General/Text comprensione](#sft-general-constraints). | 
| Comprensione delle immagini | Supportato su Nova 2.0 Lite. Consulta [Comprensione delle immagini](#sft-image-understanding). | 
| Comprensione dei video | Supportato su Nova 2.0 Lite. Consulta [Comprensione dei video](#sft-video-understanding). | 
| Comprensione dei documenti | Supportato su Nova 2.0 Lite. Consulta [Comprensione dei documenti](#sft-document-understanding). | 
| Chiamata tramite strumenti | Supportato su Nova 2.0 Lite. Consulta [Chiamata dello strumento](#sft-tool-calling). | 
| Ragionamento | Supportato su Nova 2.0 Lite. Consulta [Ragionamento](#sft-reasoning). | 

## General/Text comprensione
<a name="sft-general-constraints"></a>

Questa sezione riassume i vincoli generali per la preparazione dei dati di formazione SFT su Amazon Nova 2.

**Vincoli**


**Vincoli generali dei set di dati**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formato del set di dati | JSONL (un oggetto JSON per riga). I nomi dei file possono essere composti solo da caratteri alfanumerici, trattini bassi, trattini, barre e punti. | 
| Numero minimo di campioni | 8 | 
| Numero massimo di campioni | 20.000 | 
| Lunghezza del contesto | 32.000 | 
| Omogeneità del set di dati | Un set di dati non può combinare diverse modalità multimediali. Usa testo con immagini, testo con video o testo con documenti, ma non una combinazione. | 
| Parole chiave riservate | User:,Bot:,Assistant:,System:,<image>,<video>,[EOS]. I prompt contenenti queste parole chiave causeranno il fallimento del processo di formazione. Sostituiscili con parole chiave diverse con significati simili. | 

**Best practice**
+ La dimensione minima dei dati per l'ottimizzazione dipende dall'attività (complessa o semplice), ma ti consigliamo di avere almeno 200 campioni per ogni attività che desideri che il modello apprenda.
+ Ti consigliamo di utilizzare il prompt ottimizzato con un’impostazione zero-shot durante l’addestramento e l’inferenza per ottenere i migliori risultati.
+ Dai priorità alla qualità rispetto alla quantità. Alcune centinaia di esempi coerenti e di alta qualità in genere superano migliaia di esempi rumorosi o contraddittori.

**Esempio di input **
+ `schemaVersion` può essere qualsiasi valore di stringa
+ I ruoli supportati sono `user` e `assistant`. Il turno `system` (*opzionale*) può essere un prompt di sistema personalizzato fornito dal cliente.
+ Il primo turno in `messages` deve sempre iniziare con `"role": "user"`. L'ultimo turno è la risposta del bot, indicata con`"role": "assistant"`.

### Text-only esempio
<a name="sft-general-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a digital assistant with a friendly personality"
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "What country is right next to Australia?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "The closest country is New Zealand"
        }
      ]
    }
  ]
}
```

## Comprensione delle immagini
<a name="sft-image-understanding"></a>

SFT supporta la formazione su attività basate su immagini, consentendo al modello di imparare ad analizzare e rispondere alle domande sulle immagini.

**Vincoli**


**Vincoli relativi all'immagine**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formati supportati | PNG, JPEG, GIF, WebP | 
| Numero massimo di immagini per campione | 10 | 
| Dimensione massima dei file di immagine | 10 MB | 
| Omogeneità del set di dati | Un campione può contenere immagini e testo, ma non può avere immagini combinate con altre modalità (video, documenti). | 
| Percorso S3 | image.source.s3Location.uriDeve trovarsi nello stesso bucket Amazon S3 del set di dati. Ad esempio, se il set di dati si trova in s3://amzn-s3-demo-bucket/train/train.jsonl, le immagini o i video devono essere in s3://amzn-s3-demo-bucket | 

**Best practice**
+ Assicurati che le immagini siano di alta qualità e pertinenti all'attività.
+ Fornisci diversi esempi riguardanti diversi tipi di immagini e formati di domande.
+ Includi domande chiare che facciano riferimento ad aspetti specifici del contenuto dell'immagine.

**Esempio di input **

### Esempio di immagine \+ testo
<a name="sft-image-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a helpful assistant."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "image": {
            "format": "jpeg",
            "source": {
              "s3Location": {
                "uri": "s3://your-bucket/your-path/your-image.jpg",
                "bucketOwner": "your-aws-account-id"
              }
            }
          }
        },
        {
          "text": "Which country is highlighted in the image?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "The highlighted country is New Zealand"
        }
      ]
    }
  ]
}
```

## Comprensione dei video
<a name="sft-video-understanding"></a>

SFT supporta la formazione su attività basate su video, consentendo al modello di imparare ad analizzare e rispondere alle domande sui contenuti video.

**Vincoli**


**Vincoli relativi ai video**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formati supportati | MOV, MKV, MP4, WebM | 
| Numero massimo di video per campione | 1 | 
| Dimensione massima dei file video | 50 MB | 
| Durata massima del video | 15 minuti | 
| Omogeneità del set di dati | Un campione può contenere video e testo, ma non può avere video combinato con altre modalità (immagini, documenti). | 
| Percorso S3 | video.source.s3Location.uriDeve trovarsi nello stesso bucket Amazon S3 del set di dati. Ad esempio, se il tuo set di dati è presentes3://amzn-s3-demo-bucket/train/train.jsonl, allora i tuoi video devono esserci s3://amzn-s3-demo-bucket | 

**Best practice**
+ Mantieni i video concisi e concentrati sui contenuti pertinenti alla tua attività.
+ Assicurati che la qualità video sia sufficiente per consentire al modello di estrarre informazioni significative.
+ Fornisci domande chiare che facciano riferimento ad aspetti specifici del contenuto video.
+ Includi diversi esempi riguardanti diversi tipi di video e formati di domande.

**Esempio di input **

### Esempio di video \+ testo
<a name="sft-video-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "What are the ways in which a customer can experience issues during checkout on Amazon?"
        },
        {
          "video": {
            "format": "mp4",
            "source": {
              "s3Location": {
                "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4",
                "bucketOwner": "123456789012"
              }
            }
          }
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?"
        }
      ]
    }
  ]
}
```

## Comprensione dei documenti
<a name="sft-document-understanding"></a>

SFT supporta la formazione sulle attività basate sui documenti, consentendo al modello di imparare ad analizzare e rispondere alle domande sui documenti PDF.

**Vincoli**


**Vincoli relativi ai documenti**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formato supportato | PDF | 
| Dimensione massima del documento | 10 MB | 
| Omogeneità del set di dati | Un campione può contenere documenti e testo, ma non può contenere documenti mescolati con altre modalità (immagini, video). | 
| Percorso S3 | document.source.s3Location.uriDeve trovarsi nello stesso bucket Amazon S3 del set di dati. Ad esempio, se il tuo set di dati è presentes3://amzn-s3-demo-bucket/train/train.jsonl, i tuoi documenti devono essere presenti s3://amzn-s3-demo-bucket | 

**Best practice**
+ Assicurati che i documenti siano formattati in modo chiaro e che il testo sia estraibile.
+ Fornisci diversi esempi riguardanti diversi tipi di documenti e formati di domande.
+ Includi contenuti di ragionamento per aiutare il modello ad apprendere i modelli di analisi dei documenti.

**Esempio di input **

### Documento \+ esempio di testo
<a name="sft-document-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "What are the ways in which a customer can experience issues during checkout on Amazon?"
        },
        {
          "document": {
            "format": "pdf",
            "source": {
              "s3Location": {
                "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf",
                "bucketOwner": "123456789012"
              }
            }
          }
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?"
        }
      ]
    }
  ]
}
```

## Chiamata dello strumento
<a name="sft-tool-calling"></a>

SFT supporta i modelli di addestramento sui modelli di chiamata degli strumenti, consentendo al modello di apprendere quando e come richiamare strumenti o funzioni esterni.

**Vincoli**


**Vincoli di chiamata agli strumenti**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formati supportati | Testo o JSON per i contenuti ToolResult  | 
| ToolUse posizionamento | ToolUse deve comparire solo nei turni di assistente | 
| ToolResult collocamento | ToolResult deve apparire solo nei turni dell'utente | 
| Formato InputSchema | L'InputSchema all'interno di ToolSpec deve essere un oggetto JSON Schema valido | 
| UseId corrispondenza degli strumenti | Ciascuno ToolResult deve fare riferimento a uno strumento valido fornito UseId dall'assistente ToolUse precedente e ogni strumento deve UseId essere utilizzato esattamente una volta per conversazione | 

**Best practice**
+ Assicurati che le definizioni degli strumenti siano coerenti in tutti gli esempi di formazione.
+ Il modello apprende i modelli di richiamo degli strumenti dalle dimostrazioni fornite.
+ Includi diversi esempi di quando usare ogni strumento e quando non usarlo.

**Esempio di input **

### Testo con strumento che chiama sample
<a name="sft-tool-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are an expert in composing function calls."
    }
  ],
  "toolConfig": {
    "tools": [
      {
        "toolSpec": {
          "name": "getItemAvailability",
          "description": "Retrieve whether an item is available in a given location",
          "inputSchema": {
            "json": {
              "type": "object",
              "properties": {
                "zipcode": {
                  "type": "string",
                  "description": "The zipcode of the location to check in"
                },
                "quantity": {
                  "type": "integer",
                  "description": "The number of items to check availability for"
                },
                "item_id": {
                  "type": "string",
                  "description": "The ASIN of item to check availability for"
                }
              },
              "required": ["item_id", "zipcode"]
            }
          }
        }
      }
    ]
  },
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "toolUse": {
            "toolUseId": "getItemAvailability_0",
            "name": "getItemAvailability",
            "input": {
              "zipcode": "94086",
              "quantity": 20,
              "item_id": "id-123"
            }
          }
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "toolResult": {
            "toolUseId": "getItemAvailability_0",
            "content": [
              {
                "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]"
              }
            ]
          }
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?"
        }
      ]
    }
  ]
}
```

## Ragionamento
<a name="sft-reasoning"></a>

Il contenuto del ragionamento (chiamato anche catena di pensiero) cattura le fasi di pensiero intermedie del modello prima di generare una risposta definitiva.

**Vincoli**


**Vincoli di ragionamento**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formato supportato | Solo testo. Image-based i contenuti di ragionamento non sono supportati. | 
| Placement | L'assistente si limita a turni, tramite il reasoningContent campo. | 
| Formattazione | Usa testo semplice. Evita i tag di markup come <thinking> e </thinking> a meno che non siano specificamente richiesti dalla tua attività. | 

**Best practice**
+ High-quality il contenuto del ragionamento dovrebbe includere pensieri intermedi, deduzioni logiche, approcci dettagliati per la risoluzione dei problemi e connessioni esplicite tra fasi e conclusioni.
+ Puoi includere più turni di assistente in conversazioni a più turni. `reasoningContent`
+ Se il tuo set di dati è privo di tracce di ragionamento, puoi crearle utilizzando un modello in grado di ragionare come Nova Premier.

**Esempio di input **

### Testo con esempio di ragionamento
<a name="sft-reasoning-sample"></a>

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a digital assistant with a friendly personality"
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "What country is right next to Australia?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "reasoningContent": {
            "reasoningText": {
              "text": "I need to use my world knowledge of geography to answer this question"
            }
          }
        },
        {
          "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea."
        }
      ]
    }
  ]
}
```

**Note aggiuntive **

Come viene calcolata la perdita:
+ **Con contenuti di ragionamento**: la perdita di formazione include sia i token di ragionamento che i token di output finale.
+ **Senza contenuti di ragionamento**: la perdita di formazione viene calcolata solo sui token di output finali.

Imposta `reasoning_enabled: true` nella tua configurazione di addestramento quando i dati di addestramento contengono token di ragionamento, vuoi che il modello generi token di pensiero prima di produrre i risultati finali o hai bisogno di prestazioni migliorate in attività di ragionamento complesse.

Imposta `reasoning_enabled: false` quando i tuoi dati di allenamento non dispongono di token di ragionamento, ti stai allenando su attività semplici che non traggono beneficio da passaggi di ragionamento espliciti, oppure desideri ottimizzare la velocità e ridurre l'uso dei token.

È consentito addestrare Nova su un set di dati non razionale con. `reasoning_enabled = true` Tuttavia, ciò potrebbe far perdere al modello le sue capacità di ragionamento, poiché Nova impara principalmente a generare le risposte presentate nei dati senza applicare il ragionamento. In generale, abilita il ragionamento sia per l'addestramento che per l'inferenza quando si utilizzano set di dati di ragionamento e disabilitalo per entrambi quando si utilizzano set di dati non di ragionamento.

## Progettazione di esempi di formazione efficaci
<a name="designing-effective-training-examples"></a>

I dati di addestramento dovrebbero dimostrare il * comportamento che * desideri che il modello mostri. SFT insegna al modello * come * rispondere, non * cosa sapere*. Se ti ritrovi a creare esempi di formazione principalmente per inserire conoscenze fattuali (ad esempio, «Cosa significa codice di errore?» E-45 con la risposta "E-45 indica un timeout del sensore»), valutate se RAG o Prompt Engineering potrebbero ottenere lo stesso risultato senza una messa a punto.

Quando converti i dati di origine nel formato conversazionale, segui questi principi:

1. **Inizia da domande di utenti reali. ** L'utente di scrittura fa sì che rispecchi il modo in cui gli utenti finali richiederanno effettivamente il modello in produzione. Evita domande artificiali o eccessivamente semplificate che non riflettono modelli di utilizzo reali.

1. **Scrivi risposte di assistenza all'avanguardia. ** Ogni turno dell'assistente dovrebbe essere la risposta ideale che desideri che il modello produca: corretta, ben formattata e coerente nel tono e nella struttura in tutti gli esempi.

1. **Usa il prompt del sistema in modo strategico. ** Inserisci istruzioni permanenti come il formato di output, la persona e il contesto del dominio nel turno di sistema. Utilizzate lo stesso prompt di sistema sia durante l'addestramento che durante l'inferenza per ottenere i migliori risultati.

1. **Mantieni gli esempi concentrati su un'abilità per campione. ** Se hai bisogno del modello per classificare, rispondere alle domande e riepilogare, crea set di esempi separati per ciascuna abilità anziché combinare più competenze in un unico campione.

1. **Dai priorità alla qualità rispetto alla quantità. ** Alcune centinaia di esempi coerenti e di alta qualità in genere superano migliaia di esempi rumorosi o contraddittori. Deduplica e rivedi i tuoi dati prima dell'allenamento.

### Schemi comuni di trasformazione dei dati
<a name="common-data-transformation-patterns"></a>

I modelli seguenti illustrano come convertire i formati di dati aziendali comuni in efficaci esempi di formazione SFT.

**Modello 1: record strutturati per la classificazione o la ricerca**  
Quando i dati di origine sono una tabella o un database di record con campi quali, e `issue` `cause``resolution`, inquadra ogni record come una domanda dell'utente con i campi di input pertinenti e la risposta dell'assistente come campi di output di destinazione.

```
// train.jsonl
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a technical support assistant. Given an issue description, identify the most likely root cause and recommended resolution."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "A user reports: 'Application crashes on startup after the latest update.' What is the likely cause and resolution?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Cause: Incompatible configuration file from the previous version.\nResolution: Delete the local configuration cache and restart the application to regenerate default settings."
        }
      ]
    }
  ]
}
```

**Schema 2: dati gerarchici o tassonomici su Q A strutturato &amp;**  
Quando i dati di origine sono una gerarchia di codice o una tassonomia, ad esempio alberi di categorie di prodotti o sistemi di classificazione, genera domande che chiedano al modello di navigare nella gerarchia. Includete il contesto di classificazione nel prompt del sistema o nel turno dell'utente.

```
// train.jsonl
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a product catalog assistant. Answer questions about product categories and classifications accurately."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "What top-level category does product code 'EL-4520' belong to, and what subcategories does it include?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Product code EL-4520 belongs to the Electronics category. It includes the subcategories: Audio Equipment, Portable Speakers, and Wireless Accessories."
        }
      ]
    }
  ]
}
```

**Schema 3: dai documenti procedurali al dialogo didattico**  
Quando i dati di origine sono costituiti da procedure operative standard, runbook o guide dettagliate, converti le procedure in domande orientate alle attività. L'utente chiede come eseguire un'operazione e l'assistente fornisce i passaggi in un formato coerente.

```
// train.jsonl
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are an IT operations assistant. Provide step-by-step instructions based on approved runbooks and standard operating procedures."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "How do I reset a user's multi-factor authentication when they have lost access to their device?"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "Follow these steps to reset a user's multi-factor authentication:\n1. Verify the user's identity using the approved verification procedure.\n2. Disable the existing MFA configuration in the identity management console.\n3. Generate a new temporary access code and send it to the user's verified email.\n4. Instruct the user to log in with the temporary code and re-enroll their new device.\n5. Confirm the new MFA device is working by requesting a test authentication.\n6. Document the reset in the support ticket."
        }
      ]
    }
  ]
}
```

**Nota**  
Nei modelli 1 e 2, se il contenuto fattuale (come codici, categorie o risoluzioni) non è già presente nei dati di pre-addestramento del modello, valuta la possibilità di utilizzare RAG per fornire queste informazioni al momento dell'inferenza anziché affidarsi esclusivamente a SFT per memorizzarle. La SFT è più efficace per insegnare al modello il formato di risposta e il modello di ragionamento, mentre RAG si occupa della base fattuale.