

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à.

# Completamento del testo Mistral AI
<a name="model-parameters-mistral-text-completion"></a>

L’API di completamento del testo Mistral AI consente di generare testo con un modello Mistral AI.

Effettui richieste di inferenza ai modelli Mistral AI con [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) o [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) (streaming). 

I modelli Mistral AI sono disponibili con la [licenza Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt). Per ulteriori informazioni sull’utilizzo dei modelli Mistral AI, consulta la [Documentazione di Mistral AI](https://docs.mistral.ai/).

**Topics**
+ [Modelli supportati](#mistral--text-completion-supported-models)
+ [Richiesta e risposta](#model-parameters-mistral-text-completion-request-response)
+ [Esempio di codice](#api-inference-examples-mistral-text-completion)

## Modelli supportati
<a name="mistral--text-completion-supported-models"></a>

Puoi utilizzare i seguenti modelli Mistral AI.
+ Mistral 7B Instruct
+ Mixtral 8X7B Instruct
+ Mistral Large
+ Mistral Small

È necessario l’ID modello per il modello che desideri utilizzare. Per ottenere l’ID modello, consulta [Modelli di fondazione supportati in Amazon Bedrock](models-supported.md). 

## Richiesta e risposta
<a name="model-parameters-mistral-text-completion-request-response"></a>

------
#### [ Request ]

I modelli Mistral AI hanno i seguenti parametri di inferenza. 

```
{
    "prompt": string,
    "max_tokens" : int,
    "stop" : [string],    
    "temperature": float,
    "top_p": float,
    "top_k": int
}
```

I seguenti sono parametri obbligatori.
+  **prompt**: (obbligatorio) Il prompt che desideri passare al modello, come mostrato nell’esempio seguente. 

  ```
  <s>[INST] What is your favourite condiment? [/INST]
  ```

  L’esempio seguente mostra come formattare un prompt a più turni. 

  ```
  <s>[INST] What is your favourite condiment? [/INST]
  Well, I'm quite partial to a good squeeze of fresh lemon juice. 
  It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!</s> 
  [INST] Do you have mayonnaise recipes? [/INST]
  ```

  Il testo per il ruolo utente si trova all’interno dei token `[INST]...[/INST]`, il testo all’esterno è il ruolo di assistente. L’inizio e la fine di una stringa sono rappresentati dai token `<s>` (inizio di stringa) e `</s>` (fine di stringa). Per informazioni sull’invio di un prompt di chat nel formato corretto, consulta [Modello di chat](https://docs.mistral.ai/models/#chat-template) nella documentazione Mistral AI. 

I seguenti sono parametri opzionali.
+ **max\_tokens**: specifica il numero massimo di token da utilizzare nella risposta generata. Il modello tronca la risposta se il testo generato supera `max_tokens`.     
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **stop**: un elenco di sequenze di arresti che, se generate dal modello, impediscono al modello di generare ulteriore output.     
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **temperature**: controlla la casualità delle previsioni fatte dal modello. Per ulteriori informazioni, consulta [Influenza sulla generazione della risposta con i parametri di inferenza](inference-parameters.md).     
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top\_p**: controlla la diversità di testo che il modello genera impostando la percentuale di candidati più probabili che il modello considera per il token successivo. Per ulteriori informazioni, consulta [Influenza sulla generazione della risposta con i parametri di inferenza](inference-parameters.md).    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top\_k**: il numero di candidati più probabili che il modello considera per il token successivo. Per ulteriori informazioni, consulta [Influenza sulla generazione della risposta con i parametri di inferenza](inference-parameters.md).    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)

------
#### [ Response ]

Di seguito è riportata la risposta `body` da una chiamata `InvokeModel`:

```
{
  "outputs": [
    {
        "text": string,
        "stop_reason": string
    }
  ]
}
```

La risposta `body` ha i seguenti campi:
+ **outputs**: un elenco di output del modello. Ogni voce ha i campi riportati di seguito:
  + **text**: il testo generato dal modello. 
  + **stop\_reason**: il motivo per cui la risposta ha smesso di generare testo. I valori possibili sono:
    + **stop**: il modello ha terminato la generazione del testo per il prompt di input. Il modello si arresta perché non ha più contenuto da generare oppure se genera una delle sequenze di arresti definite nel parametro di richiesta `stop`.
    + **length**: la lunghezza dei token per il testo generato supera il valore di `max_tokens` nella chiamata a `InvokeModel` (`InvokeModelWithResponseStream`, nel caso di streaming dell’output). La risposta viene troncata in base ai token `max_tokens`. 

------

## Esempio di codice
<a name="api-inference-examples-mistral-text-completion"></a>

Questo esempio mostra come chiamare il modello Mistral 7B Instruct.

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to generate text using a Mistral AI model.
"""
import json
import logging
import boto3


from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_text(model_id, body):
    """
    Generate text using a Mistral AI model.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        JSON: The response from the model.
    """

    logger.info("Generating text with Mistral AI model %s", model_id)

    bedrock = boto3.client(service_name='bedrock-runtime')

    response = bedrock.invoke_model(
        body=body,
        modelId=model_id
    )

    logger.info("Successfully generated text with Mistral AI model %s", model_id)

    return response


def main():
    """
    Entrypoint for Mistral AI example.
    """

    logging.basicConfig(level=logging.INFO,
                        format="%(levelname)s: %(message)s")

    try:
        model_id = 'mistral.mistral-7b-instruct-v0:2'

        prompt = """<s>[INST] In Bash, how do I list all text files in the current directory
          (excluding subdirectories) that have been modified in the last month? [/INST]"""

        body = json.dumps({
            "prompt": prompt,
            "max_tokens": 400,
            "temperature": 0.7,
            "top_p": 0.7,
            "top_k": 50
        })

        response = generate_text(model_id=model_id,
                                 body=body)

        response_body = json.loads(response.get('body').read())

        outputs = response_body.get('outputs')

        for index, output in enumerate(outputs):

            print(f"Output {index + 1}\n----------")
            print(f"Text:\n{output['text']}\n")
            print(f"Stop reason: {output['stop_reason']}\n")

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    else:
        print(f"Finished generating text with Mistral AI model {model_id}.")


if __name__ == "__main__":
    main()
```