翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CohereCommand R および Command R+モデル
InvokeModel または InvokeModelWithResponseStream (ストリーミング) を使用して、 CohereCommand Rおよび CohereCommand R+モデルに推論リクエストを行います。このとき、使用するモデルのモデル ID が必要になります。モデル ID を取得するには、「」を参照してくださいAmazon Bedrock モデル IDs。
会話型アプリケーションの場合は、Converse API を使用することをお勧めします。Converse API は、メッセージをサポートするすべてのモデルで動作するパラメータの統合セットを提供します。詳細については、「会話を使用する API」を参照してください。
リクエストとレスポンス
- Request
-
Cohere Command モデルには次の推論パラメータがあります。
{
"message": string,
"chat_history": [
{
"role":"USER or CHATBOT
",
"message": string
}
],
"documents": [
{"title": string, "snippet": string},
],
"search_queries_only" : boolean,
"preamble" : string,
"max_tokens": int,
"temperature": float,
"p": float,
"k": float,
"prompt_truncation" : string,
"frequency_penalty" : float,
"presence_penalty" : float,
"seed" : int,
"return_prompt" : boolean,
"tools" : [
{
"name": string,
"description": string,
"parameter_definitions": {
"parameter name
": {
"description": string,
"type": string,
"required": boolean
}
}
}
],
"tool_results" : [
{
"call": {
"name": string,
"parameters": {
"parameter name
": string
}
},
"outputs": [
{
"text
": string
}
]
}
],
"stop_sequences": [string],
"raw_prompting" : boolean
}
必須パラメータを以下に示します。
オプションのパラメータを以下に示します。
-
chat_history – ユーザーとモデル間の以前のメッセージのリスト。ユーザーのメッセージに応答するための会話コンテキストをモデルに与えることを目的としています。
以下は必須フィールドです。
以下は、 chat_history
フィールドの JSON の例です。
"chat_history": [
{"role": "USER", "message": "Who discovered gravity?"},
{"role": "CHATBOT", "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton"}
]
-
documents – より正確な返信を生成するためにモデルが引用できるテキストのリスト。各ドキュメントは文字列文字列ディクショナリです。結果の生成には、これらのドキュメントの一部を参照する引用が含まれています。ディクショナリの文字列の単語数の合計を 300 語未満にしておくことをお勧めします。_excludes
フィールド (文字列の配列) をオプションで指定して、一部のキーと値のペアがモデルに表示されないようにすることができます。詳細については、 Cohereドキュメントのドキュメントモードガイドを参照してください。
以下は、 documents
フィールドの JSON の例です。
"documents": [
{"title": "Tall penguins", "snippet": "Emperor penguins are the tallest."},
{"title": "Penguin habitats", "snippet": "Emperor penguins only live in Antarctica."}
]
-
search_queries_only – デフォルトは ですfalse
。の場合true
、レスポンスには生成された検索クエリのリストのみが含まれますが、検索は行われず、モデルからユーザーの への返信message
も生成されません。
-
preamble – 検索クエリ生成のデフォルトのプリアンブルを上書きします。ツールの使用世代には影響しません。
-
max_tokens – モデルがレスポンスの一部として生成するトークンの最大数。値を低く設定すると、世代が不完全になる可能性があることに注意してください。を設定すると、 または documents
フィールドで使用すると、世代が不完全tools
になったり、世代がなくなるmax_tokens
可能性があります。
-
temperature – 低い値を使用してレスポンスのランダム性を減らします。ランダム性は、 p
パラメータの値を増やすことでさらに最大化できます。
-
p – 上位 P。低い値を使用して、可能性の低いオプションを無視します。
デフォルト値 |
最小値 |
最大値 |
0.75
|
0.01
|
0.99
|
-
k – トップ K。モデルが次のトークンの生成に使用するトークンの選択数を指定します。
-
prompt_truncation – デフォルトは ですOFF
。プロンプトの構築方法を指定します。を prompt_truncation
に設定するchat_history
とAUTO_PRESERVE_ORDER
、 と の一部の要素documents
がドロップされ、モデルのコンテキストの長さ制限内に収まるプロンプトが作成されます。このプロセス中、ドキュメントとチャット履歴の順序は保持されます。prompt_truncation
` を に設定するとOFF
、要素は削除されません。
-
frequency_penalty – 生成されたトークンの反復性を減らすために使用されます。値が大きいほど、以前に存在したトークンにペナルティが適用され、プロンプトまたは以前の世代に既に出現した回数に比例します。
-
presence_penalty – 生成されたトークンの反復性を減らすために使用されます。に似ていますがfrequency_penalty
、このペナルティは、正確な頻度に関係なく、既に出現しているすべてのトークンに等しく適用されます。
-
seed – 指定した場合、バックエンドはトークンを確定的にサンプリングするために最善を尽くします。これにより、同じシードとパラメータを持つリクエストが繰り返されても同じ結果が返されます。ただし、決定論を完全に保証することはできません。
-
return_prompt – モデルtrue
に送信された完全なプロンプトを返すように を指定します。デフォルト値は、false
です。レスポンスでは、 prompt
フィールドのプロンプト。
-
ツール – テキストレスポンスを生成する前にモデルが呼び出すことを提案する可能性のある利用可能なツール (関数) のリスト。tools
が渡されると ( なしtool_results
)、レスポンスの text
フィールドは ""
になり、レスポンスの tool_calls
フィールドには、実行する必要があるツール呼び出しのリストが入力されます。呼び出しを行う必要がない場合、tool_calls
配列は空になります。
詳細については、 Cohereドキュメントの「ツールの使用」を参照してください。
以下は、 tools
フィールドの JSON の例です。
[
{
"name": "top_song",
"description": "Get the most popular song played on a radio station.",
"parameter_definitions": {
"sign": {
"description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP.",
"type": "str",
"required": true
}
}
}
]
詳細については、 Cohereドキュメントの「シングルステップツールの使用 (関数呼び出し)」を参照してください。
-
tools_results – 前のチャットターンでモデルが推奨するツールを呼び出した結果のリスト。結果はテキストレスポンスの生成に使用され、引用で参照されます。を使用する場合tool_results
、 も渡すtools
必要があります。各 には、呼び出し方法に関する情報と、ディクショナリの形式の出力のリストtool_result
が含まれています。Cohere 独自のきめ細かな引用ロジックでは、出力をリストにする必要があります。出力が などの 1 つの項目のみである場合は{"status": 200}
、リスト内にラップする必要があります。
詳細については、 Cohereドキュメントの「ツールの使用」を参照してください。
以下は、 tools_results
フィールドの JSON の例です。
[
{
"call": {
"name": "top_song",
"parameters": {
"sign": "WZPZ"
}
},
"outputs": [
{
"song": "Elemental Hotel"
}
]
}
]
-
stop_sequences – 停止シーケンスのリスト。停止シーケンスが検出されると、モデルは追加のトークンの生成を停止します。
-
raw_prompting – を指定してtrue
、前処理を行わずにユーザーの message
をモデルに送信します。それ以外の場合は false です。
- Response
-
このレスポンスに指定できるフィールドについて説明します。
{
"response_id": string,
"text": string,
"generation_id": string,
"citations": [
{
"start": int,
"end": int,
"text": "string",
"document_ids": [
"string"
]
}
],
"finish_reason": string,
"tool_calls": [
{
"name": string,
"parameters": {
"parameter name
": string
}
}
],
{
"meta": {
"api_version": {
"version": string
},
"billed_units": {
"input_tokens": int,
"output_tokens": int
}
}
}
-
response_id — チャット完了の一意の識別子
-
text — チャットメッセージ入力に対するモデルの応答。
-
generation_id — Cohere のプラットフォームのフィードバックエンドポイントで使用されるチャット完了の一意の識別子。
-
citations — 生成された返信のインライン引用および関連するメタデータの配列。次のフィールドが含まれます。
-
start — 引用が開始するインデックス。0 から開始します。
-
end — 引用が終了するインデックス。0 から開始します。
-
text — 引用が関係するテキスト。
-
document_ids — テキストに引用されているドキュメントに対応するドキュメント IDs の配列。
-
prompt — モデルに送信された完全なプロンプト。return_prompt
このフィールドを返すフィールドを指定します。
-
finish_reason — モデルが出力の生成を停止した理由。次のいずれかとなります。
-
complete — 完了は生成トークンの終了に達しました。これが最高のパフォーマンスを得るための終了理由であることを確認してください。
-
error_toxic — コンテンツフィルターのため、生成を完了できませんでした。
-
error_limit — モデルのコンテキスト制限に達したため、生成を完了できませんでした。
-
error — エラーのため、生成を完了できませんでした。
-
user_cancel — ユーザーによって停止されたため、生成を完了できませんでした。
-
max_tokens — ユーザーがリクエストでmax_tokens
制限を指定し、この制限に達したため、生成を完了できませんでした。最高のパフォーマンスが得られない可能性があります。
-
tool_calls – 呼び出しに適したツールのリスト。tools
入力フィールドを指定した場合のみ返されます。
詳細については、 Cohereドキュメントの「ツールの使用」を参照してください。
以下は、 tool_calls
フィールドの JSON の例です。
[
{
"name": "top_song",
"parameters": {
"sign": "WZPZ"
}
}
]
-
meta — API 使用状況データ (ストリーミングにのみ存在します)。
コード例
この例は、CohereCommand Rモデルを呼び出す方法を示しています。
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use the Cohere Command R 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 Cohere Command R model.
Args:
model_id (str): The model ID to use.
body (str) : The reqest body to use.
Returns:
dict: The response from the model.
"""
logger.info("Generating text with Cohere 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 Cohere Command R model %s", model_id)
return response
def main():
"""
Entrypoint for Cohere example.
"""
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
model_id = 'cohere.command-r-v1:0'
chat_history = [
{"role": "USER", "message": "What is an interesting new role in AI if I don't have an ML background?"},
{"role": "CHATBOT", "message": "You could explore being a prompt engineer!"}
]
message = "What are some skills I should have?"
try:
body = json.dumps({
"message": message,
"chat_history": chat_history,
"max_tokens": 2000,
"temperature": 0.6,
"p": 0.5,
"k": 250
})
response = generate_text(model_id=model_id,
body=body)
response_body = json.loads(response.get('body').read())
response_chat_history = response_body.get('chat_history')
print('Chat history\n------------')
for response_message in response_chat_history:
if 'message' in response_message:
print(f"Role: {response_message['role']}")
print(f"Message: {response_message['message']}\n")
print("Generated text\n--------------")
print(f"Stop reason: {response_body['finish_reason']}")
print(f"Response text: \n{response_body['text']}")
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 Cohere model {model_id}.")
if __name__ == "__main__":
main()