Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bedrockのプロンプト管理どうしてる?
Search
Har1101
June 20, 2025
6
390
Bedrockのプロンプト管理どうしてる?
6/20(金) JAWS-UG 名古屋 6月会「AWSユーザーが繋がるOST&LT夜会」での登壇資料です
Har1101
June 20, 2025
Tweet
Share
More Decks by Har1101
See All by Har1101
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.2k
Ambient Agent on AWS!
har1101
3
440
Bedrockエージェントにおける MCP利用ケースについて考えてみる
har1101
4
400
AWS上でMCPを安全に使いたい ~Mastraを添えて~
har1101
7
1.7k
Bedrock×MCPで社内ブログ執筆文化を育てたい!
har1101
7
2k
Amazon Bedrock Agentsのマルチエージェント機能で競馬予想アプリ作ってみた!
har1101
5
910
re:Inventのアップデートを使ってRAGアプリ開発とRAGOpsに入門してみた!
har1101
1
330
BedrockのナレッジベースとLlamaIndexでGraphRAGを作って精度比較してみた!
har1101
3
490
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
820
Featured
See All Featured
Designing for Performance
lara
609
69k
Building Applications with DynamoDB
mza
95
6.4k
Documentation Writing (for coders)
carmenintech
71
4.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
The Language of Interfaces
destraynor
158
25k
Producing Creativity
orderedlist
PRO
346
40k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Making Projects Easy
brettharned
116
6.2k
Typedesign – Prime Four
hannesfritz
42
2.7k
Fireside Chat
paigeccino
37
3.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Transcript
Bedrockのプロンプト管理どうしてる? 2025/06/20 (金) JAWS-UG 名古屋 6月会「AWSユーザーが繋がるOST&LT夜会」 福地開
Who am I ? 福地 開 (ふくち はるき) @har1101mony 所属:NECソリューションイノベータ株式会社
年次:3年目 業務:インフラエンジニア、少しだけLLM触る人 活動:AWS Community Builders (AI Engineering)
今日話すこと ◆LLMアプリやAIエージェントシステムにおけるプロンプト管理 • プロンプト管理の概要と、必要な理由 • プロンプトと評価 • 具体的な管理方法 • 簡単な使い方のTips
※プロンプトエンジニアリングのお話はしません ※試料中で「プロンプト」と記載しているものは「システムプロンプト」のことを指します ※資料中で「AI」と記載しているものは「生成AI」とりわけ「LLM」のことを指します ※所属組織とは一切関係ない、私個人の意見・考えとなります
プロンプト管理とは? なぜ必要なのか?
前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ )
前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ ) ◆ややこしいポイント:ユーザーメッセージもプロンプトと言われる
前提知識:システムプロンプト ◆「あなたは〇〇なAIですよ、こういうことしてくださいね」 という指示を書くもの • システムプロンプトは、モデルの役割、機能、制約に関する高レベルの指示 を提供します。 これにより、会話全体を通してモデルがどのように動作するかの基礎が設定 されます。(https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/ ) ◆ややこしいポイント:ユーザーメッセージもプロンプトと言われる
プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) https://strandsagents.com/0.1.x/user-guide/concepts/agents/prompts/
プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること https://qiita.com/minorun365/items/9d0d11f0ecb4c29924d5
プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること なぜ別で管理する必要が?
プロンプト管理とは ◆ソースコードとは別でプロンプトを管理すること • よくあるケース:コード内にプロンプトベタ書き(ハンズオンなど) • プロンプト管理:ソースコードとプロンプトを別で管理すること なぜ別で管理する必要が? →評価、ひいてはLLMOpsに関わるため
プロンプトと評価
そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して…
そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解
そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による
そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による ◆評価:AIの回答において「何を正解とするか」を定める行為
• 人間側で「正解」を設定し、そこからどのくらい差が生じているかを 定性的・定量的に判断する必要がある • 回答に有害な内容やハルシネーションが含まれていないかをチェックする (責任あるAI)
そもそも「評価」って何? ◆大前提:AIが生成した回答の正解は1つではない • (例)世界で一番高い山は?という問いに対して… AI「エベレストです」→正解 AI「ヒマラヤ山脈にあるエベレストです。その標高は8848mで〜」→正解 AI「1位はエベレスト、2位はK2、3位はカンチェンジュンガです」→正解 • だが、どの回答を求めているかは利用者による ◆評価:AIの回答において「何を正解とするか」を定める行為
• 人間側で「正解」を設定し、そこからどのくらい差が生じているかを 定性的・定量的に判断する必要がある • 回答に有害な内容やハルシネーションが含まれていないかをチェックする (責任あるAI) • 「評価は継続的な道のりである(Evals is a continuous journey)」
評価方法って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
評価方法って2種類あんねん ◆オフライン評価 • 用意した模範解答と、AIが出力した回答を照らし合わせる(できれば数値化) • プロンプト・モデル・パラメータなどを変更する前後で比較する • LLM as a
Judge など、AI自身に回答を評価させる手法もある • MCP Server as a Judge も選択肢の1つ ◆オンライン評価 • 人間(特に利用者)が実際に使った上で結果を評価する • 簡単なもので言えば、Good/Bad • よりリアルなフィードバックを得られるので、可能な限り実施したい →結局、使う人間の感覚次第で良いか悪いかは決まる (コーディングエージェントにおいてベンチマークばかり見るのではなく 自分で試してみろ、と言われていることからも)
評価と改善のサイクル=LLMOps ◆評価って設計段階から考えるの? ◆考えておいたほうが良い • 少なくとも現状、LLMアプリは「リリースして終わり!」にはならない • 評価+改善のサイクル(LLMOps)が一生付き纏う (進化が早すぎる…) 実装 テスト
評価 改善
評価と改善のサイクル=LLMOps ◆評価って設計段階から考えるの? ◆考えておいたほうが良い • 少なくとも現状、LLMアプリは「リリースして終わり!」にはならない • 評価+改善のサイクル(LLMOps)が一生付き纏う(進化が早すぎる…) ◆改善対象の1つにプロンプトが存在する • 精度が低い→もう少し具体的な指示にしてみよう
• 新しいモデルが出た→今までと同じプロンプトで良いのか? • 評価の際には、旧バージョンと新バージョンのプロンプトを比較する →プロンプトのバージョン管理が重要! 実装 テスト 評価 改善
コード内にプロンプトをベタ書きしていたら? • 毎回アプリケーションそのものの更新が必要になるのが面倒 • ドメインエキスパートがプロンプト修正する時のハードルとリスクが上がる • プロンプト単位でのバージョン管理が困難になる →正確な評価を実施するのが難しくなる
コードとプロンプトを別で管理する • アプリケーションの更新とプロンプトの更新を別にできる →プロンプト単位でのバージョン管理が可能! →正確な評価を実施しやすくなる! • ドメインエキスパートなど、非エンジニア職とアプリケーションロジックを遠ざ けつつ、プロンプト改善を容易にできる!
具体的な管理方法
Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる
Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる • プロンプト単体でのバージョン管理が可能
Bedrock Prompt Management(プロンプト管理) ◆プロンプトの設定とテスト、バージョン管理ができる機能 • プロンプト・パラメータ変更と動作確認がコンソール上で簡単にできる • プロンプト単体でのバージョン管理が可能+バージョン指定で呼び出し可能
コードとプロンプトを別で管理する • アプリケーションの更新とプロンプトの更新を別にできる →プロンプト単位でのバージョン管理が可能! →正確な評価を実施しやすくなる! • ドメインエキスパートなど、非エンジニア職とアプリケーションロジックを遠ざ けつつ、プロンプト改善を容易にできる! 再掲
Langfuseでのプロンプト管理&LLMOps ◆LLMアプリの構築・改善を支援するためのプラットフォーム • 機能の1つとして、プロンプト管理がある • これももちろんLambdaなどから利用可能 • LLMOpsに特化しているため、かなり機能が豊富 →プロンプト管理がしたいだけであればオーバースペック •
ただ、評価と改善のサイクルをスムーズに回したい場合はかなり有用
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
簡単な使い方のTips
①呼び出し方が少し特殊 ◆BedrockのConverse APIやInvokeModel APIで呼び出すのは同じ ◆変わるのは、modelIdの書き方 • 普通は、基盤モデルのIDを書く
①呼び出し方が少し特殊 ◆BedrockのConverse APIやInvokeModel APIで呼び出すのは同じ ◆変わるのは、modelIdの書き方 • 普通は、左のように基盤モデルのIDを書く • Prompt Managementを使う場合は、PromptのARNとバージョンを指定
②変数を使おう ◆変数を使って、プロンプトへの入力を動的に変化させられる ◆ユーザーからの入力や、DBのデータなどを入れると良さそう
◆プロンプト管理についてお話しました • プロンプト管理の概要と、必要な理由 • プロンプトと評価 • 具体的な管理方法 • 簡単な使い方のTips ◆プロンプト1つ取っても、意外と考えることがある!
◆ハンズオンの時にでもちょっと挑戦してみてはいかがでしょうか? まとめ