Text Completion da Mistral AI - Amazon Bedrock

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 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 ou InvokeModelWithResponseStream (streaming).

Os modelos da Mistral AI estão disponíveis sob a licença do Apache 2.0. Para obter mais informações sobre o uso dos modelos da Mistral AI, consulte a documentação da Mistral AI.

Modelos compatíveis

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

Solicitação e reposta

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 na documentação da Mistral AI.

Veja a seguir os parâmetros opcionais.

  • max_tokens: 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.

    Padrão Mínimo Máximo

    Mistral 7B Instruct: 512

    Mixtral 8X7B Instruct: 512

    Mistral Large: 8.192

    Mistral Small: 8.192

    1

    Mistral 7B Instruct: 8.192

    Mixtral 8X7B Instruct: 4.096

    Mistral Large: 8.192

    Mistral Small: 8.192

  • stop: uma lista de sequências de parada que, se geradas pelo modelo, impedem que o modelo gere mais resultados.

    Padrão Mínimo Máximo

    0

    0

    10

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

    Padrão Mínimo Máximo

    Mistral 7B Instruct: 0,5

    Mixtral 8X7B Instruct: 0,5

    Mistral Large: 0,7

    Mistral Small: 0,7

    0

    1

  • top_p: 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.

    Padrão Mínimo Máximo

    Mistral 7B Instruct 0,9

    Mixtral 8X7B Instruct 0,9

    Mistral Large: 1

    Mistral Small: 1

    0

    1

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

    Padrão Mínimo Máximo

    Mistral 7B Instruct: 50

    Mixtral 8X7B Instruct: 50

    Mistral Large: desabilitado

    Mistral Small: desabilitado

    1

    200

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_reason: 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

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()