1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【小ネタ】Bedrock Prompt Managementはバージョン指定しなかったらドラフト版が適用される

Posted at

tl;dr

タイトル通りです。
Bedrock Prompt Managementはバージョン指定しなかったらドラフト版が適用されます。

はじめに

小ネタです。自分もGPTもClaudeも、ドキュメントから記載を見つけられなかったので備忘として書いておきます。

Bedrock Prompt Managementでプロンプトを管理しているとして、このプロンプトを用いる際にバージョン指定しなかったらどうなるのかという実験をしました。

モチベーションとしては、自動で最新バージョンを取得してくれると嬉しいな~という気持ちでした。
プロンプトを更新するたびにバージョン指定し直すのが面倒だからです。

結果としてはドラフト版が適用されたので、必ずバージョンを指定する必要があります。

実際に試す

まず以下テンプレートをデプロイします。
これでBedrock Prompt ManagementとLambda関数(とサービスロール)が作成されます。

test-bedrock-prompt.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Test Bedrock Prompt Management with Lambda'

Resources:
  # Bedrock Prompt Management
  TestPrompt:
    Type: AWS::Bedrock::Prompt
    Properties:
      Name: 'test-bedrock-prompt'
      Description: 'Test prompt for Bedrock Prompt Management'
      DefaultVariant: 'default-variant'
      Variants:
        - Name: 'default-variant'
          TemplateType: 'CHAT'
          TemplateConfiguration:
            Chat:
              System:
                - Text: |
                    回答する際に、必ず最初に「これはバージョン1です」と回答してください。
              Messages:
                - Role: user
                  Content:
                    - Text: '{{input_text}}'
              InputVariables:
                - Name: 'input_text'
          ModelId: 'jp.anthropic.claude-haiku-4-5-20251001-v1:0'
          InferenceConfiguration:
            Text:
              Temperature: 0.7
              MaxTokens: 2000

  # IAM Role for Lambda
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: 'test-bedrock-prompt-lambda-role'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/AmazonBedrockFullAccess'
        - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'

  # Lambda Function
  TestLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: 'test-bedrock-prompt-function'
      Runtime: python3.13
      Handler: index.lambda_handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Timeout: 60
      MemorySize: 256
      Environment:
        Variables:
          promptVersionARN: !Sub '${TestPrompt}:${PromptVersionNumber}'
      Code:
        ZipFile: |
          import boto3
          import os

          bedrock = boto3.client('bedrock-runtime')
          modelId = os.environ['promptVersionARN']

          def lambda_handler(event, context):

              question = event['question']
              promptVariables = {
                  "input_text":{
                      "text": question
                  }
              }

              response = bedrock.converse(
                  modelId=modelId,
                  promptVariables=promptVariables
              )

              return {
                  'body': response["output"]["message"]["content"][0]["text"]
              }

Bedrock Prompt Managementコンソールから、バージョンを作成します。
image.png
↓作成後
image.png

比較として、ドラフト版の方は「これはドラフト版です」を最初に回答してもらうようにします。
こちらはバージョン作成せず、ドラフトを保存だけ押しておきます。
image.png

この状態で、Lambda関数で以下入力をテストします。

{"question": "こんにちは"}

まずはバージョン指定ありです。末尾に「:1」がついています。
image.png

実行結果は以下です。これは当然バージョン1が返ってきます。
image.png

次に本題のバージョン指定なしです。
image.png

実行結果は以下です。最新版ではなく、ドラフト版が適用されていました。
image.png

まとめ

Bedrock Prompt Managementはバージョン指定しなかったらドラフト版が適用されます。
本番利用の際はバージョン指定をお忘れなく。

余談

以下APIだと、バージョン指定しなかった時にドラフト版の情報を取ってくるそうです。
ここからある程度予測できることではありましたが、きちんと検証してみるのが大切ということで。

promptVersion(原文)

The version of the prompt about which you want to retrieve information. Omit this field to return information about the working draft of the prompt.

Length Constraints: Minimum length of 1. Maximum length of 5.

Pattern: (DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})

promptVersion(日本語)

情報を取得したいプロンプトのバージョン。このフィールドを省略すると、プロンプトの作業草案に関する情報が返されます。

長さの制約: 最小長は 1、最大長は 5。

パターン:(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?