Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als ontwikkelaar die GenAI-toepassingen bouwt, hebt u een manier nodig om uw waarnemingen bij te houden over de kwaliteit van de uitvoer van uw toepassing. Met MLflow Tracing kunt u rechtstreeks feedback of verwachtingen toevoegen aan traceringen tijdens de ontwikkeling, zodat u snel kwaliteitsproblemen kunt vastleggen, geslaagde voorbeelden kunt markeren of notities kunt toevoegen voor toekomstige naslaginformatie.
Vereiste voorwaarden
- Uw toepassing is geïnstrueerd met MLflow Tracing
- U hebt traceringen gegenereerd door uw toepassing uit te voeren
Evaluatielabels toevoegen
Evaluaties voegen gestructureerde feedback, scores of grondwaarheid toe aan tracés en segmenten voor evaluatie en verbetering van de kwaliteit in MLflow.
Databricks-gebruikersinterface
Met MLflow kunt u eenvoudig aantekeningen (labels) rechtstreeks toevoegen aan traceringen via de MLflow-gebruikersinterface.
Opmerking
Als u een Databricks-notebook gebruikt, kunt u deze stappen ook uitvoeren vanuit de Trace UI die inline in het notebook verschijnt.
- Navigeer naar het tabblad Traceringen in de gebruikersinterface van het MLflow-experiment
- Een afzonderlijke trace openen
- Klik in de traceringsinterface op de specifieke periode die u wilt labelen
- Als u de root span selecteert, wordt feedback aan de volledige trace gekoppeld
- Het tabblad 'Beoordelingen' aan de uiterste rechterkant uitklappen
- Vul het formulier in om uw feedback toe te voegen
-
Evaluatietype
- Feedback: Subjectieve beoordeling van kwaliteit (beoordelingen, opmerkingen)
- Verwachting: De verwachte uitvoer of waarde (wat moet zijn geproduceerd)
-
Evaluatienaam
- Een unieke naam voor waar de feedback over gaat
-
Gegevenstype
- Aantal
- Booleaan
- Snaar / Touwtje
-
Waarde
- Uw evaluatie
-
Reden
- Optionele opmerkingen over de waarde
-
Evaluatietype
- Klik op Maken om uw label op te slaan
- Wanneer u terugkeert naar het tabblad Traceringen, wordt uw label weergegeven als een nieuwe kolom
MLflow SDK
U kunt programmatisch labels toevoegen aan traceringen met behulp van de SDK van MLflow. Dit is handig voor geautomatiseerd labelen op basis van uw toepassingslogica of voor batchverwerking van traceringen.
MLflow biedt twee API's:
-
mlflow.log_feedback()- Registreert feedback die de werkelijke uitvoer van uw app of tussenliggende stappen evalueert (bijvoorbeeld 'Was het antwoord goed?', beoordelingen, opmerkingen). -
mlflow.log_expectation()- Registreert verwachtingen die het gewenste of juiste resultaat (grondwaar) definiëren dat uw app moet hebben geproduceerd.
import mlflow
from mlflow.entities.assessment import (
AssessmentSource,
AssessmentSourceType,
AssessmentError,
)
@mlflow.trace
def my_app(input: str) -> str:
return input + "_output"
# Create a sample trace to demonstrate assessment logging
my_app(input="hello")
trace_id = mlflow.get_last_active_trace_id()
# Handle case where trace_id might be None
if trace_id is None:
raise ValueError("No active trace found. Make sure to run a traced function first.")
print(f"Using trace_id: {trace_id}")
# =============================================================================
# LOG_FEEDBACK - Evaluating actual outputs and performance
# =============================================================================
# Example 1: Human rating (integer scale)
# Use case: Domain experts rating response quality on a 1-5 scale
mlflow.log_feedback(
trace_id=trace_id,
name="human_rating",
value=4, # int - rating scale feedback
rationale="Human evaluator rating",
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="evaluator@company.com",
),
)
# Example 2: LLM judge score (float for precise scoring)
# Use case: Automated quality assessment using LLM-as-a-judge
mlflow.log_feedback(
trace_id=trace_id,
name="llm_judge_score",
value=0.85, # float - precise scoring from 0.0 to 1.0
rationale="LLM judge evaluation",
source=AssessmentSource(
source_type=AssessmentSourceType.LLM_JUDGE,
source_id="gpt-4o-mini",
),
metadata={"temperature": "0.1", "model_version": "2024-01"},
)
# Example 3: Binary feedback (boolean for yes/no assessments)
# Use case: Simple thumbs up/down or correct/incorrect evaluations
mlflow.log_feedback(
trace_id=trace_id,
name="is_helpful",
value=True, # bool - binary assessment
rationale="Boolean assessment of helpfulness",
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="reviewer@company.com",
),
)
# Example 4: Multi-category feedback (list for multiple classifications)
# Use case: Automated categorization or multi-label classification
mlflow.log_feedback(
trace_id=trace_id,
name="automated_categories",
value=["helpful", "accurate", "concise"], # list - multiple categories
rationale="Automated categorization",
source=AssessmentSource(
source_type=AssessmentSourceType.CODE,
source_id="classifier_v1.2",
),
)
# Example 5: Complex analysis with metadata (when you need structured context)
# Use case: Detailed automated analysis with multiple dimensions stored in metadata
mlflow.log_feedback(
trace_id=trace_id,
name="response_analysis_score",
value=4.2, # single score instead of dict - keeps value simple
rationale="Analysis: 150 words, positive sentiment, includes examples, confidence 0.92",
source=AssessmentSource(
source_type=AssessmentSourceType.CODE,
source_id="analyzer_v2.1",
),
metadata={ # Use metadata for structured details
"word_count": "150",
"sentiment": "positive",
"has_examples": "true",
"confidence": "0.92",
},
)
# Example 6: Error handling when evaluation fails
# Use case: Logging when automated evaluators fail due to API limits, timeouts, etc.
mlflow.log_feedback(
trace_id=trace_id,
name="failed_evaluation",
source=AssessmentSource(
source_type=AssessmentSourceType.LLM_JUDGE,
source_id="gpt-4o",
),
error=AssessmentError( # Use error field when evaluation fails
error_code="RATE_LIMIT_EXCEEDED",
error_message="API rate limit exceeded during evaluation",
),
metadata={"retry_count": "3", "error_timestamp": "2024-01-15T10:30:00Z"},
)
# =============================================================================
# LOG_EXPECTATION - Defining ground truth and desired outcomes
# =============================================================================
# Example 1: Simple text expectation (most common pattern)
# Use case: Defining the ideal response for factual questions
mlflow.log_expectation(
trace_id=trace_id,
name="expected_response",
value="The capital of France is Paris.", # Simple string - the "correct" answer
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="content_curator@example.com",
),
)
# Example 2: Complex structured expectation (advanced pattern)
# Use case: Defining detailed requirements for response structure and content
mlflow.log_expectation(
trace_id=trace_id,
name="expected_response_structure",
value={ # Complex dict - detailed specification of ideal response
"entities": {
"people": ["Marie Curie", "Pierre Curie"],
"locations": ["Paris", "France"],
"dates": ["1867", "1934"],
},
"key_facts": [
"First woman to win Nobel Prize",
"Won Nobel Prizes in Physics and Chemistry",
"Discovered radium and polonium",
],
"response_requirements": {
"tone": "informative",
"length_range": {"min": 100, "max": 300},
"include_examples": True,
"citations_required": False,
},
},
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="content_strategist@example.com",
),
metadata={
"content_type": "biographical_summary",
"target_audience": "general_public",
"fact_check_date": "2024-01-15",
},
)
# Example 3: Multiple acceptable answers (list pattern)
# Use case: When there are several valid ways to express the same fact
mlflow.log_expectation(
trace_id=trace_id,
name="expected_facts",
value=[ # List of acceptable variations of the correct answer
"Paris is the capital of France",
"The capital city of France is Paris",
"France's capital is Paris",
],
source=AssessmentSource(
source_type=AssessmentSourceType.HUMAN,
source_id="qa_team@example.com",
),
)
Databricks REST API
Maak evaluaties met behulp van de Databricks REST API om programmatisch feedback en evaluaties te registreren op traceringen vanuit elke omgeving.
Raadpleeg de documentatie voor Databricks REST API.
REST API-eindpunt
POST https://<workspace-host>.databricks.com/api/3.0/mlflow/traces/{trace_id}/assessments
Voorbeeldaanvraag:
curl -X POST \
"https://<workspace-host>.databricks.com/api/3.0/mlflow/traces/<trace-id>/assessments" \
-H "Authorization: Bearer <databricks-token>" \
-H "Content-Type: application/json" \
-d '{
"assessment": {
"assessment_name": "string",
"create_time": "2019-08-24T14:15:22Z",
"expectation": {
"serialized_value": {
"serialization_format": "string",
"value": "string"
},
"value": {}
},
"feedback": {
"error": {
"error_code": "string",
"error_message": "string",
"stack_trace": "string"
},
"value": {}
},
"last_update_time": "2019-08-24T14:15:22Z",
"metadata": {
"property1": "string",
"property2": "string"
},
"overrides": "string",
"rationale": "string",
"source": {
"source_id": "string",
"source_type": "HUMAN"
},
"span_id": "string",
"valid": true
}
}'
Voorbeeldantwoord:
{
"assessment": {
"assessment_id": "string",
"assessment_name": "string",
"create_time": "2019-08-24T14:15:22Z",
"expectation": {
"serialized_value": {
"serialization_format": "string",
"value": "string"
},
"value": {}
},
"feedback": {
"error": {
"error_code": "string",
"error_message": "string",
"stack_trace": "string"
},
"value": {}
},
"last_update_time": "2019-08-24T14:15:22Z",
"metadata": {
"property1": "string",
"property2": "string"
},
"overrides": "string",
"rationale": "string",
"source": {
"source_id": "string",
"source_type": "HUMAN"
},
"span_id": "string",
"trace_id": "string",
"valid": true
}
}
Volgende stappen
Ga verder met deze aanbevolen acties en zelfstudies.
- Feedback van domeinexperts verzamelen - Gestructureerde labelsessies instellen
- Bouwen van evaluatiegegevenssets - gebruik uw gelabelde traceringen om testgegevenssets te maken
- Feedback van eindgebruikers verzamelen - Feedback van geïmplementeerde toepassingen vastleggen
Referentiehandleidingen
Bekijk gedetailleerde documentatie voor concepten en functies die in deze handleiding worden genoemd.
- Labelschema's - Meer informatie over gestructureerde feedbackverzameling