Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Auswertung großer Sprachmodelle ist ein wichtiger Schritt bei der Messung ihrer Leistung über verschiedene Aufgaben und Dimensionen hinweg. Dies ist besonders wichtig für fein abgestimmte Modelle, bei denen die Beurteilung der Leistungsgewinne (oder Verluste) aus dem Training von entscheidender Bedeutung ist. Gründliche Auswertungen können Ihnen dabei helfen, zu verstehen, wie sich verschiedene Versionen des Modells auf Ihre Anwendung oder Ihr Szenario auswirken können.
Mit der Azure OpenAI-Auswertung können Entwickler Auswertungsausführungen erstellen, um anhand erwarteter Eingabe-/Ausgabepaare zu testen und die Leistung des Modells über wichtige Metriken wie Genauigkeit, Zuverlässigkeit und Gesamtleistung hinweg zu bewerten.
Evaluierungsunterstützung
Regionale Verfügbarkeit
- Australien (Osten)
- Brasilien Süd
- Kanada, Mitte
- Zentrale USA
- Ost-USA 2
- Frankreich, Mitte
- Deutschland West Central
- Italien Nord
- Japan, Osten
- Japan, Westen
- Zentral-Korea
- Nord-Mittel-USA
- Norwegen, Osten
- Polen Zentral
- Südafrika Nord
- Südostasien
- Spanien, Mitte
- Schweden, Mitte
- Schweiz Nord
- Westschweiz
- Vereinigte Arabische Emirate, Norden
- Vereinigtes Königreich Süd
- Westen des Vereinigten Königreichs
- Westeuropa
- Westen der USA
- Westliches USA 2
- Westliches USA 3
Wenn Ihre bevorzugte Region fehlt, lesen Sie Azure OpenAI-Regionen , und überprüfen Sie, ob es sich um eine der regionalen Azure OpenAI-Verfügbarkeitszonen handelt.
Unterstützte Bereitstellungstypen
- Norm
- Globaler Standard
- Datenzonenstandard
- Bereitgestellt-Verwaltet
- Global bereitgestellt-Verwaltet
- Bereitgestellt-Verwaltete Datenzone
Auswertungs-API (Vorschau)
Mit der Auswertungs-API können Sie Modellausgaben direkt über API-Aufrufe testen und die Modellqualität und -leistung programmgesteuert bewerten. Informationen zur Verwendung der Auswertungs-API finden Sie in der REST-API-Dokumentation.
Auswertungspipeline
Testdaten
Sie müssen ein Grundwahrheitsdataset zusammenstellen, mit dem Sie testen möchten. Die Dataseterstellung ist in der Regel ein iterativer Prozess, der sicherstellt, dass Ihre Auswertungen im Laufe der Zeit für Ihre Szenarien relevant bleiben. Dieses Grundwahrheitsdataset wird in der Regel handgefertigt und stellt das erwartete Verhalten ihres Modells dar. Das Dataset ist auch beschriftet und enthält die erwarteten Antworten.
Hinweis
Einige Auswertungstests wie Stimmung und gültige JSON oder XML erfordern keine Grundwahrheitsdaten.
Ihre Datenquelle muss im JSONL-Format vorliegen. Im Folgenden finden Sie zwei Beispiele für die JSONL-Auswertungsdatasets:
Auswertungsformat
{"question": "Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q.", "subject": "abstract_algebra", "A": "0", "B": "4", "C": "2", "D": "6", "answer": "B", "completion": "B"}
{"question": "Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the index of <p> in S_5.", "subject": "abstract_algebra", "A": "8", "B": "2", "C": "24", "D": "120", "answer": "C", "completion": "C"}
{"question": "Find all zeros in the indicated finite field of the given polynomial with coefficients in that field. x^5 + 3x^3 + x^2 + 2x in Z_5", "subject": "abstract_algebra", "A": "0", "B": "1", "C": "0,1", "D": "0,4", "answer": "D", "completion": "D"}
Wenn Sie Ihre Auswertungsdatei hochladen und auswählen, wird eine Vorschau der ersten drei Zeilen zurückgegeben:
Sie können vorhandene zuvor hochgeladene Datasets auswählen oder ein neues Dataset hochladen.
Erstellen von Antworten (optional)
Die Eingabeaufforderungen, die Sie in Ihrer Auswertung verwenden, sollte mit der Eingabeaufforderungen übereinstimmen, die Sie in der Produktion verwenden möchten. Diese Eingabeaufforderungen enthalten die Anweisungen für das zu befolgende Modell. Ähnlich wie bei Playground können Sie mehrere Eingaben erstellen, um einige Beispiele in Ihrer Eingabeaufforderung einzuschließen. Weitere Informationen finden Sie unter Eingabeaufforderungsengineering. Dort finden Sie auch Details zu einigen erweiterten Techniken beim Eingabeaufforderungsdesign und Eingabeaufforderungsengineering.
Mithilfe des Formats „{{input.column_name}}
“ können Sie auf Ihre Eingabedaten in den Eingabeaufforderungen verweisen, wobei „column_name“ den Namen der Spalten in der Eingabedatei entspricht.
Während der Auswertung generierte Ausgaben werden in nachfolgenden Schritten mithilfe des Formats „{{sample.output_text}}
“ referenziert.
Hinweis
Sie müssen doppelte geschweifte Klammern verwenden, um sicherzustellen, dass Sie korrekt auf Ihre Daten verweisen.
Modellbereitstellung
In Azure OpenAI müssen Sie eine Modellbereitstellung erstellen, die für Ihre Auswertung verwendet werden soll. Sie können je nach Ihren Anforderungen ein einzelnes Modell oder mehrere Modelle auswählen und bereitstellen. Diese Modelleinsätze werden genutzt, um Ihr Basismodell oder Ihr fein abgestimmtes Modell anhand der von Ihnen gewählten Testkriterien zu bewerten. Sie können die bereitgestellten Modelle auch verwenden, um Antworten für Ihre bereitgestellte Eingabeaufforderung automatisch zu generieren.
Die in Ihrer Liste verfügbaren Bereitstellungen hängen von den Bereitstellungen ab, die Sie in Ihrer Azure OpenAI-Ressource erstellt haben. Wenn Sie die gewünschte Bereitstellung nicht finden können, können Sie auf der Seite „Azure OpenAI Evaluation“ eine neue erstellen.
Testkriterien
Testkriterien werden verwendet, um die Effektivität der einzelnen vom Zielmodell generierten Ausgaben zu bewerten. Diese Tests vergleichen die Eingabedaten mit den Ausgabedaten, um die Konsistenz sicherzustellen. Sie können unterschiedliche Kriterien konfigurieren, um die Qualität und Relevanz der Ausgabe auf verschiedenen Ebenen zu testen und zu messen.
Wenn Sie auf die einzelnen Testkriterien klicken, werden verschiedene Arten von Benotungen sowie voreingestellte Schemas angezeigt, die Sie je nach Ihrem eigenen Auswertungsdatensatz und -kriterien ändern können.
Erste Schritte
Auswertung erstellen
Wählen Sie die Azure OpenAI Evaluation (PREVIEW) im Azure AI Foundry-Portal aus. Um diese Ansicht als Option anzuzeigen, wählen Sie zuerst eine vorhandene Azure OpenAI-Ressource in einer unterstützten Region aus.
Auswählen +Neue Auswertung
Wählen Sie aus, wie Sie Testdaten für die Auswertung bereitstellen möchten. Sie können gespeicherte Chatabschlusse importieren, Daten mithilfe der bereitgestellten Standardvorlagen erstellen oder Eigene Daten hochladen. Gehen wir durch das Hochladen Ihrer eigenen Daten.
Wählen Sie Ihre Auswertungsdaten aus, die im
.jsonl
Format vorliegen. Wenn Sie bereits über vorhandene Daten verfügen, können Sie ein Datenobjekt auswählen oder neue Daten hochladen.Wenn Sie neue Daten hochladen, werden die ersten drei Zeilen der Datei als Vorschau auf der rechten Seite angezeigt:
Wenn Sie eine Beispieltestdatei benötigen, können Sie diesen Beispieltext
.jsonl
verwenden. Dieses Beispiel enthält Sätze verschiedener technischer Inhalte, und wir werden die semantische Ähnlichkeit in diesen Sätzen bewerten.{"input": [{"role": "system", "content": "Provide a clear and concise summary of the technical content, highlighting key concepts and their relationships. Focus on the main ideas and practical implications."}, {"role": "user", "content": "Tokenization is a key step in preprocessing for natural language processing, involving the division of text into smaller components called tokens. These can be words, subwords, or characters, depending on the method chosen. Word tokenization divides text at word boundaries, while subword techniques like Byte Pair Encoding (BPE) or WordPiece can manage unknown words by breaking them into subunits. Character tokenization splits text into individual characters, useful for multiple languages and misspellings. The tokenization method chosen greatly affects model performance and its capacity to handle various languages and vocabularies."}], "output": "Tokenization divides text into smaller units (tokens) for NLP applications, using word, subword (e.g., BPE), or character methods. Each has unique benefits, impacting model performance and language processing capabilities."} {"input": [{"role": "system", "content": "Create a comprehensive yet concise summary that captures the essential technical details and significance of the topic."}, {"role": "user", "content": "Self-attention mechanisms are vital in modern transformer models, allowing them to evaluate the relevance of different parts of an input sequence when processing each element. In self-attention, each position in a sequence learns to focus on all other positions, forming a weighted sum of their values. Attention weights are derived using queries, keys, and values, with compatibility between a query and key determining attention to each value. This mechanism enables capturing long-range dependencies and relationships within a sequence, making it effective for tasks needing context understanding and inter-part relationships."}], "output": "Self-attention is crucial in transformers, enabling each sequence position to evaluate and collect data from all others. It uses queries, keys, and values for attention weights, effectively capturing long-range dependencies and contextual links."} {"input": [{"role": "system", "content": "Synthesize the technical information into a brief, accurate summary that maintains the core concepts and their significance."}, {"role": "user", "content": "The transformer architecture significantly changed natural language processing by introducing a new method for sequence processing. Unlike recurrent neural networks, transformers process whole sequences at once using self-attention. The architecture consists of an encoder and decoder, each with multiple layers of multi-head attention, feed-forward networks, and normalization layers. The encoder processes the input sequence, and the decoder produces the output sequence. Positional encodings are added to retain sequence order information since the model lacks inherent sequence position awareness. This architecture underlies many leading language models like BERT and GPT."}], "output": "Transformers are a transformative neural architecture processing sequences with self-attention instead of recurrence. Their encoder-decoder design, with multi-head attention and position encodings, is fundamental to modern language models like BERT and GPT."} {"input": [{"role": "system", "content": "Distill the technical content into a clear, concise summary that preserves the most important concepts and their practical applications."}, {"role": "user", "content": "Cosine similarity is a metric for measuring similarity between vectors by calculating the cosine of the angle between them. The outcome ranges from -1 to 1, with 1 indicating identical orientation, 0 orthogonality, and -1 opposite orientation. In machine learning and NLP, cosine similarity is useful for comparing document vectors, word embeddings, or any high-dimensional representations. It's often preferred over Euclidean distance because it's invariant to vector magnitude, focusing instead on orientation. This makes it particularly useful for comparing documents or embeddings of various lengths or scales."}], "output": "Cosine similarity evaluates vector similarity by computing their angle's cosine, with values from -1 to 1. It's widely used in ML and NLP for comparing document vectors and embeddings due to its magnitude-invariant nature."} {"input": [{"role": "system", "content": "Provide a succinct summary that captures the key technical concepts and their relationships while maintaining clarity and accuracy."}, {"role": "user", "content": "Neural network activation functions are crucial for introducing non-linearity to deep learning models. Commonly used activation functions include ReLU (Rectified Linear Unit), which outputs the input directly if positive and zero otherwise, sigmoid, which compresses values between 0 and 1, and tanh, which normalizes values between -1 and 1. Each function has specific benefits and applications: ReLU avoids vanishing gradients and enables sparse activation, sigmoid is useful for binary classification, and tanh is often used in hidden layers for its zero-centered output. The activation function choice greatly affects model training dynamics and ultimate performance."}], "output": "Activation functions introduce non-linearity to neural networks, with ReLU, sigmoid, and tanh being the most common. Each serves distinct purposes: ReLU prevents vanishing gradients, sigmoid is suitable for binary classification, and tanh offers zero-centered output, all affecting model performance differently."} {"input": [{"role": "system", "content": "Create a focused summary that emphasizes the main technical concepts and their practical implications while maintaining accuracy."}, {"role": "user", "content": "Batch normalization is a technique that stabilizes and accelerates deep neural network training by normalizing each layer's inputs. It normalizes activations using the mean and variance computed over the current data batch. This normalization reduces internal covariate shift, where the input distribution changes during training. Batch normalization includes learnable parameters (gamma and beta) allowing the network to reverse normalization if necessary. Benefits include enabling higher learning rates, lessening the importance of precise parameter initialization, and serving as a regularizer, potentially removing the need for dropout."}], "output": "Batch normalization stabilizes neural network training by normalizing layer inputs using batch statistics. It addresses internal covariate shift with learnable parameters, allowing higher learning rates and improved training dynamics, while offering regularization benefits."} {"input": [{"role": "system", "content": "Summarize the technical content while preserving the essential concepts and their interconnections, ensuring clarity and precision."}, {"role": "user", "content": "Gradient descent optimization algorithms are foundational to training machine learning models. The basic version updates parameters in the steepest descent direction of the loss function. Variants like Stochastic Gradient Descent (SGD) use random samples to estimate gradients, enhancing computational efficiency. Advanced optimizers like Adam combine momentum (helping overcome local minima) and RMSprop (adapting learning rates for each parameter). These optimizers maintain running averages of gradients and their squares, enabling adaptive learning rates and more efficient training. The optimizer choice can significantly influence model convergence speed and final performance."}], "output": "Gradient descent algorithms optimize ML models by updating parameters based on loss gradients. Variants like SGD use sampling for efficiency, while advanced optimizers like Adam combine momentum with adaptive learning rates for improved training performance."} {"input": [{"role": "system", "content": "Deliver a concise yet comprehensive summary that highlights the key technical aspects and their practical significance."}, {"role": "user", "content": "Cross-validation is a resampling method used to evaluate machine learning models on limited data. The most common form, k-fold cross-validation, involves dividing the dataset into k equal parts, training the model on k-1 folds while validating on the remaining fold, and rotating through all combinations. This provides a more robust model performance assessment than a single train-test split, helping detect overfitting and estimate model generalization to unseen data. Variations include stratified k-fold (maintaining class distribution), leave-one-out (k equals dataset size), and time series cross-validation for temporal data."}], "output": "Cross-validation evaluates ML models by training and testing on different data splits, typically using k-fold methodology. This approach offers better performance assessment than single splits, with variations for different data types and requirements."} {"input": [{"role": "system", "content": "Generate a clear and focused summary that captures the essential technical details while maintaining their relationships and significance."}, {"role": "user", "content": "Transfer learning is a machine learning method where a model developed for one task is reused as the starting point for a model on a second task. This approach is powerful in deep learning, where pre-trained models on large datasets (like ImageNet for computer vision or BERT for NLP) are fine-tuned on specific downstream tasks. Transfer learning reduces the need for large amounts of task-specific training data and computational resources, as the model has already learned useful features from the source ___domain. Common strategies include feature extraction (freezing pre-trained layers) and fine-tuning (updating all or some pre-trained weights)."}], "output": "Transfer learning reuses models trained on one task for different tasks, particularly effective in deep learning. It leverages pre-trained models through feature extraction or fine-tuning, reducing data and computational needs for new tasks."} {"input": [{"role": "system", "content": "Provide a precise and informative summary that distills the key technical concepts while maintaining their relationships and practical importance."}, {"role": "user", "content": "Ensemble methods combine multiple machine learning models to create a more robust and accurate predictor. Common techniques include bagging (training models on random data subsets), boosting (sequentially training models to correct earlier errors), and stacking (using a meta-model to combine base model predictions). Random Forests, a popular bagging method, create multiple decision trees using random feature subsets. Gradient Boosting builds trees sequentially, with each tree correcting the errors of previous ones. These methods often outperform single models by reducing overfitting and variance while capturing different data aspects."}], "output": "Ensemble methods enhance prediction accuracy by combining multiple models through techniques like bagging, boosting, and stacking. Popular implementations include Random Forests (using multiple trees with random features) and Gradient Boosting (sequential error correction), offering better performance than single models."}
Wenn Sie neue Antworten mithilfe von Eingaben aus Ihren Testdaten erstellen möchten, können Sie "Neue Antworten generieren" auswählen. Dadurch werden die Eingabefelder aus unserer Auswertungsdatei in einzelne Aufforderungen für ein Modell Ihrer Wahl zum Generieren der Ausgabe eingefügt.
Sie wählen das Modell Ihrer Wahl aus. Wenn Sie kein Modell haben, können Sie eine neue Modellimplementierung erstellen. Das ausgewählte Modell verwendet die Eingabedaten und generiert eigene eindeutige Ausgaben, die in diesem Fall in einer Variablen namens {{sample.output_text}}
gespeichert werden. Wir werden dieses Ergebnis später als Teil unserer Testkriterien verwenden. Alternativ können Sie ihre eigenen benutzerdefinierten Systemnachrichten und einzelne Nachrichtenbeispiele manuell bereitstellen.
Zum Erstellen einer Testkriterien wählen Sie "Hinzufügen" aus. Für die bereitgestellte Beispieldatei werden wir die semantische Ähnlichkeit bewerten. Wählen Sie "Model Scorer" aus, der Testkriterienvoreinstellungen für die semantische Ähnlichkeit enthält.
Wählen Sie oben die semantische Ähnlichkeit aus. Scrollen Sie nach unten und geben Sie im
User
Abschnitt{{item.output}}
alsGround truth
an und{{sample.output_text}}
alsOutput
an. Dadurch wird die ursprüngliche Referenzausgabe ihrer Auswertungsdatei.jsonl
(die bereitgestellte Beispieldatei) verwendet und mit der Ausgabe verglichen, die vom im vorherigen Schritt ausgewählten Modell generiert wird.
Wählen Sie "Hinzufügen" aus, um diese Testkriterien hinzuzufügen. Wenn Sie zusätzliche Testkriterien hinzufügen möchten, können Sie diese zu diesem Schritt hinzufügen.
Sie sind bereit, Ihre Auswertung zu erstellen. Geben Sie Ihren Bewertungsname an, überprüfen Sie, ob alles korrekt ist, und reichen Sie den Bewertungsauftrag ein. Sie werden zu einer Statusseite für Ihren Auswertungsauftrag weitergeleitet, auf der der Status " Warten" angezeigt wird.
- Nachdem Ihr Auswertungsauftrag erstellt wurde, können Sie den Auftrag auswählen, um die vollständigen Details des Auftrags anzuzeigen:
- Für die semantische Ähnlichkeit enthält Anzeigen von Ausgabedetails eine JSON-Darstellung, die Sie kopieren/einfügen können, um die bestandenen Tests zu kopieren/einzufügen.
- Sie können auch weitere Evaluierungsläufe hinzufügen, indem Sie in der oberen linken Ecke Ihrer Auswertungsauftragsseite die Schaltfläche + Lauf hinzufügen auswählen.
Auswertung erstellen
Sie können eine Auswertung erstellen, indem Sie eine Datenquellenkonfiguration und die Auswertungstestkriterien angeben. Nachfolgend finden Sie eine von vielen Möglichkeiten, eine Datenquellenkonfiguration zu definieren. Sie können auch ein oder mehrere Testkriterien angeben.
import asyncio
import json
import requests
async def create_eval():
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
'name': 'My Evaluation',
'data_source_config': {
'type': 'custom',
'item_schema': {
'type': 'object',
'properties': {
'question': {
'type': 'string'
},
'subject': {
'type': 'string'
},
'A': {
'type': 'string'
},
'B': {
'type': 'string'
},
'C': {
'type': 'string'
},
'D': {
'type': 'string'
},
'answer': {
'type': 'string'
},
'completion': {
'type': 'string'
}
}
}
},
'testing_criteria': [
{
'type': 'string_check',
'reference': '{{item.completion}}',
'input': '{{item.answer}}',
'operation': 'eq',
'name': 'string check'
}
]
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Erstellen eines Einzeldurchlaufs
Azure OpenAI Evaluation ermöglicht das Erstellen mehrerer Ausführungen unter einem Auswertungsauftrag. Wenn Sie einer vorhandenen Auswertung einen einzelnen Auswertungslauf hinzufügen möchten, können Sie die eval_id
der vorhandenen Auswertung angeben:
import asyncio
import requests
import json
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}/runs',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
"name": "No sample",
"metadata": {
"sample_generation": "off",
"file_format": "jsonl"
},
"data_source": {
"type": "jsonl",
"source": {
"type": "file_id",
"id": "file-75099d8d4b5b4abca7cc91e9eca7bba1"
}
}
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Vorhandene Auswertung aktualisieren
import asyncio
import requests
import json
async def update_eval():
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
"name": "Updated Eval Name",
"metadata": {
"sample_generation": "off",
"file_format": "jsonl",
"updated": "metadata"
}
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Auswertungsergebnisse
Sobald die Auswertung abgeschlossen ist, können Sie die Auswertungsergebnisse für den Auswertungsauftrag abrufen, indem Sie die angegebene ID eval_id
verwenden.
import asyncio
import requests
async def get_eval():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(response.json())
Ergebnis eines einzelnen Bewertungslaufs
Genau wie Sie eine einzelne Auswertung unter einem vorhandenen Auswertungsauftrag erstellen können, können Sie auch das Ergebnis für eine einzelne Ausführung abrufen:
import asyncio
import requests
import json
async def get_eval_run():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Zusätzlich zu den Parametern in den obigen Beispielen können Sie optional diese Parameter für spezifischere Drilldowns zu den Auswertungsergebnissen hinzufügen:
Name | Geben Sie in | Erforderlich | Typ | BESCHREIBUNG |
---|---|---|---|---|
Endpunkt | Pfad | Ja | Schnur | Unterstützte Azure OpenAI-Endpunkte (Protokoll und Hostname, z. B.: https://aoairesource.openai.azure.com . Ersetzen Sie „aoairesource“ durch den Namen Ihrer Azure OpenAI-Ressource). https://{Name Ihrer Ressource}.openai.azure.com |
eval-id | Pfad | Ja | Schnur | ID der Auswertung, zu der Ausführungen abgerufen werden sollen |
run-id | Pfad | Ja | Schnur | ID der Ausführung, für die Ausgabeelemente abgerufen werden sollen |
after | Anfrage | Nein | Schnur | Bezeichner für das letzte Ausgabeelement aus der vorherigen Paginierungsanforderung. |
limit | Anfrage | Nein | integer | Anzahl der abzurufenden Ausgabeelemente. |
status | Anfrage | Nein | Schnur | Mögliche Werte: nicht bestanden, bestanden. Filtert Ausgabeelemente nach Status. Verwenden Sie „fail“, um nach fehlgeschlagenen Ausgabeelementen zu filtern, und „pass“, um nach erfolgreichen Ausgabeelementen zu filtern. |
order | Anfrage | Nein | Schnur | Mögliche Werte: asc, desc. Sortierreihenfolge für Ausgabeelemente nach Zeitstempel. Verwenden Sie asc für aufsteigende Reihenfolge oder Desc für absteigende Reihenfolge. Der Standardwert lautet „asc“. |
API-Version | Anfrage | Ja | Schnur | Die angeforderte API-Version. |
Auswertungsliste
Um die Liste aller erstellten Auswertungsaufträge zu sehen:
import asyncio
import requests
import json
async def get_eval_list():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Ausgabedetails für eine Ausführung
Sie können die einzelnen Ausgaben anzeigen, die von den Gradern für einen einzelnen Auswertungslauf generiert wurden:
import asyncio
import requests
import json
async def get_eval_output_item_list():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d/output_items',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Wenn Sie ein bestimmtes Ausgabeergebnis sehen möchten, können Sie die Ausgabeelement-ID angeben:
import asyncio
import requests
import json
async def get_eval_output_item():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d/output_items/outputitem_67fe988369308190b50d805120945deb',
headers={'api-key': API_KEY})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Auswertung erstellen
Sie können eine Auswertung erstellen, indem Sie eine Datenquellenkonfiguration und die Auswertungstestkriterien angeben. Nachfolgend finden Sie eine von vielen Möglichkeiten, eine Datenquellenkonfiguration zu definieren. Sie können auch ein oder mehrere Testkriterien angeben.
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "aoai-evals: preview" \
-d '{
"name": "Math Quiz",
"data_source_config": {
"type": "custom",
"include_sample_schema": true,
"item_schema": {
"type": "object",
"properties": {
"question": { "type": "string" },
"A": { "type": "string" },
"B": { "type": "string" },
"C": { "type": "string" },
"D": { "type": "string" },
"answer": { "type": "string" }
}
}
},
"testing_criteria": [
{
"type": "string_check",
"reference": "{{item.answer}}",
"input": "{{sample.output_text}}",
"operation": "eq",
"name": "string check"
}
]
}'
Einen einzelnen Lauf erstellen
Azure OpenAI Evaluation ermöglicht das Erstellen mehrerer Ausführungen unter einem Auswertungsauftrag.
Sie können dem im vorherigen Schritt erstellten Auswertungsauftrag neue Auswertungsläufe hinzufügen, indem Sie angeben eval-id
.
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Vorhandene Auswertung aktualisieren
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id} \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Auswertungsergebnisse
Sobald die Auswertung abgeschlossen ist, können Sie die Auswertungsergebnisse für den Auswertungsauftrag abrufen, indem Sie die eval_id
angeben.
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Ergebnis des Einzelauswertungslaufs
Genau wie Sie eine einzelne Auswertung unter einem vorhandenen Auswertungsauftrag erstellen können, können Sie auch das Ergebnis für eine einzelne Ausführung abrufen:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Zusätzlich zu den Parametern in den obigen Beispielen können Sie optional diese Parameter für spezifischere Drilldowns zu den Auswertungsergebnissen hinzufügen:
Name | Geben Sie in | Erforderlich | Typ | BESCHREIBUNG |
---|---|---|---|---|
Endpunkt | Pfad | Ja | Schnur | Unterstützte Azure OpenAI-Endpunkte (Protokoll und Hostname, z. B.: https://aoairesource.openai.azure.com . Ersetzen Sie „aoairesource“ durch den Namen Ihrer Azure OpenAI-Ressource). https://{Name Ihrer Ressource}.openai.azure.com |
eval-id | Pfad | Ja | Schnur | ID der Auswertung, zu der Ausführungen abgerufen werden sollen |
run-id | Pfad | Ja | Schnur | ID der Ausführung, für die Ausgabeelemente abgerufen werden sollen |
after | Anfrage | Nein | Schnur | Bezeichner für das letzte Ausgabeelement aus der vorherigen Paginierungsanforderung. |
limit | Anfrage | Nein | integer | Anzahl der abzurufenden Ausgabeelemente. |
status | Anfrage | Nein | Schnur | Mögliche Werte: nicht bestanden, bestanden. Filtert Ausgabeelemente nach Status. Verwenden Sie "fail" zum Filtern nach fehlgeschlagenen Ausgabeelementen oder "pass" zum Filtern nach bestandenen Ausgabeelementen. |
order | Anfrage | Nein | Schnur | Mögliche Werte: asc, desc. Sortierreihenfolge für Ausgabeelemente nach Zeitstempel. Verwenden Sie asc für aufsteigende Reihenfolge oder Desc für absteigende Reihenfolge. Der Standardwert lautet „asc“. |
API-Version | Anfrage | Ja | Schnur | Die angeforderte API-Version. |
Auswertungsliste
Um die Liste aller erstellten Auswertungsaufträge anzuzeigen:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Ausgabedetails für eine Ausführung
Sie können die einzelnen Ergebnisse anzeigen, die von den Bewertungsinstanzen für einen einzelnen Auswertungslauf generiert wurden:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}/output_items" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Wenn Sie ein bestimmtes Ausgabeergebnis sehen möchten, können Sie die Ausgabeelement-ID angeben:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}/output_items/{output-item-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Typen von Testkriterien
Azure OpenAI Evaluation bietet verschiedene Bewertungstestkriterien auf der Grundlage der semantischen Ähnlichkeit, die wir im bereitgestellten Beispiel gesehen haben. In diesem Abschnitt finden Sie Weitere Informationen zu den einzelnen Testkriterien.
Faktizität
Bewertet die sachliche Genauigkeit einer eingereichten Antwort, indem sie mit einer Expertenantwort verglichen wird.
Die Faktizitätsbewertung bewertet die sachliche Genauigkeit einer eingereichten Antwort, indem sie mit einer Expertenantwort verglichen wird. Mit einer detaillierten CoT-Aufforderung (Chain-of-Thought) bestimmt der Bewerter, ob die eingereichte Antwort mit der Expertenantwort übereinstimmt, eine Teilmenge davon ist, eine Obermenge darstellt oder im Widerspruch zu ihr steht. Er ignoriert Unterschiede bei Stil, Grammatik oder Interpunktion und konzentriert sich ausschließlich auf faktenbezogene Inhalte. Die Faktizität kann in vielen Szenarien nützlich sein, insbesondere bei der Inhaltsüberprüfung und für Bildungstools, die die Genauigkeit der Antworten, die von KI bereitgestellt werden, sicherstellen.
Sie können den Eingabeaufforderungstext anzeigen, der als Teil dieser Testkriterien verwendet wird, indem Sie das Dropdownmenü neben der Eingabeaufforderung auswählen. Der aktuelle Eingabeaufforderungstext lautet:
Prompt
You are comparing a submitted answer to an expert answer on a given question.
Here is the data:
[BEGIN DATA]
************
[Question]: {input}
************
[Expert]: {ideal}
************
[Submission]: {completion}
************
[END DATA]
Compare the factual content of the submitted answer with the expert answer. Ignore any differences in style, grammar, or punctuation.
The submitted answer may either be a subset or superset of the expert answer, or it may conflict with it. Determine which case applies. Answer the question by selecting one of the following options:
(A) The submitted answer is a subset of the expert answer and is fully consistent with it.
(B) The submitted answer is a superset of the expert answer and is fully consistent with it.
(C) The submitted answer contains all the same details as the expert answer.
(D) There is a disagreement between the submitted answer and the expert answer.
(E) The answers differ, but these differences don't matter from the perspective of factuality.
Semantische Nähe
Misst den Grad der Ähnlichkeit zwischen der Antwort des Modells und der Referenz. Grades: 1 (completely different) - 5 (very similar)
.
Sentiment
Versucht, den emotionalen Ton der Ausgabe zu identifizieren.
Sie können den Eingabeaufforderungstext anzeigen, der als Teil dieser Testkriterien verwendet wird, indem Sie das Dropdownmenü neben der Eingabeaufforderung auswählen. Der aktuelle Eingabeaufforderungstext lautet:
Prompt
You will be presented with a text generated by a large language model. Your job is to rate the sentiment of the text. Your options are:
A) Positive
B) Neutral
C) Negative
D) Unsure
[BEGIN TEXT]
***
[{text}]
***
[END TEXT]
First, write out in a step by step manner your reasoning about the answer to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character (without quotes or punctuation) on its own line corresponding to the correct answer. At the end, repeat just the letter again by itself on a new line
Zeichenfolgenüberprüfung
Überprüft, ob die Ausgabe exakt mit der erwarteten Zeichenfolge übereinstimmt.
Die Zeichenfolgenüberprüfung führt verschiedene binäre Vorgänge für zwei Zeichenfolgenvariablen aus, die verschiedene Auswertungskriterien ermöglichen. Sie hilft bei der Überprüfung verschiedener Zeichenfolgenbeziehungen, einschließlich Gleichheit, Eigenständigkeit und spezifischen Mustern. Mit diesem Evaluator können Vergleiche zwischen Groß- und Kleinschreibung beachtet werden. Außerdem werden angegebene Bewertungen für wahre oder falsche Ergebnisse bereitgestellt, sodass angepasste Auswertungsergebnisse basierend auf dem Vergleichsergebnis möglich sind. Dies ist der Typ der unterstützten Vorgänge:
equals
: Überprüft, ob die Ausgabezeichenfolge mit der Auswertungszeichenfolge übereinstimmt.contains
: Überprüft, ob die Auswertungszeichenfolge eine Teilzeichenfolge der Ausgabezeichenfolge ist.starts-with
: Überprüft, ob die Ausgabezeichenfolge mit der Auswertungszeichenfolge beginnt.ends-with
: Überprüft, ob die Ausgabezeichenfolge auf die Auswertungszeichenfolge endet.
Hinweis
Wenn Sie bestimmte Parameter in Ihren Testkriterien festlegen, haben Sie die Möglichkeit, zwischen der Variablen und der Vorlage zu wählen. Wählen Sie Variable aus, wenn Sie auf eine Spalte in Ihren Eingabedaten verweisen möchten. Wählen Sie Vorlage aus, wenn Sie eine feste Zeichenfolge angeben möchten.
Gültiges JSON oder XML
Überprüft, ob die Ausgabe eine gültige JSON- oder XML-Datei ist.
Schemaübereinstimmung
Stellt sicher, dass die Ausgabe der angegebene Struktur entspricht.
Kriterienübereinstimmung
Bewerten Sie, ob die Antwort des Modells Ihren Kriterien entspricht. Bewertung: Bestanden oder Fehlerhaft.
Sie können den Eingabeaufforderungstext anzeigen, der als Teil dieser Testkriterien verwendet wird, indem Sie das Dropdownmenü neben der Eingabeaufforderung auswählen. Der aktuelle Eingabeaufforderungstext lautet:
Prompt
Your job is to assess the final response of an assistant based on conversation history and provided criteria for what makes a good response from the assistant. Here is the data:
[BEGIN DATA]
***
[Conversation]: {conversation}
***
[Response]: {response}
***
[Criteria]: {criteria}
***
[END DATA]
Does the response meet the criteria? First, write out in a step by step manner your reasoning about the criteria to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character "Y" or "N" (without quotes or punctuation) on its own line corresponding to the correct answer. "Y" for yes if the response meets the criteria, and "N" for no if it does not. At the end, repeat just the letter again by itself on a new line.
Reasoning:
Textqualität
Wertet die Textqualität aus durch Vergleich mit einem Referenztext.
Zusammenfassung:
- BLEU-Score: Bewertet die Qualität des generierten Texts durch Vergleich mit einer oder mehreren qualitativ hochwertigen Referenzübersetzungen mithilfe der BLEU-Bewertung.
- ROUGE-Score: Bewertet die Qualität des generierten Texts durch Vergleich mit Zusammenfassungen mithilfe von ROUGE-Bewertungen.
- Kosinus: Die auch als Kosinusähnlichkeit bezeichnete Methode misst, wie eng zwei Texteinbettungen (z. B. Modellausgaben und Referenztexte) in ihrer Bedeutung übereinstimmen, und hilft so bei der Bewertung der semantischen Ähnlichkeit zwischen ihnen. Dazu wird ihr Abstand im Vektorraum gemessen.
Details:
Der BLEU-Score (Bilingual Evaluation Understudy) wird häufig in der Verarbeitung natürlicher Sprache (NLP) und bei maschineller Übersetzung verwendet. Es wird häufig in Textzusammenfassungs- und Textgenerierungsanwendungsfällen verwendet. Er wertet aus, wie genau der generierte Text dem Bezugstext entspricht. Der BLEU-Score reicht von 0 bis 1, wobei höheren Bewertungen eine bessere Qualität angeben.
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) ist eine Reihe von Metriken, die zur Auswertung der automatischen Zusammenfassung und maschinellen Übersetzung verwendet werden. Sie misst die Überlappung zwischen generierten Text und Referenzzusammenfassungen. ROUGE konzentriert sich auf rückruforientierte Maßnahmen, um zu beurteilen, wie gut der generierte Text den Referenztext abdeckt. Die ROUGE-Bewertung bietet verschiedene Metriken, darunter:
- ROUGE-1: Überlappung von Unigrammen (einzelne Wörter) zwischen generiertem Text und Referenztext.
- ROUGE-2: Überlappung von Bigrammen (zwei aufeinander folgende Wörter) zwischen generiertem Text und Referenztext.
- ROUGE-3: Überlappung von Trigrammen (drei aufeinander folgende Wörter) zwischen generiertem Text und Referenztext.
- ROUGE-4: Überlappung von Viergrammen (vier aufeinander folgende Wörter) zwischen generiertem Text und Referenztext.
- ROUGE-5: Überlappung von Fünfgrammen (fünf aufeinander folgende Wörter) zwischen generiertem Text und Referenztext.
- ROUGE-L: Überlappung von L-Grammen (L aufeinander folgende Wörter) zwischen generiertem Text und Referenztext.
Textzusammenfassung und Dokumentvergleich gehören zu optimalen Anwendungsfällen für ROUGE, insbesondere in Szenarien, in denen Textkohärenz und Relevanz kritisch sind.
Die Kosinusähnlichkeit misst, wie eng zwei Texteinbettungen (z. B. Modellausgaben und Referenztexte) in ihrer Bedeutung übereinstimmen, und hilft so bei der Bewertung der semantischen Ähnlichkeit zwischen ihnen. Wie bei anderen modellbasierten Auswertern müssen Sie eine Modellimplementierungen zur Auswertung bereitstellen.
Von Bedeutung
Für diesen Auswerter werden nur Einbettungsmodelle unterstützt:
text-embedding-3-small
text-embedding-3-large
text-embedding-ada-002
Benutzerdefinierte Eingabeaufforderung
Verwendet das Modell, um die Ausgabe in eine Reihe von angegebenen Bezeichnungen zu klassifizieren. Dieser Auswerter verwendet eine benutzerdefinierte Eingabeaufforderung, die Sie definieren müssen.