Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo recopilar comentarios del usuario final, agregar anotaciones para desarrolladores, crear sesiones de revisión expertos y usar esos comentarios para evaluar la calidad de la aplicación GenAI.
Lo que conseguirás
Al final de este tutorial, hará lo siguiente:
- Instrumentar una aplicación GenAI con seguimiento de MLflow
- Recopilación de comentarios del usuario final, simulados mediante el SDK en este ejemplo
- Agregar comentarios para desarrolladores de forma interactiva a través de la interfaz de usuario
- Ver comentarios junto con tus trazas
- Recopilar comentarios de expertos creando una sesión de clasificación para la revisión estructurada de expertos
Configuración del entorno
Instale los paquetes necesarios:
-
mlflow[databricks]: use la versión más reciente de MLflow para obtener más características y mejoras. -
openai: esta aplicación usará el cliente de api de OpenAI para llamar a modelos hospedados en Databricks.
%pip install -q --upgrade "mlflow[databricks]>=3.1.0" openai
dbutils.library.restartPython()
Cree un experimento de MLflow. Si usa un cuaderno de Databricks, puede omitir este paso y usar el experimento de cuaderno predeterminado. De lo contrario, siga el inicio rápido de configuración del entorno para crear el experimento y conectarse al servidor de seguimiento de MLflow.
Paso 1: Creación y seguimiento de una aplicación sencilla
En primer lugar, cree una aplicación GenAI sencilla usando un LLM con seguimiento de MLflow. La aplicación usa la API de OpenAI para llamar a un punto de conexión de un Modelo de Fundación hospedado en 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
Paso 2: Recopilar comentarios del usuario final
Cuando los usuarios interactúan con la aplicación, pueden proporcionar comentarios a través de elementos de la interfaz de usuario, como los botones arriba y abajo. En este inicio rápido se simula a un usuario final que proporciona comentarios negativos mediante el SDK directamente.
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!
Paso 3: Visualización de comentarios en la interfaz de usuario
Inicie la interfaz de usuario de MLflow para ver sus seguimientos con comentarios:
- Vaya al experimento de MLflow.
- Vaya a la pestaña Registros .
- Haga clic en su seguimiento.
- Aparece el cuadro de diálogo de detalles del seguimiento. En Evaluaciones en la parte derecha del cuadro de diálogo,
user_feedbackmuestrafalse, indicando que el usuario marcó la respuesta con el símbolo de pulgar hacia abajo.
Paso 4: Adición de anotaciones para desarrolladores mediante la interfaz de usuario
Como desarrollador, también puede agregar sus propios comentarios y notas directamente en la interfaz de usuario:
- En la pestaña Registros, haga clic en una traza para abrirla.
- Haga clic en cualquier segmento (elija el segmento raíz para la retroalimentación de nivel de traza).
- En la pestaña Evaluaciones de la derecha, haga clic en Agregar nueva evaluación y rellene lo siguiente:
-
Tipo:
Feedback. -
Nombre:
accuracy_score. -
Valor:
.75. -
Justificación:
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.
-
Tipo:
- Haga clic en Crear.
Después de actualizar la página, las columnas de las nuevas evaluaciones aparecen en la tabla Registros.
Paso 5: Enviar seguimiento para la revisión de expertos
Los comentarios negativos del usuario final del paso 2 señalan un posible problema de calidad, pero solo los expertos del dominio pueden confirmar si realmente hay un problema y proporcionar la respuesta correcta. Cree una sesión de etiquetado para obtener comentarios de expertos 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}")
Los revisores expertos ahora pueden hacer lo siguiente:
Abra la dirección URL de la aplicación de revisión.
Consulte su rastro con la pregunta y la respuesta (incluidos los comentarios del usuario final).
Evalúe si la respuesta es realmente precisa.
Proporcione la respuesta correcta en
expected_responsela pregunta "¿Qué es 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 governanceEnvíe sus evaluaciones expertas como verdad de referencia.
También puede usar la interfaz de usuario de MLflow 3 para crear una sesión de etiquetado, como se indica a continuación:
- En la página Experimento, haga clic en la pestaña Etiquetado.
- A la izquierda, use las pestañas Sesiones y esquemas para agregar un nuevo esquema de etiqueta y crear una nueva sesión.
Paso 6: Uso de comentarios para evaluar la aplicación
Después de que los expertos proporcionen comentarios, use sus expected_response etiquetas para evaluar la aplicación con el puntuador de Correctness MLflow:
En este ejemplo, se usan directamente las trazas para la evaluación. En su aplicación, Databricks recomienda añadir seguimientos etiquetados a un conjunto de datos de evaluación de MLflow, que proporciona seguimiento de versiones y linaje. Obtenga información sobre la creación de conjuntos de datos de evaluación.
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
)
El puntuador de corrección compara los resultados de la aplicación frente al expected_response proporcionado por el experto, proporcionando información cuantitativa sobre la alineación con las expectativas del experto.
Pasos siguientes
Obtenga más información sobre cómo recopilar diferentes tipos de comentarios humanos:
- Etiqueta durante el desarrollo : aprenda técnicas avanzadas de anotación para el desarrollo
- Evaluación con expertos en el dominio - Prueba interactiva de tu aplicación con expertos
- Recopilación de comentarios de expertos en dominio : configuración de procesos de revisión sistemática de expertos