Udostępnij przez


10-minutowy pokaz: Zbieranie opinii użytkowników

W tym samouczku pokazano, jak zbierać opinie użytkowników końcowych, dodawać adnotacje deweloperów, tworzyć sesje przeglądu ekspertów i używać tej opinii do oceny jakości aplikacji GenAI.

Co osiągniesz

Po ukończeniu tego samouczka wykonasz następujące elementy:

  • Instrumentacja aplikacji GenAI za pomocą śledzenia MLflow
  • Zbieranie opinii użytkowników końcowych symulowanych przy użyciu zestawu SDK w tym przykładzie
  • Interakcyjne dodawanie opinii deweloperów za pośrednictwem interfejsu użytkownika
  • Wyświetl informacje zwrotne obok śladów
  • Zbieranie opinii ekspertów przez utworzenie sesji etykietowania na potrzeby przeglądu ekspertów strukturalnych

Konfiguracja środowiska

Zainstaluj wymagane pakiety:

  • mlflow[databricks]: Użyj najnowszej wersji biblioteki MLflow, aby uzyskać więcej funkcji i ulepszeń.
  • openai: Ta aplikacja będzie używać klienta interfejsu API OpenAI do wywoływania modeli hostowanych przez usługę Databricks.
%pip install -q --upgrade "mlflow[databricks]>=3.1.0" openai
dbutils.library.restartPython()

Utwórz eksperyment MLflow. Jeśli używasz notesu usługi Databricks, możesz pominąć ten krok i użyć domyślnego eksperymentu notesu. W przeciwnym razie postępuj zgodnie z szybkim przewodnikiem po konfiguracji środowiska, aby utworzyć eksperyment i nawiązać połączenie z serwerem śledzenia MLflow.

Krok 1. Tworzenie i śledzenie prostej aplikacji

Najpierw utwórz prostą aplikację GenAI przy użyciu modelu LLM ze śledzeniem MLflow. Aplikacja używa interfejsu API OpenAI do wywoływania punktu końcowego modelu bazowego hostowanego przez Databricks.

from databricks.sdk import WorkspaceClient
import mlflow

# Enable automatic tracing for the OpenAI client
mlflow.openai.autolog()

# Create an OpenAI client that is connected to Databricks-hosted LLMs.
w = WorkspaceClient()
client = w.serving_endpoints.get_open_ai_client()

# 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 could 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}")
Response: MLflow is an open-source platform designed to manage the complete machine learning lifecycle. It provides tools and functionality for tracking experiments, packaging models, and deploying machine learning solutions. As a comprehensive platform, MLflow helps data scientists and machine learning engineers organize their work, compare results, and streamline the process of moving models from development to production.
Trace ID: tr-88989bb65dcb9bf49e0d03a3d5a302c9

Krok 2. Zbieranie opinii użytkowników końcowych

Gdy użytkownicy wchodzą w interakcję z aplikacją, mogą przekazać opinię za pośrednictwem elementów interfejsu użytkownika, takich jak kciuki w górę/w dół. Przewodnik Szybki start symuluje, jak użytkownik końcowy może przekazywać negatywne opinie bezpośrednio używając zestawu SDK.

from mlflow.entities.assessment import AssessmentSource, AssessmentSourceType

# Simulate end-user feedback from your app
# In production, this could 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",  # In production, this is the actual user ID
    ),
)

print("End-user feedback recorded!")

# In a real app, you could:
# 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 calls mlflow.log_feedback() with the trace_id
End-user feedback recorded!

Krok 3. Wyświetlanie opinii w interfejsie użytkownika

Uruchom interfejs użytkownika platformy MLflow, aby wyświetlić ślady z opiniami:

  1. Przejdź do eksperymentu MLflow.
  2. Przejdź do karty Dzienniki .
  3. Kliknij swój ślad.
  4. Pojawi się okno dialogowe szczegółów śladu. W obszarze Oceny po prawej stronie okna dialogowego user_feedback pokazuje false, wskazując że użytkownik oznaczył odpowiedź kciukiem w dół.

Ocena ludzka

Krok 4. Dodawanie adnotacji dla deweloperów przy użyciu interfejsu użytkownika

Jako deweloper możesz również dodać własną opinię i notatki bezpośrednio w interfejsie użytkownika:

  1. Na karcie Dzienniki kliknij ślad, aby go otworzyć.
  2. Kliknij dowolny zakres (wybierz zakres główny dla opinii na poziomie śledzenia).
  3. Na karcie Oceny po prawej stronie kliknij pozycję Dodaj nową ocenę i wypełnij następujące informacje:
    • Typ: Feedback.
    • Nazwa: accuracy_score.
    • Wartość: .75.
    • Uzasadnienie: This answer includes the core elements of ML lifecycle management, experiment tracking, packaging, and deployment. However, it does not mention the model registry, project packaging, integration with Generative AI and LLMs, or unique features available in Databricks-managed MLflow, which are now considered essential to a complete description of the platform.
  4. Kliknij pozycję Utwórz.

Po odświeżeniu strony kolumny nowych ocen są wyświetlane w tabeli Dzienniki.

Krok 5. Wyślij trace do przeglądu przez ekspertów

Negatywne opinie użytkowników końcowych z kroku 2 sygnalizuje potencjalny problem z jakością, ale tylko eksperci z dziedziny mogą potwierdzić, czy naprawdę występuje problem i dostarczyć prawidłową odpowiedź. Utwórz sesję etykietowania, aby uzyskać autorytatywne opinie ekspertów:

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

Korzystanie z aplikacji do przeglądu

Recenzenci ekspertów mogą teraz wykonywać następujące czynności:

  1. Otwórz adres URL przeglądu aplikacji.

  2. Zobacz, jak śledzisz swoje działania, w tym pytanie i odpowiedź (wraz z opiniami użytkowników końcowych).

  3. Oceń, czy odpowiedź jest rzeczywiście dokładna.

  4. Podaj poprawną odpowiedź na pytanie "Co to jest MLflow?" w expected_response.

    MLflow is an open-source platform for managing the machine learning lifecycle, including experiment tracking, model registry, packaging, deployment, and evaluation. It supports classical ML, deep learning, and generative AI workflows. On Databricks, MLflow provides managed, secure, and scalable integration for easy collaboration and governance
    
  5. Prześlij swoje oceny ekspertów jako podstawy prawdy.

Możesz również użyć interfejsu użytkownika platformy MLflow 3, aby utworzyć sesję etykietowania w następujący sposób:

  1. Na stronie Eksperyment kliknij kartę Etykietowanie .
  2. Po lewej stronie użyj kart Sesje i schematy , aby dodać nowy schemat etykiety i utworzyć nową sesję.

Jak utworzyć sesję etykietowania w interfejsie użytkownika

Krok 6. Ocena aplikacji przy użyciu opinii

Po przekazaniu opinii przez ekspertów użyj etykiet expected_response , aby ocenić aplikację za pomocą wskaźnika MLflow Correctness :

W tym przykładzie bezpośrednio użyto śladów do oceny. W Twojej aplikacji, Databricks zaleca dodanie etykietowanych śladów do zbioru danych ewaluacyjnych MLflow, który zapewnia śledzenie wersji i rodowód danych. Dowiedz się więcej o tworzeniu zestawów danych oceny.

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
)

Wskaźnik poprawności porównuje dane wyjściowe aplikacji z expected_response opracowanymi przez ekspertów, zapewniając ci ilościową informację zwrotną na temat zgodności z oczekiwaniami ekspertów.

Oczekiwana odpowiedź na ocenę człowieka

Dalsze kroki

Dowiedz się więcej o zbieraniu różnych typów opinii człowieka:

Przykładowy notatnik

10-minutowy pokaz: Zbieranie opinii użytkowników

Pobierz laptopa