Benutzerdefinierte Evaluatoren (klassisch)

Zurzeit wird folgendes angezeigt:Foundry (klassische) Portalversion - Wechseln zur Version für das neue Foundry-Portal

Note

Das Microsoft Foundry SDK für Die Auswertung und das Gießereiportal befindet sich in der öffentlichen Vorschau, die APIs sind jedoch allgemein für die Modell- und Datasetauswertung verfügbar (die Agentauswertung verbleibt in der öffentlichen Vorschau). Das in diesem Artikel markierte Azure AI Evaluation SDK und Bewerter (Vorschau) befinden sich derzeit überall in der öffentlichen Vorschau.

Integrierte Bewerter bieten eine einfache Möglichkeit, die Qualität der Anwendungsgenerationen zu überwachen. Um Ihre Auswertungen anzupassen, können Sie eigene codebasierte oder promptbasierte Auswertungen erstellen.

Code-based evaluators

Für bestimmte Bewertungsmetriken braucht man kein großes Sprachmodell. Codebasierte Evaluatoren geben Ihnen die Flexibilität, Metriken basierend auf Funktionen oder aufrufbaren Klassen zu definieren. Sie können zum Beispiel Ihren eigenen codebasierten Evaluator erstellen, indem Sie eine einfache Python-Klasse erstellen, die die Länge einer Antwort in answer_length.py unter dem Verzeichnis answer_len/ berechnet, wie im folgenden Beispiel.

Beispiel für einen codebasierten Evaluator: Antwortlänge

class AnswerLengthEvaluator:
    def __init__(self):
        pass
    # A class is made callable by implementing the special method __call__
    def __call__(self, *, answer: str, **kwargs):
        return {"answer_length": len(answer)}

Führe den Evaluator auf einer Datenzeile aus, indem du eine aufrufbare Klasse importierst:

from answer_len.answer_length import AnswerLengthEvaluator

answer_length_evaluator = AnswerLengthEvaluator()
answer_length = answer_length_evaluator(answer="What is the speed of light?")

Codebasierte Evaluatorausgabe: Antwortlänge

{"answer_length":27}

Prompt-based evaluators

Um Ihren eigenen promptbasierten Large Language Model Evaluator oder KI-unterstützten Annotator zu erstellen, erstellen Sie einen benutzerdefinierten Evaluator basierend auf einer Prompty-Datei .

Prompty ist eine Datei mit der Erweiterung .prompty zur Entwicklung von Prompt-Vorlagen. Das Prompty-Asset ist eine Markdown-Datei mit einem modifizierten Front-Matter. Das Frontmaterial ist im YAML-Format. Sie enthält Metadatenfelder, die die Modellkonfiguration und die erwarteten Eingaben des Prompts definieren.

Um die Freundlichkeit einer Antwort zu messen, erstellen Sie einen benutzerdefinierten Evaluator mit dem Namen FriendlinessEvaluator:

Beispiel für einen promptbasierten Evaluator: Freundlichkeitsbewertungsprüfer

Erstellen Sie zunächst eine friendliness.prompty Datei, die die Freundlichkeitsmetrik und deren Bewertungsbewertung definiert:

---
name: Friendliness Evaluator
description: Friendliness Evaluator to measure warmth and approachability of answers.
model:
  api: chat
  configuration:
    type: azure_openai
    azure_endpoint: ${env:AZURE_OPENAI_ENDPOINT}
    azure_deployment: gpt-4o-mini
  parameters:
    model:
    temperature: 0.1
inputs:
  response:
    type: string
outputs:
  score:
    type: int
  explanation:
    type: string
---

system:
Friendliness assesses the warmth and approachability of the answer. Rate the friendliness of the response between one to five stars using the following scale:

One star: the answer is unfriendly or hostile

Two stars: the answer is mostly unfriendly

Three stars: the answer is neutral

Four stars: the answer is mostly friendly

Five stars: the answer is very friendly

Please assign a rating between 1 and 5 based on the tone and demeanor of the response.

**Example 1**
generated_query: I just don't feel like helping you! Your questions are getting very annoying.
output:
{"score": 1, "reason": "The response is not warm and is resisting to be providing helpful information."}
**Example 2**
generated_query: I'm sorry this watch is not working for you. Very happy to assist you with a replacement.
output:
{"score": 5, "reason": "The response is warm and empathetic, offering a resolution with care."}

**Here the actual conversation to be scored:**
generated_query: {{response}}
output:

Erstellen Sie dann eine Klasse FriendlinessEvaluator , um die Prompty-Datei zu laden und die Ausgaben im JSON-Format zu verarbeiten:

import os
import json
import sys
from promptflow.client import load_flow

class FriendlinessEvaluator:
    def __init__(self, model_config):
        current_dir = os.path.dirname(__file__)
        prompty_path = os.path.join(current_dir, "friendliness.prompty")
        self._flow = load_flow(source=prompty_path, model={"configuration": model_config})

    def __call__(self, *, response: str, **kwargs):
        llm_response = self._flow(response=response)
        try:
            response = json.loads(llm_response)
        except Exception as ex:
            response = llm_response
        return response

Erstellen Sie nun Ihren eigenen prompty-basierten Evaluator und führen Sie ihn auf einer Datenzeile aus:

from friendliness.friend import FriendlinessEvaluator

friendliness_eval = FriendlinessEvaluator(model_config)

friendliness_score = friendliness_eval(response="I will not apologize for my behavior!")

Promptbasierter Evaluator-Output: Freundlichkeitsbewertungsprüfer

{
    'score': 1, 
    'reason': 'The response is hostile and unapologetic, lacking warmth or approachability.'
}