人間によるフィードバックのクイックスタート
このクイックスタートでは、エンドユーザーからのフィードバックを収集し、開発者の注釈を追加し、専門家によるレビュー セッションを作成し、そのフィードバックを使用して 生成AI アプリの品質を評価する方法について説明します。
これは、ヒューマンフィードバックライフサイクルの次の手順をカバーしています。
- MLflow トレースを使用して GenAI アプリをインストルメント化します。
- エンドユーザーのフィードバックを収集します (この例では、エンドユーザーのフィードバックは SDK を使用してシミュレートされます)。
- UI を通じて開発者のフィードバックをインタラクティブに追加します。
- トレースと一緒にフィードバックを表示します。
- 構造化された専門家によるレビューのためのラベリングセッションを作成します。
- 専門家のフィードバックを使用して、アプリの品質を評価します。
このページのすべてのコードは、 サンプル ノートブックに含まれています。
前提 条件
-
MLflow と必要なパッケージをインストールする
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" openai "databricks-connect>=16.1"
-
MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。
手順 1: 簡単なアプリを作成してトレースする
まず、MLflow トレースで LLM を使用して、単純な GenAI アプリを作成します。
import mlflow
from openai import OpenAI
# Enable automatic tracing for all OpenAI API calls
mlflow.openai.autolog()
# Connect to a Databricks LLM via OpenAI using the same credentials as MLflow
# Alternatively, you can use your own OpenAI credentials here
mlflow_creds = mlflow.utils.databricks_utils.get_databricks_host_creds()
client = OpenAI(
api_key=mlflow_creds.token,
base_url=f"{mlflow_creds.host}/serving-endpoints"
)
# Create a RAG app with tracing
@mlflow.trace
def my_chatbot(user_question: str) -> str:
# Retrieve relevant context
context = retrieve_context(user_question)
# Generate response using LLM with retrieved context
response = client.chat.completions.create(
model="databricks-claude-3-7-sonnet", # If using OpenAI directly, use "gpt-4o" or "gpt-3.5-turbo"
messages=[
{"role": "system", "content": "You are a helpful assistant. Use the provided context to answer questions."},
{"role": "user", "content": f"Context: {context}\n\nQuestion: {user_question}"}
],
temperature=0.7,
max_tokens=150
)
return response.choices[0].message.content
@mlflow.trace(span_type="RETRIEVER")
def retrieve_context(query: str) -> str:
# Simulated retrieval - in production, this would search a vector database
if "mlflow" in query.lower():
return "MLflow is an open-source platform for managing the end-to-end machine learning lifecycle. It provides tools for experiment tracking, model packaging, and deployment."
return "General information about machine learning and data science."
# Run the app to generate a trace
response = my_chatbot("What is MLflow?")
print(f"Response: {response}")
# Get the trace ID for the next step
trace_id = mlflow.get_last_active_trace_id()
print(f"Trace ID: {trace_id}")
ステップ 2: エンドユーザーのフィードバックを収集する
ユーザーがアプリを操作するとき、親指を立てる/下向きにするボタンなどの UI 要素を通じてフィードバックを提供できます。このクイックスタートでは、SDK を直接使用して、否定的なフィードバックを提供するエンド ユーザーをシミュレートします。
import mlflow
from mlflow.entities.assessment import AssessmentSource, AssessmentSourceType
# Simulate end-user feedback from your app
# In production, this would be triggered when a user clicks thumbs down in your UI
mlflow.log_feedback(
trace_id=trace_id,
name="user_feedback",
value=False, # False for thumbs down - user is unsatisfied
rationale="Missing details about MLflow's key features like Projects and Model Registry",
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="enduser_123", # Would be actual user ID in production
),
)
print("End-user feedback recorded!")
# In a real app, you would:
# 1. Return the trace_id with your response to the frontend
# 2. When user clicks thumbs up/down, call your backend API
# 3. Your backend would then call mlflow.log_feedback() with the trace_id
ステップ 3: UI でフィードバックを表示する
MLflow UI を起動して、フィードバック付きのトレースを確認します。
- MLflowエクスペリメントに移動します。
- [トレース] タブに移動します。
- トレースをクリックします。
- トレースの詳細ダイアログが表示されます。ダイアログの右側にある [評価 ] の下に、ユーザーが応答を [サムズ]
false
マークしたことを示すuser_feedback
が表示されます。
ステップ 4: UI を使用して開発者の注釈を追加する
開発者は、独自のフィードバックやメモを UI に直接追加することもできます。
-
[トレース ] タブで、トレースをクリックして開きます。
-
任意のスパンをクリックします (トレース レベルのフィードバックのルート スパンを選択します)。
-
右側の 「評価」 タブで、「 新しい評価を追加 」をクリックし、次の項目を入力します。
- タイプ :
Feedback
またはExpectation
。 - 名前 : たとえば、"accuracy_score"。
- 値 : 評価。
- 根拠 : オプションの説明。
- タイプ :
-
作成 をクリックします。
ページを更新すると、新しい評価の列が [トレース] テーブルに表示されます。
ステップ 5: 専門家によるレビューのためにトレースを送信する
ステップ 2 のエンドユーザーからの否定的なフィードバックは、潜在的な品質問題を示していますが、本当に問題があるかどうかを確認し、正しい答えを提供できるのは、ドメインの専門家だけです。ラベル付けセッションを作成して、信頼できる専門家のフィードバックを取得します。
import mlflow
from mlflow.genai.label_schemas import create_label_schema, InputCategorical, InputText
from mlflow.genai.labeling import create_labeling_session
# Define what feedback to collect
accuracy_schema = create_label_schema(
name="response_accuracy",
type="feedback",
title="Is the response factually accurate?",
input=InputCategorical(options=["Accurate", "Partially Accurate", "Inaccurate"]),
overwrite=True
)
ideal_response_schema = create_label_schema(
name="expected_response",
type="expectation",
title="What would be the ideal response?",
input=InputText(),
overwrite=True
)
# Create a labeling session
labeling_session = create_labeling_session(
name="quickstart_review",
label_schemas=[accuracy_schema.name, ideal_response_schema.name],
)
# Add your trace to the session
# Get the most recent trace from the current experiment
traces = mlflow.search_traces(
max_results=1 # Gets the most recent trace
)
labeling_session.add_traces(traces)
# Share with reviewers
print(f"Trace sent for review!")
print(f"Share this link with reviewers: {labeling_session.url}")
エキスパートのレビュー担当者は、次の操作を実行できるようになりました。
- レビューアプリのURLを開きます。
- 質問と回答 (エンドユーザーのフィードバックを含む) でトレースを確認します。
- 応答が実際に正確かどうかを評価します。
- 必要に応じて、
expected_response
で正しい答えを入力してください。 - 彼らの専門家による評価をグラウンドトゥルースとして提出してください。
次のように、MLflow 3 UI を使用してラベル付けセッションを作成することもできます。
- エクスペリメントページで、[ ラベリング] タブをクリックします。
- 左側にある 「セッション 」タブと 「スキーマ 」タブを使用して、新しいラベルスキーマを追加し、新しいセッションを作成します。
ステップ 6: フィードバックを使用してアプリを評価する
専門家からフィードバックを提供したら、その expected_response
ラベルを使用して、MLflow の Correctness スコアラーでアプリを評価します。
この例では、評価にトレースを直接使用します。DatabricksMLflowアプリケーションでは、ラベル付きトレースを Evaluation データセットに追加して 、バージョンの追跡とリネージを提供することをお勧めします。評価セットの作成ガイドを参照してください。
import mlflow
from mlflow.genai.scorers import Correctness
# Get traces from the labeling session
labeled_traces = mlflow.search_traces(
run_id=labeling_session.mlflow_run_id, # Labeling Sessions are MLflow Runs
)
# Evaluate your app against expert expectations
eval_results = mlflow.genai.evaluate(
data=labeled_traces,
predict_fn=my_chatbot, # The app we created in Step 1
scorers=[Correctness()] # Compares outputs to expected_response
)
正確性スコアラーは、アプリの出力を専門家が提供する expected_response
と比較し、専門家の期待との整合性に関する定量的なフィードバックを提供します。
ノートブックの例
次のノートブックには、このページのすべてのコードが含まれています。
人間によるフィードバックのクイックスタート ノートブック
次のステップ
これらの推奨アクションとチュートリアルで旅を続けてください。
- 評価データセットの構築 - 本番運用のフィードバックから包括的なテストデータセットを作成
- 開発中のラベル付け - 開発のための高度なアノテーション手法を学ぶ
- ドメインの専門家からのフィードバックを収集する - 専門家による体系的なレビュープロセスを設定する
リファレンスガイド
このクイックスタートで説明されている概念と機能の詳細については、以下を参照してください。
- レビュー アプリ - MLflow の人間フィードバック インターフェイスを理解する
- ラベリングセッション - 専門家によるレビューセッションの仕組みを学ぶ
- ラベル付けスキーマ - フィードバックの構造と種類を調べる