結論:プロンプトをコードから切り離し、「バージョン管理 → 評価 → 段階リリース → 監視」のループに乗せれば、本番のプロンプトは“散らかった文字列”から“改善できる資産”に変わります。これがPromptOps(プロンプト運用)です。
この記事でわかる3つの要点
- なぜプロンプトをコードに直書きしてはいけないのか(資産化の考え方)
- git/専用レジストリでのバージョン管理・ロールバックの具体的なやり方
- 評価データセットによる回帰防止と、A/B・段階リリースで安全に改善する手順
対象読者:プロンプトがソース内に散らばって改善が止まっている開発者・PM・AIエンジニア。
今日やること:本番で一番効いているプロンプトを1つだけ選び、コードから外部ファイルに切り出してバージョン番号を付けてみましょう。
「このプロンプト、誰がいつ何を変えたんだっけ?」
AIエージェントや生成AI機能を本番投入したチームから、最近いちばんよく聞く悩みです。最初は1ファイルに数行だったプロンプトが、気づけば10箇所のソースコードに散らばり、`f”あなたは…”` のような文字列があちこちに直書きされている。少し直すたびにアプリ全体を再デプロイし、品質が上がったのか下がったのかは「なんとなくの体感」でしか分からない——。
実際に複数のAIエージェント導入を支援する中で気づいたのは、プロンプトを“コードの一部”として扱っている限り、改善は属人化して止まるということでした。逆に、プロンプトを「バージョン管理され、テストされ、監視される運用対象(オペレーショナルアセット)」として扱うチームは、改善サイクルが一気に回り始めます。この考え方が、2026年に定着しつつあるPromptOps(プロンプト運用)です。
この記事では、コードに直書きされたプロンプトを「改善できる資産」に変えるための実践手順を、コード例・設定例つきで解説します。5分で試せるファイル分離から、評価・段階リリースまで順番に見ていきましょう。

PromptOpsとは何か:プロンプトをコードから分離して資産化する
PromptOpsは、ざっくり言えば「DevOpsの考え方をプロンプトに適用したもの」です。プロンプトの作成・チューニング・デプロイ・監視を体系的に回し、品質の高い出力を安定して得るための運用プラクティスを指します。Adalineの2026年版PromptOpsガイドでは、信頼性の高いLLMプロダクトを出荷しているチームは「構造化された実験・厳密なバージョニング・包括的なテスト・制御されたデプロイ・継続的なモニタリング」を体系的に実践している、と整理されています。
その出発点がプロンプトとコードの分離(decoupling)です。なぜ分離が重要なのでしょうか。プロンプトをソースコードに直書きすると、次の問題が同時に起きます。
- 変更履歴が追えない:commitログに紛れて「どの一文がスコアを上げたか」が分からない
- 毎回フルデプロイが必要:句読点ひとつ直すだけでアプリ全体を再デプロイ
- 非エンジニアが触れない:プロンプトを一番改善できるドメイン担当者がコードに手を出せない
- 品質が比較できない:変更前後を同じ基準で測る仕組みがない
プロンプトを外部に切り出し、名前とバージョンで参照する形にすれば、これらは構造的に解決します。PromptLayerはこの考え方を「プロンプトはLLMアプリのビジネスロジックそのもの。コードに隠すのではなく、レジストリ(CMS)として管理すべき」と表現しています。まずはこの“分離”を、いちばん軽い形から始めてみましょう。
最小構成で始める:プロンプトをファイルに切り出す
専用ツールを入れる前に、まず手元のリポジトリでできる最小構成から試すのがおすすめです。やることは「プロンプトをPythonの文字列リテラルから、バージョン付きの外部ファイルへ移す」だけです。
以下は、プロンプトをYAMLで定義し、メタデータ(バージョン・用途・更新日)と一緒に管理する例です。
# prompts/support_reply.v3.yaml
name: support_reply
version: 3
owner: cs-team
updated_at: "2026-06-04"
description: 一次対応の自動返信プロンプト
model:
provider: openai
name: gpt-4o
temperature: 0.3
template: |
あなたはサポート担当です。以下のナレッジベースのみを根拠に、
ユーザーの質問へ3文以内で回答してください。
該当情報がない場合は「担当者にお繋ぎします」とだけ返答してください。
ナレッジベース:
{knowledge}
ユーザーの質問:
{question}
アプリ側は、このファイルを名前とバージョンで読み込むだけにします。
# app/prompt_loader.py
# 動作環境: Python 3.11+, pyyaml>=6.0
import yaml
from pathlib import Path
def load_prompt(name: str, version: int) -> dict:
path = Path("prompts") / f"{name}.v{version}.yaml"
with path.open(encoding="utf-8") as f:
return yaml.safe_load(f)
# 使い方
p = load_prompt("support_reply", version=3)
filled = p["template"].format(
knowledge=kb_text,
question=user_question,
)
# 注意: 本番で使う前に、必ずテスト環境で動作確認してください。
ポイント
- ファイル名にバージョン番号を入れることで、アプリのコードを変えずに参照先(`version=3` → `4`)を切り替えられる
- `owner`・`updated_at` を持たせるだけで「誰がいつ変えたか」が追える
- モデル設定(temperature等)もプロンプトとセットで管理すると、再現性が保たれる
この時点で、プロンプトは独立したファイルとしてgitの差分に乗ります。「どの一文を、誰が、なぜ変えたか」がコミット単位で見えるようになり、それだけで改善の議論がしやすくなります。プロンプトに渡す“文脈”をどう設計し圧縮するかは、別記事のコンテキストエンジニアリング実践ガイドも参考にしてください。
バージョン管理とロールバック:gitと専用レジストリの使い分け
プロンプトのバージョン管理には、大きく2つのアプローチがあります。どちらが正解というより、チームの規模と「非エンジニアが触るか」で選びます。
| 方式 | 仕組み | 向いているチーム | 弱点 |
|---|---|---|---|
| git管理 | プロンプトファイルを通常のコードと同じくPR・レビュー・履歴で管理 | 小〜中規模/エンジニア中心 | 変更にデプロイが伴う。非エンジニアが触りにくい |
| 専用レジストリ | LangSmith等の外部サービスがバージョンを保持。コードはAPIで取得 | 中〜大規模/非エンジニアも編集 | 外部依存。取得失敗時のフォールバック設計が必要 |
専用レジストリの代表例がLangSmithの「Prompt Hub」です。LangSmithではプロンプトをHubにpushするたびに、そのプロンプト・変数・モデル設定をまとめたユニークなコミットハッシュが自動生成されます。過去バージョンへのロールバックが可能で、トレースには「どのバージョンが各実行で使われたか」が記録されます。さらに、コミットに対してタグ(commit tag)を付け、コードからはタグ名で参照することで、コードを変更せずに本番で動くバージョンを切り替えられます。
Langfuse(オープンソース)も近い設計で、バージョン(1, 2, 3…の不変な履歴)とラベル(特定バージョンへのポインタ)を分けて管理します。`production` ラベルを新しいバージョンに付け替えるだけで「デプロイ」が完了し、アプリは次回のフェッチで新バージョンを取得します。コード例で見ると、運用の流れはこうなります。
# 動作環境: Python 3.11+, langfuse>=2.x
from langfuse import Langfuse
langfuse = Langfuse() # APIキーは環境変数から読み込む
# 本番ラベルが指す最新バージョンを取得(コードはバージョン番号を知らなくてよい)
prompt = langfuse.get_prompt("support_reply", label="production")
compiled = prompt.compile(
knowledge=kb_text,
question=user_question,
)
# ロールバックは「production ラベルを旧バージョンに付け替える」だけ。再デプロイ不要。
このように、レジストリ型では「ラベルの付け替え=デプロイ/ロールバック」になります。事故が起きても、コードを触らずに前の安定版へ即座に戻せるのが大きな利点です。ここまでで「履歴」と「切り戻し」が手に入りました。次は、切り替える前に“良くなったのか”を測る仕組みです。
評価とテスト:変更前後をデータセットで比較し回帰を防ぐ
PromptOpsで最も価値が出るのが、この評価(Evaluation)のステップです。プロンプトの改善が体感頼みになる最大の原因は、「変更前後を同じ基準で測っていない」ことにあります。逆に言えば、評価データセットを1つ用意するだけで、改善は一気にデータドリブンになります。
手順はシンプルです。
- 代表的な入力を集める:本番ログから、よくある質問・難しいケース・エッジケースを20〜50件抜き出す
- 期待される振る舞いを定義する:正解そのものでなくてよい。「3文以内か」「根拠外の情報を作っていないか」などの判定基準を決める
- 新旧バージョンを同じデータで走らせる:v3とv4を同じ入力セットに通す
- スコアを比較する:ルールベース(文字数・禁止語)とLLM-as-a-Judge(妥当性の自動採点)を組み合わせる
- 回帰がないか確認してから昇格:旧版より下がった項目がないかを見て、問題なければ本番ラベルを付け替える
評価データセットは、以下のようにシンプルなJSONLで始められます。
// evals/support_reply.dataset.jsonl
{"input": {"question": "返品はできますか?", "knowledge": "返品は購入後14日以内..."}, "checks": ["max_3_sentences", "grounded"]}
{"input": {"question": "店舗の電話番号は?", "knowledge": ""}, "checks": ["escalation_phrase"]}
{"input": {"question": "送料を教えて", "knowledge": "送料は全国一律500円..."}, "checks": ["max_3_sentences", "grounded"]}
LLM-as-a-Judge(モデルに採点させる手法)の設計を間違えると、評価そのものが信用できなくなります。判定プロンプトの作り方はAI評価(Evals)とLLM-as-a-Judge設計ガイドで詳しく扱っています。専用ツール側でも、PromptLayerは新バージョン作成後に自動回帰テストや評価パイプラインを走らせる機能を備えており、Heliconeは“スプレッドシートのような”実験インターフェースで複数のプロンプト案を構造的に比較できます。
正直にお伝えすると、評価は「一度作って終わり」にはなりません。本番で新しい失敗パターンが見つかるたびにデータセットへ追加し、育てていくものです。だからこそ、最初から完璧を目指さず、20件の小さなデータセットから始めるのが現実的です。
本番運用:A/B・段階リリースと「誰がいつ何を変えたか」の追跡
評価を通過したら、いよいよ本番への反映です。ここでも、いきなり全トラフィックを新バージョンに切り替えるのは危険です。安全に出すための仕組みがA/Bリリースと段階リリース(カナリア)です。
PromptLayerの「A/B Releases」は、リリースラベルを動的に上書きし、割合やユーザーセグメントに応じてトラフィックを複数のプロンプトバージョンに振り分けられます。たとえば「新バージョンに10%だけ流して指標を見る」運用が、コードを変えずに実現できます。
# 動作環境: Python 3.11+, promptlayer SDK
# リリースラベル "prod" の指す先を、レジストリ側で 90/10 に分割しておく
prompt = promptlayer.prompts.get(
"support_reply",
label="prod", # 裏で v3(90%) / v4(10%) に振り分け
)
# 各リクエストのレスポンス指標(解決率・エスカレ率など)を記録して比較
段階リリースの基本手順
- 新バージョンを少量トラフィックで出す:まず5〜10%に限定する
- 本番指標を監視する:エラー率・レイテンシ・エスカレーション率・コスト(トークン消費)を新旧で比較
- 問題なければ比率を上げる:10% → 50% → 100%と段階的に拡大
- 異常を検知したら即ロールバック:ラベルを旧バージョンへ付け替えて切り戻す
あわせて欠かせないのが監査性(ガバナンス)です。本番プロンプトは「誰がいつ何を変えたか」を必ず残すべき運用資産です。LangSmithはStaging/Productionの環境分離、コミットの昇格権限を持つ「プロンプトオーナー」、プロンプト更新時に走るWebhookトリガーを備えています。Langfuseには、特定のラベルを管理者以外が変更・削除できないようにする「保護ラベル(Protected Labels)」があり、本番ラベルの誤操作を防げます。
こうした「履歴・権限・環境分離」が揃って初めて、プロンプトはチームで安心して改善できる資産になります。エージェント全体の運用設計とあわせて、AIエージェント導入完全ロードマップも参照すると、PromptOpsがどこに位置づくか整理しやすくなります。
ツールの選択肢:LangSmith / Langfuse / PromptLayer / Heliconeの位置づけ
「結局どのツールを使えばいいのか」という質問が必ず来ます。2026年6月時点での各ツールの位置づけを、用途別に整理します。各ツールの料金・機能は変動が激しいため、導入前に必ず公式サイトで最新情報を確認してください。
| ツール | 性格 | 強み | こんなチームに |
|---|---|---|---|
| LangSmith | 商用・LangChainエコシステム | Prompt Hub+環境分離+トレース連携。バージョンと実行ログが地続き | LangChain/LangGraphを使っている/本番トレースと一体運用したい |
| Langfuse | オープンソース(セルフホスト可) | バージョン/ラベル設計が明快。保護ラベルでガバナンス。非エンジニアもUI編集 | データを自社で持ちたい/OSSで始めたい |
| PromptLayer | 商用・プロンプト中心 | git風レジストリ+A/Bリリース。非エンジニア向けUIが厚い | プロダクト/CS担当もプロンプトを触る運用にしたい |
| Helicone | OSS・オブザーバビリティ起点 | 1行でログ計測。プロンプト管理V2+実験機能 | まず観測・ログから入りたい |
1点、導入判断で確認すべき動きがあります。Heliconeは2026年にMintlifyへの参画が公式に告知されています。プロンプト管理・実験機能自体は提供されていますが、今後の開発方針やサポート状況は変わり得るため、本番採用前に必ず公式の最新アナウンスを確認してください。ツールは“今動くか”だけでなく“今後もメンテされるか”で選ぶのが、運用資産を預ける際の鉄則です。
選定に迷ったら、次の優先順位で考えると外しにくいです。
- 既にLangChain系を使っている → LangSmith(連携が最短)
- データを自社管理したい/OSSが要件 → Langfuse
- 非エンジニアの編集・A/Bを重視 → PromptLayer
- まず観測から → 観測ツールを入れ、プロンプト管理は後付け
【要注意】よくある失敗パターンと回避策
失敗1:いきなり全社にツールを導入しようとする
❌ 最初から全プロンプトを専用レジストリへ移行
⭕ 一番効いているプロンプト1つだけを外部ファイル化し、バージョン番号を付ける
なぜ重要か:PromptOpsの価値は「履歴が見える・切り戻せる・比較できる」の体験から実感されます。小さく始めて効果を確認してから広げるほうが、結局は早く浸透します。
失敗2:評価データセットを用意せずに本番反映する
❌ 「良くなった気がする」で本番ラベルを付け替える
⭕ 20件の評価セットで新旧を比較し、回帰がないことを確認してから昇格
なぜ重要か:プロンプトの変更は、ある質問では改善しても別の質問では悪化する“こっそり回帰”を起こします。データセットがないと、これに気づけません。
失敗3:ロールバック経路を設計していない
❌ 新バージョンを直接コードに埋め込み、戻すには再デプロイが必要
⭕ ラベル(タグ)参照にしておき、付け替えだけで即座に旧版へ戻せる状態にする
なぜ重要か:本番障害時に「コードを直して再デプロイ」では数十分〜数時間止まります。ラベル付け替えなら数秒です。
まとめ:今日から始める3つのアクション
- 今日やること:本番で一番効いているプロンプトを1つ選び、コードから外部ファイルに切り出してバージョン番号を付ける
- 今週中:本番ログから代表的な入力を20件集め、最小の評価データセット(JSONL)を作る
- 今月中:LangSmith/Langfuse/PromptLayerのいずれかを試験導入し、ラベル参照+段階リリースで1回“安全に改善する”体験を作る
この記事を読んでPromptOpsの導入イメージが固まってきた方へ。
Uravationでは、AIエージェント・生成AI機能の本番運用設計や社内導入の研修・コンサルティングを行っています。プロンプトの資産化や評価設計でお困りの際は、お気軽にご相談ください。
あわせて読みたい
- コンテキストエンジニアリング実践ガイド — プロンプトに渡す文脈の設計・圧縮を扱う
- AI評価(Evals)とLLM-as-a-Judge設計ガイド — 変更前後の品質を測る判定設計
- AIエージェント導入完全ロードマップ — PromptOpsの全体像での位置づけ
著者:佐藤傑(さとう・すぐる)。株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。100社以上の企業向けAI研修・導入支援。著書『AIエージェント仕事術』。
参考・出典
- The Complete Guide to Prompt Engineering Operations (PromptOps) in 2026 — Adaline(参照日: 2026-06-04)
- Manage prompts(LangSmith Prompt Hub・バージョニング) — LangChain公式ドキュメント(参照日: 2026-06-04)
- Open Source Prompt Management — Langfuse公式ドキュメント(参照日: 2026-06-04)
- Version Control(バージョンとラベルによるデプロイ) — Langfuse公式ドキュメント(参照日: 2026-06-04)
- Prompt Registry — PromptLayer公式ドキュメント(参照日: 2026-06-04)
- A/B Releases(段階リリース・トラフィック分割) — PromptLayer公式ドキュメント(参照日: 2026-06-04)
- Prompt Management Overview — Helicone公式ドキュメント(参照日: 2026-06-04)
