調査日: 2026-05-15
モデル: ChatGPT (GPT-4o)
調査プロンプト: RQ-044_prompt.md
利用目的: プロンプト管理ポリシー ADR(予定)の起草根拠


1. サマリー(最重要の知見)

  1. 学術的には、プロンプトは「その場の文言」ではなく、要件定義・設計・実装・テスト・進化・デプロイ・監視までを含むソフトウェア資産として扱うべきだという方向に収斂している。実務でも LangSmith・Langfuse・Braintrust・OpenAI Prompt API は、コミット / タグ / 環境 / ロールバックを前提に設計されている。

  2. 「Prompt Drift」対策の中核は、モデル版の固定、代表データセットでの回帰 eval、複数 trial、運用ログからの継続監視。単発の手動確認では足りず、モデル更新や prompt 修正ごとに再評価する運用が公式ドキュメントでも強く推奨されている。

  3. 小規模チームでは、まず Git を source of truth にし、Promptfoo で CI 回帰テスト、必要なら Langfuse を薄く足す構成が最も費用対効果が高い。LangSmith の無料枠は 1 席で便利だが、2 名体制以降は Plus が席課金($39/席)。Langfuse Core は $29/月で予算条件に収まりやすい。

  4. ADR としては、状態遷移、バージョン規約、評価ゲート、デプロイ方式、ロールバック手順を一枚で定義するのが有効。特に「本番 prompt は label/tag 参照」「コードと prompt の互換境界を明文化」「PR で eval を必須化」は再現性を大きく高める。


2. Q1〜Q6 への回答

Q1: プロンプトのライフサイクルモデル

Q1-1: 状態遷移モデル

学術側で広く合意された「唯一の状態遷移図」はまだないが、方向性はかなり明確。Promptware Engineering はプロンプト開発を、要件工学・設計・実装・テスト・デバッグ・進化・デプロイ・監視を含む SE ライフサイクルとして整理している。実務ツールも同様で、LangSmith は commit・tag・staging/production・rollback を持ち、Braintrust は instrument → observe → annotate → evaluate → deploy の流れを標準化している。

ADR 向け推奨状態遷移:

Draft → Experimental → Review Candidate → Stable → Deprecated → Archived

実装上は draft / candidate / production / deprecated などの tag・label で表現するのが最も自然。

Q1-2: Prompt Drift の検知と管理

Prompt Drift には以下が重要:

  • モデル snapshot の固定
  • モデル更新時の migration testbed
  • 同一ケースの複数 trial
  • 運用ログからの継続的な回帰監視

単一プロンプトだけに依存した評価は脆く、複数 prompt での評価がより頑健だと示されている。

Q1-3: 本番と実験の分離

業界標準は label/tag を用いた動的ルーティング。アプリケーションコードは「production タグが付いた最新の prompt」を要求する設計とし、フィーチャーフラグと組み合わせてカナリアリリースを実現する。


Q2: バージョニング戦略

Q2-1: Semantic Versioning 適用の有効性

Prompt に SemVer を適用するなら、公開 API = prompt contract と見なすのが実務的。必要変数・出力 schema・使用前提のモデル family・評価スイート・許容される振る舞いを contract と定義した上で:

バージョン定義
MAJOR出力 schema・役割・判断基準・安全境界など互換性を壊す変更出力形式変更(テキスト → JSON)、基盤モデル変更
MINOR既存 contract を維持したまま性能や網羅性を改善する変更Few-shot 追加、新入力変数追加
PATCH誤字修正・冗長表現削減・few-shot 例の軽微調整など期待動作を変えない修正文言整理、誤字修正

Q2-2: Git vs 専用ツール(小規模チーム 1〜3 名)

Git ベース管理は PR・差分レビュー・履歴説明に強く、専用ツールは runtime での label 切替・A/B・トレース連携・UI 編集・ロールバックに強い、という補完関係。1〜3 名体制では、まず Git を正本にし、必要に応じて Langfuse や LangSmith を「配布・観測レイヤ」として足す方が過剰投資になりにくい。

ツールコスト比較(2026 年時点):

ツール無料枠有料bizlp 向け評価
Promptfoo完全 OSS✅ 必須(CI eval)
LangfuseHobby(制限あり)Core $29/月・無制限ユーザー✅ 推奨($50 制約内)
LangSmithDeveloper(1 席・5,000 traces/月)Plus $39/席/月〜△ 2 名以降はコスト増
BraintrustStarter(月 10,000 スコアまで無料)Pro(environments 分離)$249△ env 分離には Pro 必要

Q2-3: バージョン結合度

同一リポジトリの長所: prompt とコード・eval・CI 設定を同じ PR に載せられる。変更同期が最も簡単で、1 人〜少人数では事故が少ない。

専用 prompt repo の長所: 権限分離や再利用に強い。社外委託先に一部 prompt だけ触らせたい場合に有効。

bizlp への推奨: まずは monorepo 内で prompt を集約し(prompts/ ディレクトリ)、アクセス権制御の実際の要件が生じたタイミングで専用リポジトリへの移行を検討する段階的アプローチ。


Q3: テスト・評価手法

Q3-1: 単体テスト(Unit Eval)

Anthropic・OpenAI・Google の公式ドキュメントが共通して推奨する構成:

  1. eval 目標の定義(task-specific、edge case を忘れない)
  2. データセット: 実運用に近い入力分布 + edge case。Google は約 100 例前後を推奨で集計指標を安定させる。
  3. 採点器: 入力・期待値・採点器を分け、推論結果を後段の grader に流し、最後に集約ノードで pass rate を出す(Microsoft の evaluation flow パターン)。
  4. 自動実行: 「可能なら自動採点」「少数の精密手採点より大量の自動採点」(Anthropic 推奨)。

Q3-2: 回帰テスト

現行本番版を baseline に固定し、同じケース群で新旧を比較。実装パターン:

  • GitHub Actions で main push または PR 時に自動実行
  • スコア閾値を下回ったら merge block
  • 「production failure → regression test 転換」フロー(本番不具合報告を 1 クリックで eval dataset に変換)

Q3-3: LLM-as-a-Judge の信頼性・限界

研究で指摘されている問題点:

  • 複数 sample の必要性
  • 参照解答の有効性
  • pairwise judge の非推移性(A > B、B > C だが A > C とは限らない)

推奨設計: 複数 trial + 参照解答 + 必要に応じて複数 judge または人手較正。

Q3-4: A/B テストと統計的有意性

  • LLM 出力の変動を考えると、例 ID 単位の paired bootstrap や permutation test が妥当
  • 二値 pass/fail なら二項差の検定・信頼区間で差分確認
  • bizlp 規模では online A/B より offline eval(golden set 50〜200 件)+ shadow testing が現実的

Q4: リポジトリ構成パターン

Q4-1: 同一リポ vs 専用リポのトレードオフ

LangSmith は「アプリと同じ repo でも dedicated repo でもよい」とし、PromptLayer は「既存 CI/CD があるなら GitOps with Webhooks を推奨」している。

自前管理へ転用できる設計パターン:prompt object + metadata/README + immutable version + movable label/tag + webhook + env promotion

Q4-2: LangChain Hub 設計からの転用

LangSmith の StructuredPrompt のように schema を一緒に持たせる設計が依存管理に向いている。転用可能要素:

  1. prompt を「公開 contract を持つ artifact」として管理
  2. 必要変数と出力 schema を固定した上で各システムは adapter だけを持つ
  3. コピペではなく shared/ に共通 prompt を集約

Q4-3: 複数システムでの依存関係管理

複数 AI システムで同一 prompt を再利用する場合は、コピペではなく「契約付き artifact」として管理する。各システムは adapter 層だけを持つのが安全。


Q5: CI/CD との統合

Q5-1: PR での自動チェック(3 層構成)

第 1 層(lint / 静的検査): frontmatter・変数未定義・schema 不整合・禁止語・参照切れ

第 2 層(unit eval): 代表ケースとエッジケースに対する pass/fail 確認

第 3 層(regression eval): baseline 比の悪化を閾値で弾く(Promptfoo は GitHub Actions・各種 CI 連携を前提にした OSS で PR 上で prompt 比較と回帰確認を回しやすい)

Q5-2: デプロイの分離アーキテクチャ

コードが固定の prod ラベルや prompt ID を引きに行く構成が定番:

ツール分離方法
LangfuseGitHub Repository Dispatch または Git 同期
LangSmithenvironment/tag と rollback
PromptLayerrelease label と dynamic label
OpenAIprompt version と restore

Q5-3: ロールバック戦略

ロールバックは「コードを戻す」のではなく、label/tag/environment pointer を前版へ戻す方式が速く安全。

重要:運用ログに release label だけでなく実際に使用された prompt version を必ず記録すること。


Q6: 小規模チーム・個人開発への適用 — 推奨アーキテクチャ案

最適解:「軽い GitOps + 自動 eval + 薄い observability」

リポジトリ構成(Git monorepo)

prompts/
├── production/       # 本番稼働プロンプト(SemVer + eval 必須)
├── agent-templates/  # 開発テンプレート(SemVer + eval 必須)
├── research-archive/ # 使い捨て調査プロンプト(軽量管理)
└── shared/          # 複数システム再利用(copy-paste 禁止)

各 prompt は prompt.mdprompt.meta.yaml を持たせる。meta には id, owner, status, semver, model_family, inputs, output_schema, eval_suite, deprecation_at を必須にする。

状態遷移(6 状態)

draft → experiment → candidate → production → deprecated → archived

本番は label/tag で参照し、コード内に prompt 文面を埋め込まない方針。

SemVer 適用範囲

productionshared にだけ適用。Deep Research 用の使い捨て prompt は YYYYMMDD-topic 命名で十分。

CI/CD(GitHub Actions + Promptfoo)

PR ごとに frontmatter 検証 → 変数チェック → unit eval → baseline 回帰 → (必要なら)red-team smoke test を実行。本番 prompt ごとに最低 1 つの「golden regression suite」を持つ。

Runtime の prompt 配布

  • まず Node.js/TypeScript 側で repo 内 prompt を読むだけで開始
  • 運用ログ可視化や label 切替が欲しくなったら Langfuse に昇格
  • Langfuse は prompt 更新をコード deploy と切り離し、A/B も label ベースで扱える

ツール選定(月 $50 制約)

  • : GitHub + Promptfoo + Langfuse Hobby(無料)
  • 6 ヶ月後 2 名体制: Langfuse Core($29/月)へ移行
  • プロンプト 30 本超・本格チーム化: Braintrust Pro または Agenta OSS を再評価

ロールバック設計

production label を前版に戻すだけで 5 分以内に復旧できる設計にする。各推論ログに prompt_id, prompt_version, model_snapshot, eval_suite_version を残す。

共有プロンプトの管理

本番パイプライン・Claude Code テンプレ・中間成果物生成で再利用するものは shared/ に集約し、system prompt 本体と output schema をペアで公開する。各利用先は adapter 層だけを持つ構成にする。


3. 参考文献リスト

学術論文

  • Zhenpeng Chen et al., Promptware Engineering: Software Engineering for Prompt-Enabled Systems. ACM TOSEM, 2026. DOI: 10.1145/3796535 / arXiv: 2503.02400
  • Jenny T. Liang et al., Prompts Are Programs Too! Understanding How Developers Build Software Containing Prompts. Proc. ACM Softw. Eng., 2025. DOI: 10.1145/3729342 / arXiv: 2409.12447
  • Shivani Tripathi et al., Prompt Migration: Stabilizing GenAI Applications with Evolving Large Language Models. arXiv: 2507.05573
  • Masumi Morishige, Ryo Koshihara, Ensuring Reproducibility in Generative AI Systems for General Use Cases: A Framework for Regression Testing and Open Datasets. arXiv: 2505.02854
  • Jindong Gu et al., A Survey on LLM-as-a-Judge. arXiv: 2411.15594
  • Kayla Schroeder, Zach Wood-Doughty, Can You Trust LLM Judgments? Reliability of LLM-as-a-Judge. arXiv: 2412.12509
  • Moran Mizrahi et al., State of What Art? A Call for Multi-Prompt LLM Evaluation. TACL preprint / arXiv: 2401.00595
  • Yi Xu et al., Investigating Non-Transitivity in LLM-as-a-Judge. arXiv: 2502.14074
  • Principles and Guidelines for the Use of LLM Judges. ACM FAccT 2025. DOI: 10.1145/3731120.3744588
  • Limitations of the LLM-as-a-Judge Approach for Evaluating Domain-Specific Tasks. ACM IUI 2025. DOI: 10.1145/3708359.3712091

公式ドキュメント


4. 未解決・要追加調査事項

  1. 学術的に標準化された prompt 専用の状態遷移モデルはまだなく、今回の Draft → Experimental → Review Candidate → Stable → Deprecated → Archived は SE ライフサイクル研究と主要ツールの実装を組み合わせた実務向け合成案。

  2. monorepo と専用 prompt repo の比較は、現状ほぼベンダードキュメントと実践知に依存しており、制御比較研究は薄い。特にアクセス権・委託開発・監査要件を含む知見は追加調査の余地がある。

  3. LLM-as-a-judge の信頼性は改善中だが、難問領域・高専門性領域・多言語・多段エージェント評価ではまだ不安定。judge の較正方法、複数 judge のアンサンブル、A/B の統計設計は今後も更新を追うべき論点。