Uberのプロンプトエンジニアリング・ツールキット
(uber.com)- LLMの正確で適切な出力を得るには、洗練されたプロンプト設計が不可欠
- プロンプト設計により、機械学習に慣れていないユーザーでも最小限のオーバーヘッドでモデル出力を制御できる
- UberはLLMを迅速に反復実験できるよう、集中管理型ツールキットを開発
- プロンプトテンプレートの作成と管理
- RAGおよび実行時データセットの活用
- 機能:
- システム命令、動的コンテキスト化、大規模オフライン生成(LLM推論)、応答評価をサポート
- バージョン管理、コラボレーション、安全性確認(ハルシネーションチェック、標準評価フレームワーク、安全ポリシーを含む)
プロンプトエンジニアリングのライフサイクル
プロンプトエンジニアリングのライフサイクルは2段階で構成される:
- 開発段階: LLM探索、プロンプトテンプレート反復、評価の3段階で構成
- LLM探索段階: モデルカタログとGenAI Playgroundを通じて利用可能なLLMを探索し、プロンプトでLLMの応答をテスト
- プロンプトテンプレート反復段階: 具体的なビジネス要件を把握し、サンプルデータを収集、プロンプトを作成・分析・テストし、応答を評価して必要に応じて修正。Auto-promptingにより、最初からプロンプトテンプレートを作成する必要はない
- 評価段階: より大きなデータセットでプロンプトテンプレートをテストして性能を測定。LLMを判定者として活用したり、カスタムコードベースのLLM評価器を使って性能評価が可能
- 本番化(Productionization)段階: 評価段階で閾値を通過したプロンプトテンプレートのみを本番化。本番環境での利用を追跡・監視し、システム利用データを収集してプロセス改善に活用
アーキテクチャ
- プロンプトテンプレートUI/SDK: プロンプトテンプレートとリビジョンを管理。GetAPI、Execute APIと統合
- LLMモデルカタログ: デプロイ済みLLMモデルとのインターフェース
- モデルとプロンプトはETCDとUCSに保存され、オフライン生成パイプラインとプロンプトテンプレート評価パイプラインで使用される
プロンプトテンプレートの生成
- プロンプトツールキットのプロンプトビルダーは、ユーザー向けに自動でプロンプトを生成
- 特定のAIユースケースに合わせた高度なプロンプティング技法の発見を支援
- LangChainベースの社内Langfxフレームワークを用いた自動プロンプトビルダーは、以下の手順に従う
- 1. プロンプトエンジニアリングのベストプラクティスを統合
- 2. プロンプト生成を支援するため、テンプレート一覧、詳細なガイドライン、いくつかの例を提供
- 3. プロンプト生成を支援するためにLLMモデルを活用
- 高度なプロンプトガイドライン: プロンプトビルダーは以下の原則を活用してプロンプトを生成
- CoT(Chain of Thought)プロンプティング: 中間推論ステップを通じて複雑な推論能力を可能にする
- Auto-CoT: リーディングワード
think step by stepを使用。手作業を減らすため、LLMにLet's think step by stepプロンプトを活用 - プロンプトチェイニング: 複数の作業や変換を含むシナリオで利用可能
- ToT(Tree of Thought): Chain-of-thoughtプロンプティングを一般化し、言語モデルが一般的な問題解決のための中間段階として使える思考探索を促進
- APE(Automatic Prompt Engineering): 命令生成と選択を自動化するフレームワーク
- マルチモーダルCoTプロンプティング: テキストと画像を2段階フレームワークで統合。第1段階はマルチモーダル情報に基づく根拠生成、第2段階は生成された根拠を活用した回答推論
- リビジョン管理
- プロンプトテンプレートの反復は、コードベースの反復に関するベストプラクティスに従う
- テスト応答やデータセットで検証するため、ユーザーは命令文とモデルパラメータを変更できる
- プロンプトテンプレートの各反復ごとにコードレビューが必要。承認されてマージされると、新しいプロンプトテンプレートのリビジョンが作成される
プロンプトテンプレートの評価
プロンプトテンプレートの性能を評価するため、複数のコンポーネントが連携する:
- 2つの評価メカニズム
- LLMを評価者として使用。主観的品質や言語的ニュアンスが重要なタスクに有用
- カスタムのユーザー定義コードを使用して性能を評価。性能の特定側面を測定するのに有用
- 評価用プロンプトテンプレート: 評価のための命令、簡単な例、指標、応答形式などを提供するユーザーフレンドリーなテンプレート
- 実運用プロンプトテンプレート: 本番で使用されるテンプレート。ランタイムでハイドレーションされ、性能評価に使われる
- 入力データセットの選択肢: ラベル付きゴールデンデータセット、または本番トラフィック由来のデータセット
- 各テンプレートは、特定の命令、コンテキスト、関連モデル、パラメータを考慮して評価される
Uberでのユースケース
オフラインLLMサービス
LLMのバッチ・オフライン生成パイプラインは、大規模なLLM応答生成のためのバッチ推論を容易にする:
- コンシューマーのユーザー名検証ユースケースに活用可能
- MA Studioでは関連データセットを選択して入力するだけでよい
- プロンプトテンプレートはデータセットで動的にハイドレーションされる
オンラインLLMサービス
プロンプトテンプレートには、ランタイム固有の値に置き換える必要がある動的プレースホルダーが含まれる:
- 現在はJinjaベースのテンプレート構文を使用し、文字列型の置換のみをサポート
- プロンプト、テンプレート、モデル間のファンアウト(fan-out)機能をサポート
- テンプレート: APIテンプレートには、汎用データモデルで公開されたペイロードをベンダー固有のAPI構造へフォーマットする機能を含む
- プロンプトとモデル: プロンプトは特定のモデルおよびテンプレートに固定される。サービスはプロンプトを取得し、必要なモデルとテンプレートのパラメータでgenAI APIを呼び出して実行する
要約ユースケースで上記機能を探る:
- サポートチケット(contact)を複数の担当者が処理できるシナリオでは、新しい担当者はコンテキストを理解するためにチケットを確認するか、顧客に問題の再説明を依頼する必要がある
- 担当者間の引き継ぎ時に要約を提供することでこれを解決
モニタリング
モニタリングは、本番で使用される本番プロンプトテンプレートの性能を測定する:
- 日次性能モニタリングパイプラインが本番トラフィックに対する性能評価を実行
- レイテンシ、精度、正確性など、プロンプトテンプレートの本番反復ごとの指標を監視
- MESダッシュボードは性能モニタリング指標で毎日更新される
結論
Uberのプロンプトエンジニアリング・ツールキットは、開発から本番までのさまざまな段階でLLMとの相互作用と活用を高めるための包括的なフレームワークである:
- Gen AI PlaygroundでのLLM機能の初期探索から、詳細なプロンプトテンプレートの反復と生成までを支援
- ツールキットのアーキテクチャは、高度なガイドライン技術と堅牢な評価手法を統合したプロンプト設計への体系的アプローチを提供
- プロンプトテンプレートの開発から本番利用、モニタリングまでの構造化されたライフサイクルにより、各テンプレートが厳格にテストされ、性能のために最適化されることを保証
- 今後はオンライン評価および評価用RAG、オフライン生成用RAGとの統合を計画している
まだコメントはありません。