Mistral AI テキスト補完 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Mistral AI テキスト補完

Mistral AI テキスト補完 API を使用すると、Mistral AIモデルでテキストを生成できます。

InvokeModel または InvokeModelWithResponseStream (ストリーミング) を使用して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 }

必須パラメータを以下に示します。

  • prompt – (必須) 次の例に示すように、モデルに渡すプロンプト。

    <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_tokens – 生成されたレスポンスで使用するトークンの最大数を指定します。生成されたテキストの長さが 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

  • stop – モデルによって生成された場合、モデルがそれ以上出力を生成するのを停止する停止シーケンスのリスト。

    デフォルト値 最小値 最大値

    0

    0

    10

  • temperature – モデルによって行われた予測のランダム性を制御します。詳細については、「推論パラメータによる影響レスポンスの生成」を参照してください。

    デフォルト値 最小値 最大値

    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 レスポンスに指定できるフィールドについて説明します。

  • 出力 – モデルからの出力のリスト。各出力には次のフィールドがあります。

    • text – モデルが生成したテキスト。

    • stop_reason – レスポンスがテキストの生成を停止した理由。可能な値は以下のとおりです。

      • 停止 - モデルは入力プロンプトのテキストの生成を終了しました。モデルは、生成するコンテンツがもうないため、またはstopリクエストパラメータで定義した停止シーケンスの 1 つがモデルによって生成された場合に停止します。

      • 長さ - 生成されたテキストにおけるトークンの長さが 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()