

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Finalización de texto de Mistral AI
<a name="model-parameters-mistral-text-completion"></a>

La API de finalización de texto de Mistral AI le permite generar texto con un modelo de Mistral AI.

Puede realizar solicitudes de inferencia a modelos 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) (transmisión). 

Los modelos de Mistral AI están disponibles con la [licencia de Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt). Para obtener más información sobre el uso de modelos de Mistral AI, consulte la [documentación de Mistral AI](https://docs.mistral.ai/).

**Topics**
+ [Modelos compatibles](#mistral--text-completion-supported-models)
+ [Solicitud y respuesta](#model-parameters-mistral-text-completion-request-response)
+ [Ejemplo de código](#api-inference-examples-mistral-text-completion)

## Modelos compatibles
<a name="mistral--text-completion-supported-models"></a>

Puede utilizar los siguientes modelos de Mistral AI.
+ Mistral 7B Instruct
+ Mixtral 8X7B Instruct
+ Mistral Large
+ Mistral Small

Necesitará el ID de modelo del modelo que desee utilizar. Para obtener el ID del modelo, consulte [Modelos fundacionales compatibles en Amazon Bedrock](models-supported.md). 

## Solicitud y respuesta
<a name="model-parameters-mistral-text-completion-request-response"></a>

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

Los modelos de Mistral AI tienen los siguientes parámetros de inferencia. 

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

Los siguientes parámetros son obligatorios.
+  **prompt**: (obligatorio) es la petición que desea pasar al modelo, tal y como se muestra en el siguiente ejemplo. 

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

  En el siguiente ejemplo se muestra cómo dar formato a una petición de varios 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]
  ```

  El texto del rol de usuario está dentro de los tokens `[INST]...[/INST]` y el texto exterior corresponde al rol de asistente. El principio y el final de una cadena se representan mediante los tokens `<s>` (principio de la cadena) y `</s>` (final de la cadena). Para obtener información sobre cómo enviar una petición de chat en el formato correcto, consulte [Chat template](https://docs.mistral.ai/models/#chat-template) en la documentación de Mistral AI. 

Los siguientes son parámetros opcionales.
+ **max\$1tokens**: especifique la cantidad máxima de tokens para usar en la respuesta generada. El modelo trunca la respuesta una vez que el texto generado excede `max_tokens`.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **stop**: lista de secuencias de parada que, si las genera el modelo, impiden que este genere más resultados.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **temperature**: controla la asignación al azar de las predicciones realizadas por el modelo. Para obtener más información, consulte [Influencia sobre la generación de respuestas con parámetros de inferencia](inference-parameters.md).     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top\$1p**: controla la diversidad de texto que genera el modelo al establecer el porcentaje de candidatos más probables que considera el modelo para el siguiente token. Para obtener más información, consulte [Influencia sobre la generación de respuestas con parámetros de inferencia](inference-parameters.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)
+ **top\$1k**: es el número de candidatos más probables que el modelo considera para el siguiente token. Para obtener más información, consulte [Influencia sobre la generación de respuestas con parámetros de inferencia](inference-parameters.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/model-parameters-mistral-text-completion.html)

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

La respuesta `body` de una llamada a `InvokeModel` es la siguiente:

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

La respuesta `body` tiene los siguientes campos posibles:
+ **outputs**: lista de las salidas del modelo. Cada salida incluye los siguientes campos.
  + **text**: texto que ha generado el modelo. 
  + **stop\$1reason**: motivo por el que la respuesta ha dejado de generar texto. Los valores posibles son los siguientes:
    + **stop**: el modelo ha terminado de generar texto para la solicitud de entrada. El modelo se detiene porque ya no genera más contenido o si el modelo genera una de las secuencias de parada que se han definido en el parámetro de solicitud `stop`.
    + **length**: la longitud de los tokens del texto generado supera el valor de `max_tokens` en la llamada a `InvokeModel` (`InvokeModelWithResponseStream`, si está transmitiendo la salida). La respuesta se trunca en tokens `max_tokens`. 

------

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

En este ejemplo se muestra cómo llamar al 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()
```