デプロイされたアプリケーションでプロンプトを使用する
ベータ版
この機能は ベータ版です。
このガイドでは、 MLflow Prompt Registryのプロンプトを本番運用 生成AIアプリケーションで使用する方法を説明します。
生成AI アプリケーションをデプロイするときは、ハードコーディングされたバージョンではなくエイリアスを使用して MLflow プロンプト レジストリからプロンプトを読み込むように構成します。このアプローチにより、再デプロイせずに動的な更新が可能になります。
前提 条件
-
MLflow と必要なパッケージをインストールする
Bashpip install --upgrade "mlflow[databricks]>=3.1.0"
-
MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。
-
Unity Catalog スキーマへのアクセス
CREATE FUNCTION
- なぜでしょうか。プロンプトは、関数として UC に格納されます
プロンプト レジストリを使用するには、 CREATE FUNCTION
アクセス許可を持つ Unity Catalog スキーマが必要です。Databricks 試用版アカウントを使用している場合は、Unity Catalog スキーマ workspace.default
に対する CREATE TABLE 権限があります。
ステップ1.新しいプロンプトを作成する
プロンプトは、Python SDK を使用してプログラムで作成できます。
プロンプトをプログラムで作成するには、 mlflow.genai.register_prompt()
を使用します。プロンプトでは、テンプレート変数に二重中括弧構文 ({{variable}}
) を使用します。
import mlflow
# Replace with a Unity Catalog schema where you have CREATE FUNCTION permission
uc_schema = "workspace.default"
# This table will be created in the above UC schema
prompt_name = "summarization_prompt"
# Define the prompt template with variables
initial_template = """\
Summarize content you are provided with in {{num_sentences}} sentences.
Content: {{content}}
"""
# Register a new prompt
prompt = mlflow.genai.register_prompt(
name=f"{uc_schema}.{prompt_name}",
template=initial_template,
# all parameters below are optional
commit_message="Initial version of summarization prompt",
tags={
"author": "data-science-team@company.com",
"use_case": "document_summarization"
"task": "summarization",
"language": "en",
"model_compatibility": "gpt-4"
}
)
print(f"Created prompt '{prompt.name}' (version {prompt.version})")
ステップ2.プロンプト・バージョンに別名を追加する
エイリアスを使用すると、静的文字列タグを特定のプロンプト・バージョンに割り当てることができるため、本番運用アプリケーションでのプロンプトの参照が容易になります。 バージョン番号をハードコーディングする代わりに、 production
、 staging
、 development
などの意味のあるエイリアスを使用できます。本番運用プロンプトを更新する必要がある場合は、アプリケーションコードを変更したり再デプロイしたりすることなく、 production
エイリアスを新しいバージョンを指すように再割り当てするだけです。
import mlflow
mlflow.genai.set_prompt_alias(
name=f"{uc_schema}.{prompt_name}",
alias="production",
version=1
)
手順 3: アプリでプロンプトを参照する
プロンプトを登録してエイリアスを割り当てたら、デプロイされたアプリケーションでプロンプト URI 形式を使用して参照できます。推奨されるアプローチは、環境変数を使用してアプリケーションを柔軟にし、プロンプト参照のハードコーディングを回避することです。
プロンプト URI の形式は次のとおりです。 prompts:/{catalog}.{schema}.{prompt_name}@{alias}
ステップ 1 で登録したプロンプトを使用すると、URI は次のようになります。
prompts://workspace.default.summarization_prompt@production
アプリケーションでプロンプトを参照する方法を次に示します。
import mlflow
import os
from typing import Optional
class ProductionApp:
def __init__(self):
# Use environment variable for flexibility
self.prompt_alias = os.getenv("PROMPT_ALIAS", "production")
self.prompt_name = os.getenv("PROMPT_URI", "workspace.default.summarization_prompt")
def get_prompt(self) -> str:
"""Load prompt from registry using alias."""
uri = f"prompts:/{self.prompt_name}@{self.prompt_alias}"
prompt = mlflow.genai.load_prompt(uri)
return prompt
# Rest of your application's code
# Example usage
app = ProductionApp()
prompt = app.get_prompt()
print(f"Loaded prompt: {prompt}")
次のステップ
- Link 本番運用トレースをアプリバージョンにリンク - 本番運用でどのプロンプトバージョンが使用されているかを追跡します
- 本番運用で scorers を実行 - デプロイされたプロンプトの品質を監視します
- プロンプトの評価 - 本番運用に昇格する前に、新しいプロンプトバージョンをテストします