次の方法で共有


プロンプトレジストリ

Important

この機能は ベータ版です

概要

MLflow Prompt Registry は、ライフサイクル全体にわたってプロンプト テンプレートを管理するための一元化されたリポジトリです。 これにより、チームは次のことが可能になります。

  • Git に似たバージョン管理、コミット メッセージ、ロールバック機能を使用したプロンプトのバージョン管理と追跡
  • 変更可能な参照 ("運用"、"ステージング"など) を使用して、A/Bテストと段階的なロールアウトのために、エイリアスを使って安全にデプロイする
  • エンジニア以外のユーザーが UI を使用してプロンプトを変更できるようにすることで、コードを変更せずに共同作業を行う
  • LangChain、LlamaIndex、およびその他の GenAI フレームワークを含む任意のフレームワークと統合する
  • アクセス制御と監査証跡のための Unity カタログ統合によるガバナンスの維持
  • プロンプトを実験と評価結果にリンクして系列を追跡する

Prompt Registry は、Git に似たモデルに従います。

  • プロンプト: Unity Catalog の名前付きエンティティ
  • バージョン: 自動インクリメント番号を持つ不変スナップショット
  • エイリアス: 特定のバージョンへの変更可能なポインター
  • タグ: バージョン固有のキーと値のペア

[前提条件]

  1. Unity カタログのサポートを使用して MLflow をインストールします。
    pip install --upgrade "mlflow[databricks]>=3.1.0"
    
  2. 環境のセットアップのクイックスタートに従って、MLflow 実験を作成します。
  3. プロンプト レジストリでプロンプトを表示または作成するための CREATE FUNCTIONEXECUTEMANAGE のアクセス許可を持つ Unity カタログ スキーマにアクセスできることを確認します。

簡単スタート

次のコードは、Prompt Registry を使用するための基本的なワークフローを示しています。 テンプレート変数の二重中括弧構文に注目してください。

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 つの主要な関数をまとめたものです。 例については、 プロンプト レジストリの例を参照してください。

機能 目的
register_prompt() 新しいプロンプトを作成するか、新しいバージョンを追加する
load_prompt() 特定のプロンプト バージョンまたはエイリアスを取得する
search_prompts() 名前、タグ、またはメタデータでプロンプトを検索する
set_prompt_alias() エイリアス ポインターを作成または更新する
delete_prompt_alias() エイリアスを削除する (バージョンは残ります)
delete_prompt() プロンプト全体または特定のバージョンを削除する

プロンプト テンプレートの形式

プロンプト テンプレートは、単純なプロンプトと会話の 2 つの形式で格納できます。 どちらの場合も、二重中かっこ構文 "Hello {{name}}"を使用してプロンプト文字列をテンプレート化できます。

Format Python 型 Description Example
単純なプロンプト str 単一メッセージ プロンプト テンプレート "Summarize the content below in {{num_sentences}} sentences. Content: {{content}}"
会話 List[dict] dict は、'role' キーと 'content' キーを持つ 1 つのメッセージです [{"role": "user", "content": "Hello {{name}}"}, ...]

次の例は、テンプレート変数に二重中かっこ形式を使用して、単純なプロンプトと会話スタイルのプロンプトの両方を示しています。

# 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-string 構文) がサポートされています: "Hello {name}"。 互換性を保つために、MLflow ではプロンプトを単一の中かっこ形式に変換することができます。

LangChain

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

LlamaIndex(ラマインデックス)

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})

次のステップ