Amazon Titan Text モデル - Amazon Bedrock

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

Amazon Titan Text モデル

Amazon Titan Text モデルは、次の推論パラメータをサポートしています。

Titan テキストプロンプトエンジニアリングガイドラインの詳細については、Titan「テキストプロンプトエンジニアリングガイドライン」を参照してください。

Titan モデルの詳細については、「」を参照してくださいAmazon Titanモデル

リクエストとレスポンス

リクエスト本文は、 InvokeModelまたは InvokeModelWithResponseStream リクエストの bodyフィールドに渡されます。

Request
{ "inputText": string, "textGenerationConfig": { "temperature": float, "topP": float, "maxTokenCount": int, "stopSequences": [string] } }

以下のパラメータは必須です。

  • inputText – レスポンスを生成するためのモデルを提供するプロンプト。会話形式でレスポンスを生成するには、次の形式を使用してプロンプトをラップします。

    "inputText": "User: <prompt>\nBot:

textGenerationConfig はオプションです。これを使用して、次の推論パラメータ を設定できます。

  • temperature – 低い値を使用してレスポンスのランダム性を減らします。

    デフォルト値 最小値 最大値
    0.7 0.0 1.0
  • topP – 低い値を使用して、可能性の低いオプションを無視し、レスポンスの多様性を減らします。

    デフォルト値 最小値 最大値
    0.9 0.0 1.0
  • 最大TokenCount – レスポンスで生成するトークンの最大数を指定します。最大トークン制限は厳密に適用されます。

    モデル デフォルト値 最小値 最大値
    Titan Text Lite 512 0 4,096
    Titan Text Express 512 0 8,192
    Titan Text プレミアム 512 0 3,072
  • stopSequences – モデルを停止する場所を示す文字シーケンスを指定します。

InvokeModel Response

レスポンス本文には、次のフィールドが含まれます。

{ 'inputTextTokenCount': int, 'results': [{ 'tokenCount': int, 'outputText': '\n<response>\n', 'completionReason': string }] }

各フィールドの詳細は以下のとおりです。

  • inputTextTokenCount - プロンプト内のトークンの数。

  • tokenCount - レスポンス内のトークンの数。

  • outputText - レスポンス内のテキスト。

  • completionReason - レスポンスの生成が終了した理由。理由の候補としては、以下があります。

    • FINISHED - レスポンスは完全に生成されました。

    • LENGTH - 設定したレスポンスの長さにより、レスポンスが切り捨てられました。

    • STOP_CRITERIA_MET – 停止基準に達したため、レスポンスは切り捨てられました。

    • RAG_QUERY_WHEN_RAG_DISABLED – この機能は無効になっており、クエリを完了できません。

    • CONTENT_FILTERED – コンテンツは、適用されたコンテンツフィルターによってフィルタリングまたは削除されました。

InvokeModelWithResponseStream Response

レスポンスストリームの本文内のテキストの各チャンクは、次の形式です。bytes フィールドをデコードする必要があります (例については「API を使用して 1 つのプロンプトでモデルを呼び出します。」を参照)。

{ 'chunk': { 'bytes': b'{ "index": int, "inputTextTokenCount": int, "totalOutputTextTokenCount": int, "outputText": "<response-chunk>", "completionReason": string }' } }
  • index - ストリーミングレスポンス内のチャンクのインデックス。

  • inputTextTokenCount - プロンプト内のトークンの数。

  • totalOutputTextTokenCount - レスポンス内のトークンの数。

  • outputText - レスポンス内のテキスト。

  • completionReason - レスポンスの生成が終了した理由。理由の候補としては、以下があります。

    • FINISHED - レスポンスは完全に生成されました。

    • LENGTH - 設定したレスポンスの長さにより、レスポンスが切り捨てられました。

    • STOP_CRITERIA_MET – 停止基準に達したため、レスポンスは切り捨てられました。

    • RAG_QUERY_WHEN_RAG_DISABLED – この機能は無効になっており、クエリを完了できません。

    • CONTENT_FILTERED – コンテンツは、適用されたフィルターによってフィルタリングまたは削除されました。

コードの例

次の例は、Python SDK を使用して Amazon Titan Text のプレミアムモデルで推論を実行する方法を示しています。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to create a list of action items from a meeting transcript with the Amazon Titan Text model (on demand). """ import json import logging import boto3 from botocore.exceptions import ClientError class ImageError(Exception): "Custom exception for errors returned by Amazon Titan Text models" def __init__(self, message): self.message = message logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using Amazon Titan Text models on demand. Args: model_id (str): The model ID to use. body (str) : The request body to use. Returns: response (json): The response from the model. """ logger.info( "Generating text with Amazon Titan Text model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') accept = "application/json" content_type = "application/json" response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) response_body = json.loads(response.get("body").read()) finish_reason = response_body.get("error") if finish_reason is not None: raise ImageError(f"Text generation error. Error is {finish_reason}") logger.info( "Successfully generated text with Amazon Titan Text model %s", model_id) return response_body def main(): """ Entrypoint for Amazon Titan Text model example. """ try: logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") # You can replace the model_id with any other Titan Text Models # Titan Text Model family model_id is as mentioned below: # amazon.titan-text-premier-v1:0, amazon.titan-text-express-v1, amazon.titan-text-lite-v1 model_id = 'amazon.titan-text-premier-v1:0' prompt = """Meeting transcript: Miguel: Hi Brant, I want to discuss the workstream for our new product launch Brant: Sure Miguel, is there anything in particular you want to discuss? Miguel: Yes, I want to talk about how users enter into the product. Brant: Ok, in that case let me add in Namita. Namita: Hey everyone Brant: Hi Namita, Miguel wants to discuss how users enter into the product. Miguel: its too complicated and we should remove friction. for example, why do I need to fill out additional forms? I also find it difficult to find where to access the product when I first land on the landing page. Brant: I would also add that I think there are too many steps. Namita: Ok, I can work on the landing page to make the product more discoverable but brant can you work on the additonal forms? Brant: Yes but I would need to work with James from another team as he needs to unblock the sign up workflow. Miguel can you document any other concerns so that I can discuss with James only once? Miguel: Sure. From the meeting transcript above, Create a list of action items for each person. """ body = json.dumps({ "inputText": prompt, "textGenerationConfig": { "maxTokenCount": 3072, "stopSequences": [], "temperature": 0.7, "topP": 0.9 } }) response_body = generate_text(model_id, body) print(f"Input token count: {response_body['inputTextTokenCount']}") for result in response_body['results']: print(f"Token count: {result['tokenCount']}") print(f"Output text: {result['outputText']}") print(f"Completion reason: {result['completionReason']}") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) except ImageError as err: logger.error(err.message) print(err.message) else: print( f"Finished generating text with the Amazon Titan Text Premier model {model_id}.") if __name__ == "__main__": main()

次の例は、Python SDK を使用して Amazon Titan Text G1 - Expressモデルで推論を実行する方法を示しています。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to create a list of action items from a meeting transcript with the Amazon &titan-text-express; model (on demand). """ import json import logging import boto3 from botocore.exceptions import ClientError class ImageError(Exception): "Custom exception for errors returned by Amazon &titan-text-express; model" def __init__(self, message): self.message = message logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using Amazon &titan-text-express; model on demand. Args: model_id (str): The model ID to use. body (str) : The request body to use. Returns: response (json): The response from the model. """ logger.info( "Generating text with Amazon &titan-text-express; model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') accept = "application/json" content_type = "application/json" response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) response_body = json.loads(response.get("body").read()) finish_reason = response_body.get("error") if finish_reason is not None: raise ImageError(f"Text generation error. Error is {finish_reason}") logger.info( "Successfully generated text with Amazon &titan-text-express; model %s", model_id) return response_body def main(): """ Entrypoint for Amazon &titan-text-express; example. """ try: logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") model_id = 'amazon.titan-text-express-v1' prompt = """Meeting transcript: Miguel: Hi Brant, I want to discuss the workstream for our new product launch Brant: Sure Miguel, is there anything in particular you want to discuss? Miguel: Yes, I want to talk about how users enter into the product. Brant: Ok, in that case let me add in Namita. Namita: Hey everyone Brant: Hi Namita, Miguel wants to discuss how users enter into the product. Miguel: its too complicated and we should remove friction. for example, why do I need to fill out additional forms? I also find it difficult to find where to access the product when I first land on the landing page. Brant: I would also add that I think there are too many steps. Namita: Ok, I can work on the landing page to make the product more discoverable but brant can you work on the additonal forms? Brant: Yes but I would need to work with James from another team as he needs to unblock the sign up workflow. Miguel can you document any other concerns so that I can discuss with James only once? Miguel: Sure. From the meeting transcript above, Create a list of action items for each person. """ body = json.dumps({ "inputText": prompt, "textGenerationConfig": { "maxTokenCount": 4096, "stopSequences": [], "temperature": 0, "topP": 1 } }) response_body = generate_text(model_id, body) print(f"Input token count: {response_body['inputTextTokenCount']}") for result in response_body['results']: print(f"Token count: {result['tokenCount']}") print(f"Output text: {result['outputText']}") print(f"Completion reason: {result['completionReason']}") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) except ImageError as err: logger.error(err.message) print(err.message) else: print( f"Finished generating text with the Amazon &titan-text-express; model {model_id}.") if __name__ == "__main__": main()