

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Text Completion da Mistral AI
<a name="model-parameters-mistral-text-completion"></a>

A API Text Completion da Mistral AI permite gerar texto com um modelo da Mistral AI.

Você faz solicitações de inferência a modelos da Mistral AI com [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) ou [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) (streaming). 

Os modelos da Mistral AI estão disponíveis sob a [licença do Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt). Para obter mais informações sobre o uso dos modelos da Mistral AI, consulte a [documentação da Mistral AI](https://docs.mistral.ai/).

**Topics**
+ [Modelos compatíveis](#mistral--text-completion-supported-models)
+ [Solicitação e reposta](#model-parameters-mistral-text-completion-request-response)
+ [Exemplo de código](#api-inference-examples-mistral-text-completion)

## Modelos compatíveis
<a name="mistral--text-completion-supported-models"></a>

É possível usar os modelos Mistral AI a seguir.
+ Mistral 7B Instruct
+ Mixtral 8X7B Instruct
+ Mistral Large
+ Mistral Small

É necessário o ID do modelo que deseja usar. Para obter o ID do modelo, consulte [Modelos de base compatíveis no Amazon Bedrock](models-supported.md). 

## Solicitação e reposta
<a name="model-parameters-mistral-text-completion-request-response"></a>

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

Os modelos da Mistral AI têm os parâmetros de inferência a seguir. 

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

Veja a seguir os parâmetros necessários.
+  **prompt**: (obrigatório) o prompt que você deseja enviar ao modelo, conforme mostrado no exemplo a seguir. 

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

  O exemplo a seguir mostra como formatar um prompt com vários turnos. 

  ```
  <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]
  ```

  O texto do perfil do usuário está dentro dos tokens `[INST]...[/INST]`, o texto externo é o perfil do assistente. O início e o final de uma string são representados pelos tokens `<s>` (início da string) e `</s>` (final da string). Para obter informações sobre como enviar um prompt de chat no formato correto, consulte os [modelos de chat](https://docs.mistral.ai/models/#chat-template) na documentação da Mistral AI. 

Veja a seguir os parâmetros opcionais.
+ **max\$1tokens**: especifique o número máximo de tokens a serem usados na resposta gerada. O modelo trunca a resposta quando o texto gerado excede `max_tokens`.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **stop**: uma lista de sequências de parada que, se geradas pelo modelo, impedem que o modelo gere mais resultados.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **temperature**: controla a randomização das previsões feitas pelo modelo. Para obter mais informações, consulte [Geração de resposta de influência com parâmetros de inferência](inference-parameters.md).     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top\$1p**: controla a diversidade do texto gerado pelo modelo ao definir a porcentagem de candidatos mais prováveis que o modelo considera para o próximo token. Para obter mais informações, consulte [Geração de resposta de influência com parâmetros de inferência](inference-parameters.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top-k**: controla o número de candidatos mais prováveis que o modelo considera para o próximo token. Para obter mais informações, consulte [Geração de resposta de influência com parâmetros de inferência](inference-parameters.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)

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

A resposta `body` de uma chamada para `InvokeModel` é a seguinte:

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

A resposta do `body` tem os seguintes campos:
+ **outputs**: uma lista de saídas do modelo. Cada saída tem os campos a seguir.
  + **text**: o texto gerado pelo modelo. 
  + **stop\$1reason**: o motivo pelo qual a resposta parou de gerar texto. Os valores possíveis são:
    + **interromper**: o modelo terminou de gerar texto para o prompt de entrada. O modelo para porque não tem mais conteúdo para gerar ou se o modelo gerar uma das sequências de parada que você define no parâmetro de solicitação `stop`.
    + **length**: o tamanho dos tokens do texto gerado excede o valor de `max_tokens` na chamada a `InvokeModel` (`InvokeModelWithResponseStream`, se você estiver transmitindo uma saída). A resposta é truncada em tokens `max_tokens`. 

------

## Exemplo de código
<a name="api-inference-examples-mistral-text-completion"></a>

Este exemplo mostra como chamar o modelo 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()
```