# AIエージェントをソフトウェアに組み込むプラクティス
# プロンプトの成果物化
🎯 プロンプトの一文字を変えただけで本番障害。変更履歴もロールバック手段もありませんでした。
プロンプトはコードと同等以上のリスクを持つ成果物です。バージョン管理・テスト・段階デプロイの対象にしましょう。
🔥 解決する課題
LLMベースのシステムでは、プロンプトの些細な変更がモデル出力を大きく変えます。プロンプトをコード中のリテラル文字列として管理していると、変更追跡ができず障害の切り分けが困難になります。回帰テストの仕組みがなく品質変化を定量評価できません。問題が起きても「前のプロンプトに戻す」にコードデプロイが必要です。規制領域では「どのバージョンのプロンプトでどの判断がなされたか」の監査が求められますが、プロンプトがコード内に散在しているとこの紐づけが困難です。
💡 提案パターン
プロンプトを独立した成果物としてバージョン管理し、変更時にはCIで回帰テスト(評価ハーネス)を実行します。本番環境ではカナリアリリース(5〜10%)で段階的にロールアウトし、品質低下を検知したら即座にロールバックします。実行時ログにはプロンプトIDとバージョンを記録し、事後監査で「この判断はどのプロンプトに基づくか」を示せる設計にします。プロンプトとモデルの互換性も記録し、モデル更新時に再評価が必要なプロンプトを特定できるようにします。
✅ 選定条件
使うとき:
- プロンプトの変更履歴と実行時バージョンの記録が求められる(規制領域・品質管理)
- プロンプトが複数箇所から参照され、一元管理が必要
- A/Bテストや段階的ロールアウトを行いたい
使わないとき:
- プロンプトが1〜2個で変更頻度も低い個人プロジェクトやPoC
- 出力品質の変動が許容される探索的用途
⚠️ 落とし穴
- テンプレート変数にユーザ入力が入る場合、インジェクション対策としてエスケープやサニタイズが必要です
- プロンプト解決を外部APIに依存しすぎると可用性リスクが増します。起動時フェッチ+ローカルキャッシュも検討しましょう
- プロンプトは行指向フォーマット(YAML/Markdown)で保存してください。巨大な1行JSONではdiffレビューが困難です
🔧 実装方針
- プロンプトをYAML等の行指向フォーマットで管理し、テンプレート・変数定義・モデル互換性・評価ベースラインを一つのファイルに集約します
- ランタイムではレジストリからプロンプトIDで解決し、カナリア対象なら確率的にカナリア版を返す仕組みを組み込みます
- 実行時ログにプロンプトIDとバージョンを必ず記録し、事後監査で「どの判断がどのプロンプトに基づくか」を追跡可能にします
- プロンプト変更時にはCIで評価ハーネスを自動実行し、品質の回帰を検知してからカナリアリリースで段階的にロールアウトします
#
AIエージェント# #
ソフトウェアアーキテクチャ#