メインコンテンツまでスキップ

デプロイされたアプリケーションでプロンプトを使用する

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。

このガイドでは、 MLflow Prompt Registryのプロンプトを本番運用 生成AIアプリケーションで使用する方法を説明します。

生成AI アプリケーションをデプロイするときは、ハードコーディングされたバージョンではなくエイリアスを使用して MLflow プロンプト レジストリからプロンプトを読み込むように構成します。このアプローチにより、再デプロイせずに動的な更新が可能になります。

前提 条件

  1. MLflow と必要なパッケージをインストールする

    Bash
    pip install --upgrade "mlflow[databricks]>=3.1.0"
  2. MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。

  3. プロンプトレジストリを使用するには、 CREATE FUNCTIONEXECUTE 、およびMANAGE権限を持つ Unity Catalog スキーマにアクセスできることを確認してください。

注記

プロンプトを表示または作成するには、 CREATE FUNCTIONEXECUTE 、およびMANAGE権限を持つUnity Catalogスキーマが必要です。 Databricks 試用版アカウントを使用している場合は、Unity Catalog スキーマworkspace.defaultに対する必要な権限があります。

ステップ1.新しいプロンプトを作成する

プロンプトは、Python SDK を使用してプログラムで作成できます。

mlflow.genai.register_prompt()を使用してプロンプトをプログラムで作成します。プロンプトでは、テンプレート変数に二重中括弧構文 ({{variable}}) を使用します。

Python
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.プロンプト・バージョンに別名を追加する

エイリアスを使用すると、静的な文字列タグを特定のプロンプト バージョンに割り当てることができるため、本番運用アプリケーションでプロンプトを参照しやすくなります。 バージョン番号をハードコーディングする代わりに、 productionstagingdevelopmentなどの意味のあるエイリアスを使用できます。本番運用プロンプトを更新する必要がある場合は、アプリケーション コードを変更または再デプロイせずに、新しいバージョンを指すようにproductionエイリアスを再割り当てします。

Python
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

アプリケーションでプロンプトを参照する方法を次に示します。

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

バージョン管理ワークフロー

エイリアスを使用すると、開発中にプロンプトを反復処理し、アプリケーション コードを変更せずに環境全体でプロンプトをプロモートできます。

開発ワークフロー

本番運用に昇格する前に、開発エイリアスを使用してプロンプトの変更をテストします。

Python
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

プロモーションワークフロー

エイリアスを再割り当てして環境間でプロンプトを昇格します。

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

エイリアス戦略

チームの展開パターンに基づいてエイリアス戦略を設計します。次の例は、一般的なアプローチを示しています。

Python
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 エージェントの手動認証を参照してください。

次のステップ

関連リンク