🪨

【Amazon Bedrock/CFn】CloudFormationでAmazon Bedrock上にプロンプトをデプロイする

2025/01/20に公開

はじめに

2024年11月にAmazon BedrockのPrompt Management(プロンプト管理)がGAとなりました。
https://aws.amazon.com/jp/blogs/machine-learning/amazon-bedrock-prompt-management-is-now-available-in-ga/

というわけで今回は、
CloudFormation経由でAmazon Bedrock(プロンプト管理)上にプロンプトをデプロイします。
基本的には公式ドキュメントに沿ってtemplate.yamlを作成しSAMデプロイする流れとなります。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-prompt.html

■ デプロイするプロンプト

今回は以下のようなプロンプトをAmazon Bedrock(プロンプト管理)上にデプロイします。
また、デプロイと同時にバージョンを発行するようにします。

プロンプトの内容

こんにちは。
{{input}}を{{language}}に翻訳してください。

※「こんにちは」を入れているのは改行「\n」がデプロイ時に反映されることを確認するためです。

モデル定義

プロンプトを実行するモデル定義は以下を想定します。

パラメータ 設定値
モデル anthropic.claude-3-5-sonnet-20240620-v1:0
トークン数 4096
温度パラメータ 1
トップP 0.999

■ template.yamlのサンプル

以下template.yamlを定義しデプロイします。
「Variants」の定義の仕方がやや難解なので注意してください。

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Prompt on Amazon Bedrock

Resources:
  SamplePrompt:
    Type: AWS::Bedrock::Prompt
    Properties:
      Description: "サンプルプロンプト"
      Name: SamplePromptName
      Variants:
        - Name: "SamplePromptVariantsName"
          ModelId: "anthropic.claude-3-5-sonnet-20240620-v1:0"
          InferenceConfiguration:
            Text:
              MaxTokens: 4096
              Temperature: 1
              TopP: 0.999
          TemplateConfiguration:
            Text:
              Text: "こんにちは。\n{{input}}を{{language}}に翻訳してください。"
              InputVariables:
                - Name: "input"
                - Name: "language"
          TemplateType: "TEXT"

  SamplePromptVersion:
    Type: AWS::Bedrock::PromptVersion
    Properties:
      Description: "サンプルプロンプトバージョン"
      PromptArn: !GetAtt SamplePrompt.Arn

■ デプロイされたことの確認

以下画面に移動し、プロンプトが存在することを確認します。

  • Amazon Bedrock → プロンプト管理

デプロイされたプロンプトの中身を確認します。
template.yaml上で定義した通りにプロンプトがデプロイされていることが分かります。
※この画面では、プロンプト内の改行コードなどが反映されずに表示されます


また、以下のようにプロンプトのバージョンが発行されていることが分かります。


「プロンプトビルダーで編集」ボタンをクリックすると、プロンプトの詳細を確認できます。
template.yaml上で入れた改行「\n」が反映されていることが分かります。


プロンプトを実行してみます。
「テスト変数」部分に以下のようにパラメータを与えてあげます。
「実行ボタン」をクリックするとプロンプトが実行され結果が表示されます。

Discussion