🦔

Databricks Mlflow3 プロンプトレジストリ の機能

に公開

mlflow3に関して

https://docs.databricks.com/aws/ja/mlflow/mlflow-3-install


(引用:https://docs.databricks.com/aws/ja/mlflow/)

機能

  • トラッキング:エクスペリメントを追跡して、パラメーターと結果を記録および比較できます。
  • モデル: さまざまな ML ライブラリからさまざまなモデルサービングおよび推論プラットフォームに-モデルを管理およびデプロイできます。
  • モデルレジストリ: モデルのバージョン管理とアノテーション機能を使用して、ステージングから本番運用までのモデルデプロイプロセスを管理できます。
    AI エージェントの評価とトレース

利用開始にあたり

(2025/6/18 beta版で、Managed MLflow Prompt Registry の機能をONにする必要があります。)

OFFの場合の例外メッセージ
RestException: FEATURE_DISABLED: CreatePrompt: Prompt registry is not enabled for organization

databricks上(notebook)でのインストールコマンドは下記

%pip install --upgrade "mlflow[databricks]>=3.1.0"
dbutils.library.restartPython()

プロンプトレジストリ

プロンプトレジストリの作成

https://learn.microsoft.com/ja-jp/azure/databricks/mlflow3/genai/prompt-version-mgmt/prompt-registry/reference
https://docs.databricks.com/gcp/ja/mlflow3/genai/prompt-version-mgmt/prompt-registry/use-prompts-in-deployed-apps

nameの指定には少し注意が必要っぽい

import mlflow

uc_schema = "catalog_name.agentai" # Unity Catalogのスキーマ
prompt_name = "ai_assistant_prompt"

prompt_template = """\
あなたは優秀なAIアシスタントです。ユーザーの質問に対し、明快かつ正確かつ簡潔に回答してください。

## 質問:
{{question}}

## ガイドライン:
- 事実に基づき、要点を押さえた回答をしてください。
- 必要に応じて、例やステップバイステップの手順を提示してください。
- 質問が不明瞭な場合は、回答する前に確認してください。

以下に回答してく![](https://storage.googleapis.com/zenn-user-upload/ed73248dc96e-20250618.png)ださい:
"""

# register the prompt
prompt = mlflow.genai.register_prompt(
    name=f"{uc_schema}.{prompt_name}",
    template=prompt_template,
    commit_message="Initial version of AI assistant prompt",
)

成功するとexperiments側から閲覧することができました。

エイリアス機能を活用する。

バージョンに対してエイリアスを指定できる。

import mlflow
mlflow.genai.set_prompt_alias(
    name=f"{uc_schema}.{prompt_name}",
    alias="production",
    version=4
)

公式ドキュメントではproduction、 staging、 development等意味のあるエイリアスをつけてみるのがいいとのこと。

このエイリアスは、自分が確認した限り、experimentsのUIからは確認できなかった。
またプロンプトのロードで、エイリアス指定でがうまく呼び出せなかった。(2025/06/18)

プロンプトのロード

呼び出すためのURLは下記の構造にすればいいとのこと
prompts:/{catalog}.{schema}.{prompt_name}/{version}

uri = "prompts:/catalog_name.agentai.ai_assistant_prompt/4"
prompt = mlflow.genai.load_prompt(uri)

decoded_text = prompt.format(question="What is MLflow?").encode('utf-8').decode('unicode_escape')
print(decoded_text)

出力結果
あなたは優秀なAIアシスタントです。ユーザーの質問に対し、明快かつ正確かつ簡潔に回答してください。

## 質問:
What is MLflow?

## ガイドライン:
- 事実に基づき、要点を押さえた回答をしてください。
- 必要に応じて、例やステップバイステップの手順を提示してください。
- 質問が不明瞭な場合は、回答する前に確認してください。

以下に回答してください:

Discussion