デプロイされたアプリケーションでプロンプトを使用する
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。
このガイドでは、 MLflow Prompt Registryのプロンプトを本番運用 生成AIアプリケーションで使用する方法を説明します。
生成AI アプリケーションをデプロイするときは、ハードコーディングされたバージョンではなくエイリアスを使用して MLflow プロンプト レジストリからプロンプトを読み込むように構成します。このアプローチにより、再デプロイせずに動的な更新が可能になります。
前提 条件
-
MLflow と必要なパッケージをインストールする
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" -
MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。
-
プロンプトレジストリを使用するには、
CREATE FUNCTION、EXECUTE、およびMANAGE権限を持つ Unity Catalog スキーマにアクセスできることを確認してください。
プロンプトを表示または作成するには、 CREATE FUNCTION 、 EXECUTE 、およびMANAGE権限を持つUnity Catalogスキーマが必要です。 Databricks 試用版アカウントを使用している場合は、Unity Catalog スキーマworkspace.defaultに対する必要な権限があります。
ステップ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
mlflow.set_tracking_uri("databricks")
mlflow.set_registry_uri("databricks-uc")
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}")
バージョン管理ワークフロー
エイリアスを使用すると、開発中にプロンプトを反復処理し、アプリケーション コードを変更せずに環境全体でプロンプトをプロモートできます。
開発ワークフロー
本番運用に昇格する前に、開発エイリアスを使用してプロンプトの変更をテストします。
from datetime import datetime
import mlflow
def develop_prompt(base_name: str, changes: str):
"""Iterate on prompts during development."""
# Register new version
new_version = mlflow.genai.register_prompt(
name=base_name,
template=changes,
commit_message=f"Dev iteration: {datetime.now()}"
)
# Update dev alias
mlflow.genai.set_prompt_alias(
name=base_name,
alias="dev",
version=new_version.version
)
return new_version
プロモーションワークフロー
エイリアスを再割り当てして環境間でプロンプトを昇格します。
import mlflow
def promote_prompt(name: str, from_env: str, to_env: str):
"""Promote prompt from one environment to another."""
# Get current version in source environment
source = mlflow.genai.load_prompt(f"prompts:/{name}@{from_env}")
# Point target environment to same version
mlflow.genai.set_prompt_alias(
name=name,
alias=to_env,
version=source.version
)
print(f"Promoted {name} v{source.version} from {from_env} to {to_env}")
エイリアス戦略
チームの展開パターンに基づいてエイリアス戦略を設計します。次の例は、一般的なアプローチを示しています。
import mlflow
# Standard environment aliases
ENVIRONMENT_ALIASES = ["dev", "staging", "production"]
# Feature branch aliases
def create_feature_alias(prompt_name: str, feature: str, version: int):
"""Create alias for feature development."""
mlflow.genai.set_prompt_alias(
name=prompt_name,
alias=f"feature-{feature}",
version=version
)
# Regional aliases
REGIONAL_ALIASES = {
"us": "production-us",
"eu": "production-eu",
"asia": "production-asia"
}
# Rollback-ready aliases
def safe_production_update(name: str, new_version: int):
"""Update production with rollback capability."""
try:
# Save current production
current = mlflow.genai.load_prompt(f"prompts:/{name}@production")
mlflow.genai.set_prompt_alias(name, "production-previous", current.version)
except:
pass # No current production
# Update production
mlflow.genai.set_prompt_alias(name, "production", new_version)
Mosaic AI Agent Framework を使用してデプロイされたエージェントでプロンプト レジストリを使用する
エージェント フレームワークを使用してデプロイされたエージェントからプロンプト レジストリにアクセスするには、手動認証を使用し、セキュリティ環境変数をオーバーライドして、レジストリに接続するように Databricks クライアントを構成する必要があります。
これらのセキュリティ環境変数をオーバーライドすると、エージェントが依存する他のリソースの自動パススルーが無効になります。
詳細については、 AI エージェントの手動認証を参照してください。
次のステップ
- 本番運用トレースをアプリのバージョンにリンクする- 本番運用で使用されるプロンプト バージョンを追跡します
- 本番運用でスコアラーを実行 - デプロイされたプロンプトの品質を監視します
- プロンプトの評価 - 本番運用に昇格する前に、新しいプロンプトバージョンをテストします