プロンプトレジストリ
ベータ版
この機能はベータ版です。
概要
MLflow プロンプト レジストリは、プロンプト テンプレートをそのライフサイクル全体にわたって管理するための集中リポジトリです。チームは以下が可能になります。
- Git のようなバージョン管理、コミット メッセージ、ロールバック機能を備えた バージョン管理と追跡プロンプト
- A/B テストや段階的なロールアウトでは、変更可能な参照(例:「本番運用」、「ステージング」)を使用した エイリアスを使用して安全にデプロイします 。
- 非エンジニアがUIを通じてプロンプトを変更できるようにすることで 、コードを変更することなく共同作業を行うこと ができます。
- LangChain、LlamaIndex、その他の生成AIフレームワークを含む 任意のフレームワークと統合
- アクセス制御と監査証跡のための Unity Catalog 統合を通じて ガバナンスを維持します
- プロンプトを体験や評価結果にリンクして リネージを追跡する
Prompt レジストリは Git のようなモデルに従います。
- プロンプト : Unity Catalog内の名前付きエンティティ
- バージョン : 自動増分番号による不変スナップショット
- エイリアス : 特定のバージョンへの可変ポインタ
- タグ : バージョン固有のキーと値のペア
前提条件
-
Unity Catalog サポート付きの MLflow をインストールします。
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" -
環境設定のクイックスタートに従ってMLflow拡張機能を作成します。
-
プロンプトレジストリ内のプロンプトを表示または作成するには、
CREATE FUNCTION、EXECUTE、およびMANAGE権限を持つ Unity Catalog スキーマにアクセスできることを確認してください。
クイックスタート
次のコードは、プロンプト レジストリを使用するための基本的なワークフローを示しています。テンプレート変数の二重中括弧構文に注意してください。
import mlflow
# Register a prompt template
prompt = mlflow.genai.register_prompt(
name="mycatalog.myschema.customer_support",
template="You are a helpful assistant. Answer this question: {{question}}",
commit_message="Initial customer support prompt"
)
print(f"Created version {prompt.version}") # "Created version 1"
# Set a production alias
mlflow.genai.set_prompt_alias(
name="mycatalog.myschema.customer_support",
alias="production",
version=1
)
# Load and use the prompt in your application
prompt = mlflow.genai.load_prompt(name_or_uri="prompts:/mycatalog.myschema.customer_support@production")
response = llm.invoke(prompt.format(question="How do I reset my password?"))
SDKの概要
次の表は、Prompt Registry が提供する 6 つの主な機能をまとめたものです。例については、 「プロンプト レジストリの例」を参照してください。
関数 | 目的 |
|---|---|
新しいプロンプトを作成するか、新しいバージョンを追加する | |
特定のプロンプトバージョンまたはエイリアスを取得する | |
名前、タグ、メタデータでプロンプトを検索する | |
エイリアスポインタを作成または更新する | |
エイリアスを削除する(バージョンは残る) | |
プロンプト全体または特定のバージョンを削除する |
プロンプトテンプレートの形式
プロンプト テンプレートは、単純なプロンプトまたは会話の 2 つの形式で保存できます。どちらの場合も、プロンプト文字列は二重中括弧構文"Hello {{name}}"使用してテンプレート化できます。
フォーマット | Python型 | 説明 | 例 |
|---|---|---|---|
シンプルなプロンプト |
| 単一メッセージプロンプトテンプレート |
|
会話 |
| 各 |
|
次の例では、テンプレート変数に二重中括弧形式を使用して、シンプルなプロンプトと会話形式のプロンプトの両方を示しています。
# Simple prompt
simple_prompt = mlflow.genai.register_prompt(
name="mycatalog.myschema.greeting",
template="Hello {{name}}, how can I help you today?",
commit_message="Simple greeting"
)
# Conversation or chat-style prompt
complex_prompt = mlflow.genai.register_prompt(
name="mycatalog.myschema.analysis",
template=[
{"role": "system", "content": "You are a helpful {{style}} assistant."},
{"role": "user", "content": "{{question}}"},
],
commit_message="Multi-variable analysis template"
)
# Use the prompt
rendered = complex_prompt.format(
style="edgy",
question="What is a good costume for a rainy Halloween?"
)
単一括弧形式の互換性
LangChain、LlamaIndex、およびその他のライブラリは、プロンプト テンプレートの単一中括弧構文 (Python f 文字列構文) をサポートしています: "Hello {name}" 。互換性のために、MLflow はプロンプトを単一中括弧形式に変換することをサポートしています。
- LangChain
- LlamaIndex
from langchain_core.prompts import ChatPromptTemplate
# Load from registry
mlflow_prompt = mlflow.genai.load_prompt("prompts:/mycatalog.myschema.chat@production")
# Convert to LangChain format
langchain_template = mlflow_prompt.to_single_brace_format()
chat_prompt = ChatPromptTemplate.from_template(langchain_template)
# Use in chain
chain = chat_prompt | llm | output_parser
from llama_index.core import PromptTemplate
# Load and convert
mlflow_prompt = mlflow.genai.load_prompt("prompts:/mycatalog.myschema.rag@production")
llama_template = PromptTemplate(mlflow_prompt.to_single_brace_format())
# Use in query engine
query_engine.update_prompts({"response_synthesizer:text_qa_template": llama_template})
次のステップ
- プロンプトの作成と編集- 最初のプロンプトの作成を開始する
- デプロイされたアプリでプロンプトを使用する- エイリアスを使用してプロンプトを本番運用にデプロイします
- プロンプトを評価する- プロンプトのバージョンを体系的に比較する