Mistral AI文字补全 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Mistral AI文字补全

Mistral AI文本补全 API 允许您使用Mistral AI模型生成文本。

您可以使用InvokeModelInvokeModelWithResponseStream(流式传输)向Mistral AI模型发出推理请求。

Mistral AI模型在 Apache 2.0 许可下可用。有关使用Mistral AI模型的更多信息,请参阅Mistral AI文档

支持的型号

您可以使用以下Mistral AI模型。

  • Mistral 7B Instruct

  • Mixtral 8X7B Instruct

  • Mistral Large

  • Mistral Small

您需要获得希望使用的模型的模型 ID。要获取模型 ID,请参阅Amazon Bedrock 模型 IDs

请求和响应

Request

这些Mistral AI模型具有以下推理参数。

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

以下是必要参数。

  • p rompt —(必填)要传递给模型的提示,如以下示例所示。

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

    以下示例说明如何格式化多回合提示音。

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

    用户角色的文本位于[INST]...[/INST]令牌内,外部的文本为助理角色。字符串的开头和结尾由<s>(字符串的开头)和</s>(字符串的结尾)标记表示。有关以正确格式发送聊天提示的信息,请参阅Mistral AI文档中的聊天模板

以下是可选参数。

  • max_token s — 指定要在生成的响应中使用的最大令牌数。一旦生成的文本超过 max_tokens,模型就会截断响应。

    默认 最低 最高

    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

  • st@@ op — 停止序列列表,如果由模型生成,则停止模型生成进一步的输出。

    默认 最低 最高

    0

    0

    10

  • 温度-控制模型所做预测的随机性。有关更多信息,请参阅 使用推理参数生成影响响应

    默认 最低 最高

    Mistral 7B Instruct— 0.5

    Mixtral 8X7B Instruct— 0.5

    Mistral Large— 0.7

    Mistral Small— 0.7

    0

    1

  • top_p — 通过设置模型考虑的下一个标记中最有可能的候选文本的百分比,来控制模型生成的文本的多样性。有关更多信息,请参阅 使用推理参数生成影响响应

    默认 最低 最高

    Mistral 7B Instruct— 0.9

    Mixtral 8X7B Instruct— 0.9

    Mistral Large— 1

    Mistral Small— 1

    0

    1

  • top_k — 控制模型考虑的下一个代币中最有可能的候选人的数量。有关更多信息,请参阅 使用推理参数生成影响响应

    默认 最低 最高

    Mistral 7B Instruct— 50

    Mixtral 8X7B Instruct— 50

    Mistral Large— 已禁用

    Mistral Small— 已禁用

    1

    200

Response

以下是来自对 InvokeModel 的调用的 body 响应。

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

body 响应含有以下值:

  • 输出-模型的输出列表。每个输出都有以下字段。

    • 文本-模型生成的文本。

    • stop_ reason — 响应停止生成文本的原因。可能的值有:

      • stop – 模型已结束为输入提示生成文本。模型之所以停止,是因为它没有更多内容要生成,或者模型生成了您在stop请求参数中定义的停止序列之一。

      • length – 生成的文本的令牌长度超过了对 InvokeModel(如果您要对输出进行流式传输,则为 InvokeModelWithResponseStream)的调用中的 max_tokens 值。响应被截断为 max_tokens 个令牌。

代码示例

此示例说明如何调用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()