Compartilhar via


Demonstração de 10 minutos: Coletar comentários humanos

Este tutorial mostra como coletar comentários do usuário final, adicionar anotações do desenvolvedor, criar sessões de revisão de especialistas e usar esses comentários para avaliar a qualidade do aplicativo GenAI.

O que você alcançará

Ao final deste tutorial, você vai:

  • Implementar um aplicativo GenAI com rastreamento de MLflow
  • Coletar comentários do usuário final, simulados usando o SDK neste exemplo
  • Adicionar comentários do desenvolvedor interativamente por meio da interface do usuário
  • Exibir comentários ao lado de seus rastreamentos
  • Colete feedback de especialistas criando uma sessão de classificação para revisão estruturada por especialistas

Configuração do ambiente

Instale os pacotes necessários:

  • mlflow[databricks]: use a versão mais recente do MLflow para obter mais recursos e melhorias.
  • openai: este aplicativo usará o cliente da API OpenAI para chamar modelos hospedados pelo Databricks.
%pip install -q --upgrade "mlflow[databricks]>=3.1.0" openai
dbutils.library.restartPython()

Crie um experimento do MLflow. Se você estiver usando um bloco de anotações do Databricks, ignore esta etapa e use o experimento de notebook padrão. Caso contrário, siga o início rápido da configuração do ambiente para criar o experimento e conectar-se ao servidor de Acompanhamento do MLflow.

Etapa 1: Criar e rastrear um aplicativo simples

Primeiro, crie um aplicativo de IA generativa simples usando um LLM com rastreamento do MLflow. O aplicativo usa a API OpenAI para chamar um endpoint do Modelo Fundamental hospedado pelo 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

Etapa 2: Coletar comentários do usuário final

Quando os usuários interagem com seu aplicativo, eles podem fornecer feedback por meio de elementos da interface do usuário, como botões de polegar para cima/para baixo. Este início rápido simula um usuário final fazendo comentários negativos usando o SDK diretamente.

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!

Etapa 3: Exibir comentários na interface do usuário

Inicie a interface do MLflow para ver seus rastreamentos com comentários.

  1. Navegue até o experimento do MLflow.
  2. Navegue para a aba Logs.
  3. Clique em seu rastreamento.
  4. A caixa de diálogo de detalhes do rastreamento é exibida. Em Avaliações no lado direito da caixa de diálogo, o user_feedback mostra false, indicando que o usuário marcou a resposta com polegar para baixo.

Avaliação humana

Etapa 4: Adicionar anotações do desenvolvedor usando a interface do usuário

Como desenvolvedor, você também pode adicionar seus próprios comentários e anotações diretamente na interface do usuário:

  1. Na guia Logs, clique em um rastro para abri-lo.
  2. Clique em qualquer expansão (escolha a expansão raiz para comentários no nível de rastreamento).
  3. Na guia Avaliações à direita, clique em Adicionar nova avaliação e preencha o seguinte:
    • Tipo: Feedback.
    • Nome: accuracy_score.
    • Valor: .75.
    • Racionalidade: 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. Clique em Criar.

Depois de atualizar a página, as colunas das novas avaliações aparecerão na tabela Logs.

Etapa 5: Enviar rastreamento para análise de especialistas

Os comentários negativos do usuário final da Etapa 2 sinalizam um possível problema de qualidade, mas somente especialistas em domínio podem confirmar se há realmente um problema e fornecer a resposta correta. Crie uma sessão de rotulagem para obter comentários de especialistas autoritativos:

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

Usar o aplicativo de revisão

Os revisores de especialistas agora podem fazer o seguinte:

  1. Abra a URL do Aplicativo de Revisão.

  2. Veja seu rastreamento com a pergunta e a resposta (incluindo qualquer comentário do usuário final).

  3. Avalie se a resposta é realmente precisa.

  4. Forneça a resposta expected_response correta para a pergunta "O que é o MLflow?":

    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. Envie suas avaliações de especialistas como verdade básica.

Você também pode usar a interface do usuário do MLflow 3 para criar uma sessão de rotulagem, da seguinte maneira:

  1. Na página Experimento, clique na guia Rotulagem .
  2. À esquerda, use as guias Sessões e Esquemas para adicionar um novo esquema de rótulo e criar uma sessão.

Como criar uma sessão de rotulagem na interface do usuário

Etapa 6: Usar comentários para avaliar seu aplicativo

Depois de receber o feedback dos especialistas, use seus expected_response rótulos para avaliar seu aplicativo com o avaliador do Correctness MLflow.

Este exemplo usa diretamente os rastreamentos para avaliação. Em seu aplicativo, o Databricks recomenda adicionar rastreamentos rotulados a um Conjunto de Dados de Avaliação do MLflow que fornece controle de versão e linhagem. Saiba mais sobre como criar conjuntos de dados de avaliação.

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
)

O Pontuador de Correção compara as saídas do aplicativo com as fornecidas pelos especialistas expected_response, fornecendo comentários quantitativos sobre o alinhamento com as expectativas dos especialistas.

Respostas esperadas da avaliação humana

Próximas etapas

Saiba mais detalhes sobre como coletar diferentes tipos de comentários humanos:

Notebook de exemplo

Demonstração de 10 minutos: Coletar comentários humanos

Obter laptop