Bedrock Prompt Managementでキャラクターのシステムプロンプトをバージョン管理してみた

Bedrock Prompt Managementでキャラクターのシステムプロンプトをバージョン管理してみた

2026.05.05

こんにちは、ゲームソリューション部のsoraです。
今回は、Bedrock Prompt Managementでキャラクターのシステムプロンプトをバージョン付きで管理し、Lambda(Go)から呼び出すところまでを試してみました。

Bedrock Prompt Managementとは

Bedrockコンソール上でプロンプトを作成・バージョン管理できるマネージド機能です。
プロンプト本文・モデル・推論パラメータをまとめて1つのリソースとして扱い、バージョン番号付きのARNでアプリから利用します。
アプリのコードを変えずにプロンプトを差し替えられるのが特徴で、プロンプトのデプロイをコード本体と切り離せます。

検証構成

今回作るアプリの構成は以下です。

sr-bedrock-phase1-01

Flutterで作ったチャット画面から、API Gateway → Lambda(Go)経由でBedrockに問い合わせる構成です。
キャラクター(ミケとポチ)ごとにシステムプロンプトをPrompt Managementで管理し、LambdaにはキャラID→プロンプトARNのマップを環境変数で渡します。

AWSリソースはBedrock周り以外をTerraformで構築しましたが、そちらの説明は割愛します。

Prompt Managementでキャラクター用プロンプトを作る

プロンプト作成

AWSコンソールにて、Bedrock → プロンプト管理 → プロンプトを作成 で作成画面に進みます。

sr-bedrock-phase1-02

プロンプトの名前や説明などを入力します。
KMSによる暗号化を有効にすると、Lambda側にてKMS周りの権限が必要になります。
検証のためデフォルトのままとしました。

sr-bedrock-phase1-03

システム命令の設定

作成を押すとプロンプトビルダーに遷移します。

sr-bedrock-phase1-04

システム命令にキャラクターの設定を入力します。
ユーザーメッセージを変数にしておくと、テストウィンドウから値を差し込んで動作確認できます。

sr-bedrock-phase1-05

sr-bedrock-phase1-06

設定 - オプションにて、生成AIのリソースとしてモデルを選択し、推論パラメータを設定することもできます。

バージョン発行とARNの取得

設定が終わったら、ドラフトを保存 → バージョンを作成 でバージョンを発行します。
発行後の詳細画面に表示されるプロンプトバージョンARNをコピーします。

末尾の:xがバージョン番号です。

LambdaからConverse APIで呼び出す

ここからはアプリ側です。
Converse APIは、Bedrockの各種基盤モデルを統一的なリクエスト・レスポンス形式で呼び出せるAPIです。
従来のInvokeModelがモデルごとに異なるJSON構造を要求するのに対し、Converse APIは会話履歴・システムプロンプト・ツール利用などを共通インターフェースで扱えます。

backend/internal/bedrock/client.goでConverse APIを叩いており、ModelIdにバージョン番号付きのプロンプトARNを渡しています。

out, err := c.api.Converse(ctx, &bedrockruntime.ConverseInput{
    ModelId:  aws.String(promptARN),
    Messages: messages,
})

プロンプト本体・モデル・推論パラメータはすべてPrompt Management側で定義済みのため、Lambda側からはsysteminferenceConfigtoolConfigadditionalModelRequestFieldsを渡しません。

プロンプトARN指定時の制約

公式ドキュメントの記載どおり、modelIdにプロンプトARNを指定する場合はsysteminferenceConfigtoolConfigadditionalModelRequestFieldsをリクエストに含めることができません。
これらはすべてPrompt Management側で定義する形になります。

動作確認

Flutterアプリを起動して、ミケとポチそれぞれに話しかけてみます。

選択画面
sr-bedrock-phase1-07

ミケ
sr-bedrock-phase1-08

ポチ
sr-bedrock-phase1-09

両キャラともキャラ設定どおりの口調・性格で返答がきました。

バージョン更新の動作確認

Prompt Managementの真価はバージョン管理なので、システム命令を変更してみます。
以下のように変更してバージョン発行をします。

sr-bedrock-phase1-10

Lambdaの環境変数にてどのプロンプトのバージョンを使用するかを指定しているため、環境変数の更新は必要ですが、Lambdaのコード本体の変更は不要です。

変更後に再度アプリから確認してみると、返答が変わっていることが確認できました。

sr-bedrock-phase1-11

最後に

今回は、Bedrock Prompt Managementでキャラクターのシステムプロンプトをバージョン付きで管理し、Lambda(Go)からConverse APIで呼び出すところまでを試してみました。
この記事がどなたかの参考になれば幸いです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事