Anpassade utvärderare (klassisk)

Visar för närvarande:Foundry-portalversion - (klassisk)Växla till version för den nya Foundry-portalen

Note

Microsoft Foundry SDK för utvärdering och Foundry-portalen är i offentlig förhandsversion, men API:erna är allmänt tillgängliga för utvärdering av modell och datauppsättning (agentutvärderingen finns kvar i offentlig förhandsversion). Azure AI Evaluation SDK och utvärderare markerade (förhandsversion) i den här artikeln finns för närvarande i offentlig förhandsversion överallt.

Inbyggda utvärderare är ett enkelt sätt att övervaka kvaliteten på programmets generationer. Om du vill anpassa dina utvärderingar kan du skapa egna kodbaserade eller promptbaserade utvärderare.

Code-based evaluators

Du behöver inte en stor språkmodell för vissa utvärderingsmått. Kodbaserade utvärderare ger dig flexibilitet att definiera mätvärden baserade på funktioner eller anropbara klasser. Du kan till exempel bygga din egen kodbaserade utvärderare genom att skapa en enkel Python-klass som beräknar längden på ett svar i answer_length.py under katalogen answer_len/, som i följande exempel.

Exempel på kodbaserad utvärderare: Svarslängd

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)}

Kör utvärderaren på en datarad genom att importera en anropbar klass:

from answer_len.answer_length import AnswerLengthEvaluator

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

Kodbaserad utvärderarresultat: Svarslängd

{"answer_length":27}

Prompt-based evaluators

För att bygga din egen promptbaserade utvärdering av stora språkmodeller eller AI-assisterad annotator, skapa en anpassad utvärderare baserad på en promptfil .

Prompty är en fil med .prompty filändelsen för att utveckla promptmallar. Prompty-tillgången är en markdown-fil med ett modifierat frontmaterial. Framtexten är i YAML-format. Den innehåller metadatafält som definierar modellkonfiguration och förväntade indata i prompten.

För att mäta vänligheten i ett svar, skapa en anpassad utvärderare som heter FriendlinessEvaluator:

Exempel på promptbaserad utvärderare: Vänlighetsutvärderare

Skapa först en friendliness.prompty fil som definierar vänlighetsmetriken och dess bedömningsmatris:

---
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:

Skapa sedan en klass FriendlinessEvaluator för att ladda promptfilen och bearbeta utdata med JSON-format:

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

Skapa nu din egen promptbaserade utvärderare och kör den på en rad data:

from friendliness.friend import FriendlinessEvaluator

friendliness_eval = FriendlinessEvaluator(model_config)

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

Promptbaserad utvärderarresultat: Vänlighetsutvärderare

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