Slide 1

Slide 1 text

Bedrockのプロンプト管理どうしてる? 2025/06/20 (金) JAWS-UG 名古屋 6月会「AWSユーザーが繋がるOST&LT夜会」 福地開

Slide 2

Slide 2 text

Who am I ? 福地 開 (ふくち はるき) @har1101mony 所属:NECソリューションイノベータ株式会社 年次:3年目 業務:インフラエンジニア、少しだけLLM触る人 活動:AWS Community Builders (AI Engineering)

Slide 3

Slide 3 text

今日話すこと ◆LLMアプリやAIエージェントシステムにおけるプロンプト管理 • プロンプト管理の概要と、必要な理由 • プロンプトと評価 • 具体的な管理方法 • 簡単な使い方のTips ※プロンプトエンジニアリングのお話はしません ※試料中で「プロンプト」と記載しているものは「システムプロンプト」のことを指します ※資料中で「AI」と記載しているものは「生成AI」とりわけ「LLM」のことを指します ※所属組織とは一切関係ない、私個人の意見・考えとなります

Slide 4

Slide 4 text

プロンプト管理とは? なぜ必要なのか?

Slide 5

Slide 5 text

前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ )

Slide 6

Slide 6 text

前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ ) ◆ややこしいポイント:ユーザーメッセージもプロンプトと言われる

Slide 7

Slide 7 text

前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ ) ◆ややこしいポイント:ユーザーメッセージもプロンプトと言われる

Slide 8

Slide 8 text

プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/

Slide 9

Slide 9 text

プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること https://qiita.com/minorun365/items/9d0d11f0ecb4c29924d5

Slide 10

Slide 10 text

プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること なぜ別で管理する必要が?

Slide 11

Slide 11 text

プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること なぜ別で管理する必要が? →評価、ひいてはLLMOpsに関わるため

Slide 12

Slide 12 text

プロンプトと評価

Slide 13

Slide 13 text

そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して…

Slide 14

Slide 14 text

そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解

Slide 15

Slide 15 text

そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による

Slide 16

Slide 16 text

そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による ◆評価:AIの回答において「何を正解とするか」を定める行為 • 人間側で「正解」を設定し、そこからどのくらい差が生じているかを 定性的・定量的に判断する必要がある • 回答に有害な内容やハルシネーションが含まれていないかをチェックする (責任あるAI)

Slide 17

Slide 17 text

そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による ◆評価:AIの回答において「何を正解とするか」を定める行為 • 人間側で「正解」を設定し、そこからどのくらい差が生じているかを 定性的・定量的に判断する必要がある • 回答に有害な内容やハルシネーションが含まれていないかをチェックする (責任あるAI) • 「評価は継続的な道のりである(Evals is a continuous journey)」

Slide 18

Slide 18 text

評価方法って2種類あんねん ◆オフライン評価 • 用意した模範解答と、AIが出力した回答を照らし合わせる(できれば数値化) • プロンプト・モデル・パラメータなどを変更する前後で比較する • LLM as a Judge など、AI自身に回答を評価させる手法もある • MCP Server as a Judge も選択肢の1つ https://speakerdeck.com/pharma_x_tech/llmapurikesiyonnoping-jia-toji-sok-de-gai-shan https://speakerdeck.com/licux/mcp-server-as-a-judge

Slide 19

Slide 19 text

評価方法って2種類あんねん ◆オフライン評価 • 用意した模範解答と、AIが出力した回答を照らし合わせる(できれば数値化) • プロンプト・モデル・パラメータなどを変更する前後で比較する • LLM as a Judge など、AI自身に回答を評価させる手法もある • MCP Server as a Judge も選択肢の1つ ◆オンライン評価 • 人間(特に利用者)が実際に使った上で結果を評価する • 簡単なもので言えば、Good/Bad • よりリアルなフィードバックを得られるので、可能な限り実施したい →結局、使う人間の感覚次第で良いか悪いかは決まる (コーディングエージェントにおいてベンチマークばかり見るのではなく 自分で試してみろ、と言われていることからも)

Slide 20

Slide 20 text

評価と改善のサイクル=LLMOps ◆評価って設計段階から考えるの? ◆考えておいたほうが良い • 少なくとも現状、LLMアプリは「リリースして終わり!」にはならない • 評価+改善のサイクル(LLMOps)が一生付き纏う (進化が早すぎる…) 実装 テスト 評価 改善

Slide 21

Slide 21 text

評価と改善のサイクル=LLMOps ◆評価って設計段階から考えるの? ◆考えておいたほうが良い • 少なくとも現状、LLMアプリは「リリースして終わり!」にはならない • 評価+改善のサイクル(LLMOps)が一生付き纏う(進化が早すぎる…) ◆改善対象の1つにプロンプトが存在する • 精度が低い→もう少し具体的な指示にしてみよう • 新しいモデルが出た→今までと同じプロンプトで良いのか? • 評価の際には、旧バージョンと新バージョンのプロンプトを比較する →プロンプトのバージョン管理が重要! 実装 テスト 評価 改善

Slide 22

Slide 22 text

コード内にプロンプトをベタ書きしていたら? • 毎回アプリケーションそのものの更新が必要になるのが面倒 • ドメインエキスパートがプロンプト修正する時のハードルとリスクが上がる • プロンプト単位でのバージョン管理が困難になる →正確な評価を実施するのが難しくなる

Slide 23

Slide 23 text

コードとプロンプトを別で管理する • アプリケーションの更新とプロンプトの更新を別にできる →プロンプト単位でのバージョン管理が可能! →正確な評価を実施しやすくなる! • ドメインエキスパートなど、非エンジニア職とアプリケーションロジックを遠ざ けつつ、プロンプト改善を容易にできる!

Slide 24

Slide 24 text

具体的な管理方法

Slide 25

Slide 25 text

Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる

Slide 26

Slide 26 text

Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる • プロンプト単体でのバージョン管理が可能

Slide 27

Slide 27 text

Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる • プロンプト単体でのバージョン管理が可能+バージョン指定で呼び出し可能

Slide 28

Slide 28 text

コードとプロンプトを別で管理する • アプリケーションの更新とプロンプトの更新を別にできる →プロンプト単位でのバージョン管理が可能! →正確な評価を実施しやすくなる! • ドメインエキスパートなど、非エンジニア職とアプリケーションロジックを遠ざ けつつ、プロンプト改善を容易にできる! 再掲

Slide 29

Slide 29 text

Langfuseでのプロンプト管理&LLMOps ◆LLMアプリの構築・改善を支援するためのプラットフォーム • 機能の1つとして、プロンプト管理がある • これももちろんLambdaなどから利用可能 • LLMOpsに特化しているため、かなり機能が豊富 →プロンプト管理がしたいだけであればオーバースペック • ただ、評価と改善のサイクルをスムーズに回したい場合はかなり有用

Slide 30

Slide 30 text

Langfuseでのプロンプト管理&LLMOps ◆外部ツール(OSS)だが、AWS環境上でセルフホストが可能 • 自社のAWS環境に閉じた利用が可能 • 詳しくはKAG tuboneさんの記事参照 https://tubone-project24.xyz/2024-12-30/Langfuse- v3%E3%82%92AWS%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%89%E3%82%B5%E3 %83%BC%E3%83%93%E3%82%B9%E3%81%A7%E4%BD%9C%E3%82%8B

Slide 31

Slide 31 text

簡単な使い方のTips

Slide 32

Slide 32 text

①呼び出し方が少し特殊 ◆BedrockのConverse APIやInvokeModel APIで呼び出すのは同じ ◆変わるのは、modelIdの書き方 • 普通は、基盤モデルのIDを書く

Slide 33

Slide 33 text

①呼び出し方が少し特殊 ◆BedrockのConverse APIやInvokeModel APIで呼び出すのは同じ ◆変わるのは、modelIdの書き方 • 普通は、左のように基盤モデルのIDを書く • Prompt Managementを使う場合は、PromptのARNとバージョンを指定

Slide 34

Slide 34 text

②変数を使おう ◆変数を使って、プロンプトへの入力を動的に変化させられる ◆ユーザーからの入力や、DBのデータなどを入れると良さそう

Slide 35

Slide 35 text

◆プロンプト管理についてお話しました • プロンプト管理の概要と、必要な理由 • プロンプトと評価 • 具体的な管理方法 • 簡単な使い方のTips ◆プロンプト1つ取っても、意外と考えることがある! ◆ハンズオンの時にでもちょっと挑戦してみてはいかがでしょうか? まとめ