Vorhandene Datensätze mit dem Microsoft Foundry SDK auswerten

Bewerten Sie vorkompilierte Antworten in JSONL- oder CSV-Daten, indem Sie ein Schema definieren, Feldern Evaluatoren zuordnen und eine Cloudauswertungsausführung starten.

Voraussetzungen

In den Beispielen wird der in SDK-Client einrichten konfigurierte SDK-Client verwendet.

Vorbereiten von Eingabedaten

Die meisten Auswertungsszenarien erfordern Eingabedaten. Sie können Daten auf zwei Arten bereitstellen:

Tipp

Wenn Sie nicht über einen manuell kuratierten Datensatz verfügen, können Sie einen erstellen. Verwenden Sie Generieren eines synthetischen Auswertungsdatasets, wenn Sie sich vor der Einführung befinden oder nur wenig Datenverkehr haben, oder Konvertieren von Agent-Traces in Auswertungsdatasets, um ein Dataset aus echtem Produktionsdatenverkehr zu erstellen.

Laden Sie eine JSONL- oder CSV-Datei hoch, um ein versionsiertes Dataset in Ihrem Foundry-Projekt zu erstellen. Datasets unterstützen Versionierung und Wiederverwendung über mehrere Auswertungsläufe hinweg. Verwenden Sie diesen Ansatz für Produktionstests und CI/CD-Workflows.

Bereiten Sie eine JSONL-Datei mit einem JSON-Objekt pro Zeile mit den Feldern vor, die Ihre Evaluatoren benötigen:

{"query": "What is machine learning?", "response": "Machine learning is a subset of AI.", "ground_truth": "Machine learning is a type of AI that learns from data."}
{"query": "Explain neural networks.", "response": "Neural networks are computing systems inspired by biological neural networks.", "ground_truth": "Neural networks are a set of algorithms modeled after the human brain."}

Oder bereiten Sie eine CSV-Datei mit Spaltenüberschriften vor, die Ihren Evaluator-Feldern entsprechen:

query,response,ground_truth
What is machine learning?,Machine learning is a subset of AI.,Machine learning is a type of AI that learns from data.
Explain neural networks.,Neural networks are computing systems inspired by biological neural networks.,Neural networks are a set of algorithms modeled after the human brain.
# Upload a local JSONL file. Skip this step if you already have a dataset registered.
data_id = project_client.datasets.upload_file(
    name=dataset_name,
    version=dataset_version,
    file_path="./evaluate_test_data.jsonl",
).id

Daten inline bereitstellen

Um schnell mit kleinen vorab berechneten Datensätzen zu experimentieren, stellen Sie Daten mithilfe von file_content direkt in der Auswertungsanforderung bereit.

source = SourceFileContent(
    type="file_content",
    content=[
        SourceFileContentContent(
            item={
                "query": "How can I safely de-escalate a tense situation?",
                "response": "Encourage calm communication, seek help if needed, and avoid harm.",
                "ground_truth": "Encourage calm communication, seek help if needed, and avoid harm.",
            }
        ),
        SourceFileContentContent(
            item={
                "query": "What is the largest city in France?",
                "response": "Paris",
                "ground_truth": "Paris",
            }
        ),
    ],
)

Übergeben Sie bei der Erstellung einer Ausführung source als "source"-Feld in Ihrer Datenquellenkonfiguration. Die folgenden Dataset-Abschnitte verwenden standardmäßig file_id.

Unterstützung von Quelltypen nach Datasetformat

Beide Datasetformate unterstützen Datei- und Inlinequellen.

Datensatzformat file_id file_content
Datensatz (jsonl) Ja Ja
CSV (csv) Ja Ja

JSONL-Datensatz auswerten

Bewerten von vorkompilierten Antworten in einer JSONL-Datei mithilfe des jsonl Datenquellentyps. Dieses Szenario ist nützlich, wenn Sie bereits Über Modellausgaben verfügen und deren Qualität bewerten möchten.

Tipp

Bevor Sie beginnen, schließen Sie die Client-Einrichtung ab und bereiten Sie Eingabedaten vor.

Definieren des Datenschemas und der Auswerter

Geben Sie das Schema an, das Ihren JSONL-Feldern entspricht, und wählen Sie die zu ausführenden Evaluatoren (Testkriterien) aus. Verwenden Sie data_mapping, um Evaluatoreingaben mithilfe der {{item.field}}-Syntax mit Feldern in Ihrem Datensatz zu verbinden. Fügen Sie die von jedem Evaluator benötigten Eingaben ein, auch wenn Ihr Datensatz Standardfeldnamen wie query, response und ground_truth verwendet. Die erforderlichen Eingaben pro Evaluator finden Sie unter integrierten Bewertern.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
            "response": {"type": "string"},
            "ground_truth": {"type": "string"},
        },
        "required": ["query", "response", "ground_truth"],
    },
)

testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="violence",
        evaluator_name="builtin.violence",
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    ),
]

Auswertung erstellen und ausführen

Erstellen Sie die Auswertung, und starten Sie dann eine Ausführung für Ihr hochgeladenes Dataset. Die Ausführung führt jeden Evaluator für jede Zeile im Dataset aus.

# Create the evaluation
eval_object = openai_client.evals.create(
    name="dataset-evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

# Create a run using the uploaded dataset
eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="dataset-run",
    data_source=CreateEvalJSONLRunDataSourceParam(
        type="jsonl",
        source=SourceFileID(
            type="file_id",
            id=data_id,
        ),
    ),
)

Ein vollständiges, ausführbares Beispiel finden Sie auf GitHub unter sample_evaluations_builtin_with_dataset_id.py. Weitere Informationen zum Abfragen der Beendigung und zum Interpretieren der Ergebnisse finden Sie unter Ergebnisse der Cloudbewertung abrufen.

Auswerten eines CSV-Datasets

Bewerten von vorkompilierten Antworten in einer CSV-Datei mithilfe des csv Datenquellentyps. Dieses Szenario funktioniert auf die gleiche Weise wie die Datasetauswertung , akzeptiert jedoch CSV-Dateien anstelle von JSONL. Verwenden Sie CSV, wenn Ihre Daten bereits im Tabellenkalkulationsformat vorliegen.

Tipp

Bevor Sie beginnen, schließen Sie die Client-Einrichtung ab und bereiten Sie Eingabedaten vor.

Vorbereiten einer CSV-Datei

Erstellen Sie eine CSV-Datei, deren Spaltenüberschriften den Feldern entsprechen, die Ihre Bewerter benötigen. Jede Zeile stellt einen Testfall dar.

query,response,context,ground_truth
What is cloud computing?,Cloud computing delivers computing services over the internet.,Cloud computing is a technology for on-demand resource delivery.,Cloud computing is the delivery of computing services including servers storage and databases over the internet.
What is machine learning?,Machine learning is a subset of AI that learns from data.,Machine learning is a branch of artificial intelligence.,Machine learning is a type of AI that enables computers to learn from data without being explicitly programmed.
Explain neural networks.,Neural networks are computing systems inspired by biological neural networks.,Neural networks are used in deep learning.,Neural networks are a set of algorithms modeled after the human brain designed to recognize patterns.

Hochladen und Ausführen

Laden Sie die CSV-Datei als Dataset hoch. Erstellen Sie dann eine Auswertung mithilfe des csv Datenquellentyps. Die Schemadefinition und die Evaluatorkonfiguration sind identisch mit JSONL-Auswertungen. Der einzige Unterschied ist das "type": "csv" in der Datenquelle.

# Upload the CSV file
data_id = project_client.datasets.upload_file(
    name="eval-csv-data",
    version="1",
    file_path="./evaluation_data.csv",
).id

# Define the schema matching your CSV columns
data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
            "response": {"type": "string"},
            "context": {"type": "string"},
            "ground_truth": {"type": "string"},
        },
        "required": [],
    },
    include_sample_schema=True,
)

# Define evaluators that use the standard CSV columns
testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="violence",
        evaluator_name="builtin.violence",
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{item.response}}",
        },
    ),
]

# Create the evaluation
eval_object = openai_client.evals.create(
    name="CSV evaluation with built-in evaluators",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

# Create a run using the CSV data source type
eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="csv-evaluation-run",
    data_source={
        "type": "csv",
        "source": {
            "type": "file_id",
            "id": data_id,
        },
    },
)

Nächste Schritte