本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Mistral AI 文字完成 API 可讓您使用Mistral AI模型產生文字。
您可以使用 InvokeModel 或 InvokeModelWithResponseStream (串流) 對Mistral AI模型提出推論請求。
Mistral AI 模型可在 Apache 2.0 授權
支援的模型
您可以使用下列Mistral AI模型。
Mistral 7B Instruct
Mixtral 8X7B Instruct
Mistral Large
Mistral Small
您需要您想要使用的模型的模型 ID。若要取得模型 ID,請參閱 Amazon Bedrock 中支援的基礎模型。
請求與回應
這些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
程式碼範例
此範例示範如何呼叫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()