top of page

[LLMOps] プロンプト管理の課題

  • 執筆者の写真: KAMON Nobuchika
    KAMON Nobuchika
  • 2月15日
  • 読了時間: 5分

更新日:6 日前


はじめに:生成AIが抱える困難とプロンプト


生成AIアプリケーションの開発は、従来のソフトウェア開発とは異なる難しさがあります。


その一つが、生成AIの出力の不安定さです。そしてこの不安定さに大きく関わっているのが、プロンプトです。生成AIは、人間が与える指示、つまりプロンプトに基づいて動作しますが、プロンプトが適切でなければ、生成AIはその能力を十分に発揮できません。


しかし、プロンプトの重要性は認識されつつも、その管理は後回しにされがちです。多くの開発現場では、プロンプトがコードの中に直接埋め込まれ、場当たり的に修正されているのが現状ではないでしょうか。(少なくとも、筆者は多くそのような現場を見聞きしています)


LLMOps のプロンプト管理とは?:なぜ必要で、何が問題なのか


プロンプト管理とは、生成AIへの指示(プロンプト)を体系的に作成、テスト、改善、保存、共有するプロセス全体を指します。

プロンプト管理の目的は、主に以下の4つです。


  1. 品質向上: 生成AIの出力の品質を向上させ、安定させる。

  2. 一貫性確保: 同じプロンプトからは常に同じ品質の出力が得られるようにする。

  3. 効率化: プロンプトの作成、テスト、改善のサイクルを効率化する。

  4. 再利用性向上: 良いプロンプトをチーム内で共有し、再利用できるようにする。


これらの目的を達成するために、プロンプトを適切に管理する必要があります。

しかし、現状では以下のような問題点があります。


問題点1:コード埋め込みプロンプトの罠


開発時には、作業を優先させることに意識がいってしまい、プロンプトはプログラムコードの中に直接埋め込まれてしまいがちで、結果として以下のような問題を引き起こします。


  • 保守性の低下: プロンプト変更のたびにアプリケーションと一緒に テスト, デプロイのパイプラインなどを回すため、とにかく手間や時間ががかかる。

  • 再利用性の低下: 他のアプリケーションやチームメンバーがプロンプトを再利用しにくい。

  • 可読性の低下: コードとプロンプトが混在し、コード全体の読みやすさが下がる。

  • バージョン管理の困難: プロンプトの変更履歴が追跡しにくく、問題発生時の原因特定が難しい。


上記のうち特に保守性の低下は致命的であり、開発,修正,テストというサイクルに無駄な工数や待ち時間などが発生してしまいます。


Prompt をコードに埋め込むとコードと同じ工程でリリースをすることになるが、その効果は特になく時間と手間だけが発生する
Prompt をコードに埋め込むとコードと同じ工程でリリースをすることになるが、その効果は特になく時間と手間だけが発生する

問題点2:Gitやデータベースでの管理の限界


プロンプトをコードから分離するためには、Gitやデータベースで管理する方法も考えられます。それらの特徴を大まかにまとめるたものが以下の表です。


プロンプト管理:データベース vs. Git

項目

データベース

Git

対象ユーザー

システム開発者

システム開発者 (あるいはGit作業についてトレーニングを受けた方)

利用スキル要件

DB設計・運用、SQL、加えて何らかの管理用アプリケーションが必要になるケースがある

Git操作(コミット、ブランチ、マージ等)

データ形式

構造化データ(プロンプト、メタデータ)

非構造化データ(主にテキスト)

バージョン管理

履歴記録可能(実装依存)、差分比較は困難

履歴記録・追跡が容易、過去バージョンへ復元可、差分比較も容易

共有・コラボ

共有可能(同時アクセス、排他制御はDBによる)、専門知識必要、リアルタイム共同編集は困難

共有容易(リモートリポジトリ)、プルリクエストでレビュー可、権限管理可、ただし非技術者には難解

テスト・評価

テスト結果保存は要開発、自動評価連携は困難、プロンプトと出力結果の紐付けについても開発が必要

テスト自動化はCI/CD連携でアプリケーションと一体で実施 (プロンプト単体の評価は不可能)、自動での評価機能なし、出力結果との紐付け困難

検索性・再利用性

属性検索可、自然言語特性の完全な表現は困難

Git機能だけでは不十分(別途プロンプトライブラリ等必要)


この表からわかるように、Gitとデータベースはそれぞれプロンプト管理に活用できる側面があるものの、多くの課題が残ります。

またプロンプトは本来はシステム開発者ではなく、生成AIのアウトプットの良し悪しが分かる 業務エキスパート (ドメインエキスパート) によって修正、テスト、評価をするべき にもかかわらず、両者ともシステム開発者の手により管理されることになります。


プロンプトがコードと一体化することにより、システム開発者はプロンプトの責任を持たざるを得ないが、正解が分からない悲劇
プロンプトがコードと一体化することにより、システム開発者はプロンプトの責任を持たざるを得ないが、正解が分からない悲劇

コードにプロンプトを取り込むことにより、生成AIのシステム開発者の管理スコープはプロンプトに及びます。なぜならば、変更できるのがシステム開発者だけだからです。


しかし生成AIシステムの品質を追求するためには、組織のあるべき姿として、コード管理はシステム開発者が実施し、プロンプトは生成AIに出して欲しい期待値を知っている業務エキスパートの手に委ねるべきなのです。



まとめ:プロンプト管理の課題を克服するために


生成AIアプリケーションの品質は、プロンプトの品質に大きく左右されます。しかし、プロンプトはコードに埋め込まれたり、Gitやデータベースで十分に管理されていなかったりすることが多く、様々な問題を引き起こしています。


これらの問題を解決し、生成AIのポテンシャルを最大限に引き出すためには、プロンプト管理の仕組みをアプリケーション開発者以外でも対応できるよう整備し、プロンプト管理とテスト - 改善のプロセスを一元的に確立させることが不可欠です。


[次回の記事] では、これらの課題を解決するための実例を「Langfuse」と、Langfuseを活用したプロンプト管理を通して詳しく解説します。

Comments


bottom of page