Поделиться через


Краткое руководство по отзыву пользователей

В этом кратком руководстве показано, как собирать отзывы конечных пользователей, добавлять заметки разработчиков, создавать сеансы проверки экспертов и использовать эти отзывы для оценки качества приложения GenAI.

В ней рассматриваются следующие этапы жизненного цикла обратной связи человека:

  • Оснащение приложения GenAI с использованием трассировки MLflow.
  • Сбор отзывов конечных пользователей (в этом примере отзыв конечных пользователей имитируется с помощью пакета SDK).
  • Интерактивное добавление отзывов разработчика через пользовательский интерфейс.
  • Просмотрите обратную связь вместе с трассировками.
  • Создайте сеанс маркировки для структурированной проверки экспертов.
  • Используйте отзывы экспертов для оценки качества приложения.

Весь код на этой странице включен в пример записной книжки.

Предпосылки

  1. Установка MLflow и обязательных пакетов

    pip install --upgrade "mlflow[databricks]>=3.1.0" openai "databricks-connect>=16.1"
    
  2. Создайте эксперимент MLflow, выполнив руководство по быстрому началу настройки среды.

Шаг 1. Создание и трассировка простого приложения

Сначала создайте простое приложение GenAI с помощью LLM с трассировкой MLflow.

  1. Инициализируйте клиент OpenAI для подключения к LLM, размещенным в Databricks или OpenAI.

    Размещенные в Databricks LLM

    Используйте MLflow, чтобы получить клиента OpenAI, который подключается к LLM, размещенным на платформе Databricks. Выберите модель из доступных базовых моделей.

    import mlflow
    from databricks.sdk import WorkspaceClient
    
    # Enable MLflow's autologging to instrument your application with Tracing
    mlflow.openai.autolog()
    
    # Set up MLflow tracking to Databricks
    mlflow.set_tracking_uri("databricks")
    mlflow.set_experiment("/Shared/docs-demo")
    
    # Create an OpenAI client that is connected to Databricks-hosted LLMs
    w = WorkspaceClient()
    client = w.serving_endpoints.get_open_ai_client()
    
    # Select an LLM
    model_name = "databricks-claude-sonnet-4"
    

    Хостируемые OpenAI LLMs

    Используйте собственный пакет SDK OpenAI для подключения к моделям, размещенным в OpenAI. Выберите модель из доступных моделей OpenAI.

    import mlflow
    import os
    import openai
    
    # Ensure your OPENAI_API_KEY is set in your environment
    # os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>" # Uncomment and set if not globally configured
    
    # Enable auto-tracing for OpenAI
    mlflow.openai.autolog()
    
    # Set up MLflow tracking to Databricks
    mlflow.set_tracking_uri("databricks")
    mlflow.set_experiment("/Shared/docs-demo")
    
    # Create an OpenAI client connected to OpenAI SDKs
    client = openai.OpenAI()
    
    # Select an LLM
    model_name = "gpt-4o-mini"
    
  2. Определите приложение чат-бота:

    # 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=model_name,  # 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. Сбор отзывов конечных пользователей

Когда пользователи взаимодействуют с приложением, они могут предоставлять отзывы с помощью элементов пользовательского интерфейса, таких как кнопки вверх и вниз. В этом кратком руководстве имитируется конечный пользователь, предоставляющий отрицательные отзывы с помощью пакета 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. Просмотр отзывов в пользовательском интерфейсе

Запустите пользовательский интерфейс MLflow, чтобы просмотреть трассировки с отзывом:

  1. Перейдите к эксперименту MLflow.
  2. Перейдите на вкладку "Трассировки ".
  3. Щелкните по вашей трассировке.
  4. Появится диалоговое окно сведений о трассировке. В разделе "Оценки" справа от диалогового окна user_feedback отображается false, указывающее, что пользователь отметил ответ как неудовлетворительный.

просмотр приложения

Шаг 4. Добавление заметок разработчика через пользовательский интерфейс

В качестве разработчика вы также можете добавить собственные отзывы и заметки непосредственно в пользовательском интерфейсе:

  1. Во вкладке "Трейс" щелкните на трейс для его открытия.
  2. Нажмите на любой интервал (выберите корневой интервал для обратной связи уровня трассировки).
  3. На вкладке "Оценки" справа нажмите кнопку "Добавить новую оценку " и введите следующую команду:
    • Тип: Feedback или Expectation.
    • Имя: например, "accuracy_score".
    • Значение: оценка.
    • Обоснование: Необязательное объяснение.
  4. Нажмите кнопку Создать.

После обновления страницы в таблице Traces отображаются столбцы для новых оценок.

Шаг 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}")

просмотр приложения

Теперь специалисты-рецензенты могут выполнять следующие действия:

  1. Откройте URL-адрес приложения для отзывов.
  2. Просмотрите трассировку с вопросом и ответом (включая отзывы пользователей).
  3. Оцените, является ли ответ фактически точным.
  4. При необходимости укажите правильный ответ expected_response .
  5. Отправьте свои экспертные заключения в качестве эталонных данных.

Вы также можете использовать пользовательский интерфейс MLflow 3 для создания сеанса маркировки следующим образом:

  1. На странице «Эксперимент» щелкните вкладку «Маркировка».
  2. Слева используйте вкладки "Сеансы и схемы" , чтобы добавить новую схему меток и создать новый сеанс.

Создание сеанса маркировки в пользовательском интерфейсе.

Шаг 6. Использование отзывов для оценки приложения

После предоставления экспертами отзывов используйте их expected_response метки для оценки вашего приложения с помощью инструмента оценки корректности MLflow.

Замечание

В этом примере непосредственно используются следы для оценки. В приложении Databricks рекомендует добавлять помеченные трассировки в набор данных оценки MLflow, который обеспечивает отслеживание версий и происхождение. См. руководство по созданию набора данных для оценки.

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, предоставляя вам количественную обратную связь о соответствии ожиданиям экспертов.

просмотр приложения

пример записной книжки

Следующая записная книжка содержит весь код на этой странице.

Тетрадь быстрого запуска по обратной связи с пользователями

Получите ноутбук

Дальнейшие шаги

Продолжайте свое путешествие с помощью этих рекомендуемых действий и руководств.

Справочные руководства

Дополнительные сведения о концепциях и функциях, упомянутых в этом кратком руководстве, см. в следующих статьях: