Udostępnij za pośrednictwem


Ocena przy użyciu zestawu AZURE AI Evaluation SDK

Ważne

Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Uwaga

Ocena za pomocą zestawu SDK przepływu monitów została wycofana i zastąpiona zestawem AZURE AI Evaluation SDK.

Aby dokładnie ocenić wydajność aplikacji generowania sztucznej inteligencji w przypadku zastosowania do istotnego zestawu danych, możesz ocenić w środowisku deweloperów za pomocą zestawu SDK oceny sztucznej inteligencji platformy Azure. Biorąc pod uwagę testowy zestaw danych lub cel, generowanie generowania aplikacji sztucznej inteligencji jest mierzone ilościowo przy użyciu metryk matematycznych oraz ewaluatorów jakości i bezpieczeństwa wspomaganych przez sztuczną inteligencję. Wbudowane lub niestandardowe ewaluatory mogą zapewnić kompleksowy wgląd w możliwości i ograniczenia aplikacji.

W tym artykule dowiesz się, jak uruchamiać ewaluatorów w jednym wierszu danych, większy zestaw danych testowych w obiekcie docelowym aplikacji z wbudowanymi ewaluatorami przy użyciu zestawu SDK oceny sztucznej inteligencji platformy Azure, a następnie śledzić wyniki i dzienniki oceny w usłudze Azure AI Studio.

Wprowadzenie

Najpierw zainstaluj pakiet ewaluatorów z zestawu AZURE AI evaluation SDK:

pip install azure-ai-evaluation

Wbudowane ewaluatory

Wbudowane ewaluatory obsługują następujące scenariusze aplikacji:

  • Zapytanie i odpowiedź: ten scenariusz jest przeznaczony dla aplikacji, które obejmują wysyłanie zapytań i generowanie odpowiedzi, zwykle jednokrotne.
  • Generowanie rozszerzonej generacji pobierania: ten scenariusz jest odpowiedni dla aplikacji, w których model angażuje się w generowanie przy użyciu podejścia rozszerzonego do pobierania w celu wyodrębniania informacji z dostarczonych dokumentów i generowania szczegółowych odpowiedzi, zwykle wieloeściowych.

Aby uzyskać bardziej szczegółowe informacje na temat każdej definicji ewaluatora i sposobu jej obliczania, zobacz Metryki oceny i monitorowania dla generowania sztucznej inteligencji.

Kategoria Evaluator, klasa
Wydajność i jakość (wspomagana sztuczna inteligencja) GroundednessEvaluator, , RelevanceEvaluator, CoherenceEvaluator, FluencyEvaluator, , SimilarityEvaluatorRetrievalEvaluator
Wydajność i jakość (NLP) F1ScoreEvaluator, , RougeScoreEvaluator, GleuScoreEvaluator, , BleuScoreEvaluatorMeteorScoreEvaluator
Ryzyko i bezpieczeństwo (wspomagane przez sztuczną inteligencję) ViolenceEvaluator, , SexualEvaluator, SelfHarmEvaluator, HateUnfairnessEvaluator, , IndirectAttackEvaluatorProtectedMaterialEvaluator
Elementy złożone QAEvaluator, ContentSafetyEvaluator

Wbudowane metryki jakości i bezpieczeństwa przyjmują pary zapytań i odpowiedzi wraz z dodatkowymi informacjami dla określonych ewaluatorów.

Napiwek

Aby uzyskać więcej informacji na temat danych wejściowych i wyjściowych, zobacz dokumentację referencyjną języka Python platformy Azure.

Wymagania dotyczące danych dla wbudowanych ewaluatorów

Wbudowani ewaluatorzy mogą akceptować pary zapytań i odpowiadać na nie lub listę konwersacji:

  • Pary zapytań i odpowiedzi w .jsonl formacie z wymaganymi danymi wejściowymi.
  • Lista konwersacji w .jsonl formacie w poniższej sekcji.
Ewaluator query response context ground_truth conversation
GroundednessEvaluator Nie dotyczy Wymagane: ciąg Wymagane: ciąg Nie dotyczy Obsługiwane
RelevanceEvaluator Wymagane: ciąg Wymagane: ciąg Wymagane: ciąg Nie dotyczy Obsługiwane
CoherenceEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
FluencyEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
SimilarityEvaluator Wymagane: ciąg Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
RetrievalEvaluator Brak NIE DOTYCZY NIE DOTYCZY Brak Obsługiwana jest tylko konwersacja
F1ScoreEvaluator Nie dotyczy Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
RougeScoreEvaluator Nie dotyczy Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
GleuScoreEvaluator Nie dotyczy Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
BleuScoreEvaluator Nie dotyczy Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
MeteorScoreEvaluator Nie dotyczy Wymagane: ciąg Nie dotyczy Wymagane: ciąg Nieobsługiwane
ViolenceEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
SexualEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
SelfHarmEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
HateUnfairnessEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
IndirectAttackEvaluator Wymagane: ciąg Wymagane: ciąg Wymagane: ciąg Nie dotyczy Obsługiwane
ProtectedMaterialEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
QAEvaluator Wymagane: ciąg Wymagane: ciąg Wymagane: ciąg Nie dotyczy Nieobsługiwane
ContentSafetyEvaluator Wymagane: ciąg Wymagane: ciąg Brak Brak Obsługiwane
  • Zapytanie: zapytanie wysyłane do aplikacji generowania sztucznej inteligencji
  • Odpowiedź: odpowiedź na zapytanie wygenerowane przez generowaną aplikację sztucznej inteligencji
  • Kontekst: źródło, które odpowiedź jest generowana w odniesieniu do (czyli dokumentów uziemionych)
  • Prawda: odpowiedź na zapytanie wygenerowane przez użytkownika/człowieka jako prawdziwą odpowiedź
  • Konwersacja: lista wiadomości użytkownika i asystenta zmienia się. Zobacz więcej w następnej sekcji.

Ocenianie konwersacji wieloe obrotu

W przypadku ewaluatorów, którzy obsługują konwersacje jako dane wejściowe, wystarczy przekazać konwersację bezpośrednio do ewaluatora:

relevance_score = relevance_eval(conversation=conversation)

Konwersacja to słownik języka Python zawierający listę wiadomości (w tym zawartość, rola i opcjonalny kontekst). Poniżej przedstawiono przykład dwuełowej konwersacji.

{"conversation":
    {"messages": [
        {
            "content": "Which tent is the most waterproof?", 
            "role": "user"
        },
        {
            "content": "The Alpine Explorer Tent is the most waterproof",
            "role": "assistant", 
            "context": "From the our product list the alpine explorer tent is the most waterproof. The Adventure Dining Table has higher weight."
        },
        {
            "content": "How much does it cost?",
            "role": "user"
        },
        {
            "content": "The Alpine Explorer Tent is $120.",
            "role": "assistant",
            "context": null
        }
        ]
    }
}

Konwersacje są oceniane na kolei, a wyniki są agregowane na wszystkich zakrętach dla wyniku konwersacji.

Ewaluatory wydajności i jakości

W przypadku korzystania z metryk wydajności i jakości wspomaganych przez sztuczną inteligencję należy określić model GPT dla procesu obliczania.

Konfiguruj

Wybierz wdrożenie z modelem GPT-3.5, GPT-4, GPT-4o lub GPT-4-mini dla obliczeń i ustaw go jako .model_config Obsługujemy zarówno schemat konfiguracji modelu Azure OpenAI, jak i OpenAI. Zalecamy używanie modeli GPT, które nie mają sufiksu (preview) dla najlepszej wydajności i analizowalnych odpowiedzi z naszymi ewaluatorami.

Użycie ewaluatora wydajności i jakości

Wbudowane ewaluatory można uruchamiać, importując odpowiednią klasę ewaluatora. Upewnij się, że ustawiono zmienne środowiskowe.

import os

# Initialize Azure OpenAI Connection with your environment variables
model_config = {
    "azure_endpoint": os.environ.get("AZURE_OPENAI_ENDPOINT"),
    "api_key": os.environ.get("AZURE_OPENAI_API_KEY"),
    "azure_deployment": os.environ.get("AZURE_OPENAI_DEPLOYMENT"),
    "api_version": os.environ.get("AZURE_OPENAI_API_VERSION"),
}

from azure.ai.evaluation import RelevanceEvaluator

# Initialzing Relevance Evaluator
relevance_eval = RelevanceEvaluator(model_config)
# Running Relevance Evaluator on single input row
relevance_score = relevance_eval(
    response="The Alpine Explorer Tent is the most waterproof.",
    context="From the our product list,"
    " the alpine explorer tent is the most waterproof."
    " The Adventure Dining Table has higher weight.",
    query="Which tent is the most waterproof?",
)
print(relevance_score)

Oto przykład wyniku:

{'relevance.gpt_relevance': 5.0}

Ewaluatorzy ryzyka i bezpieczeństwa

W przypadku korzystania z metryk ryzyka i bezpieczeństwa wspomaganego przez sztuczną inteligencję model GPT nie jest wymagany. model_configZamiast , podaj swoje azure_ai_project informacje. Uzyskuje to dostęp do usługi zaplecza oceny bezpieczeństwa usługi Azure AI Studio, która aprowizuje model GPT specyficzny dla oceny szkód, która może generować oceny ważności ryzyka zawartości i rozumowania w celu umożliwienia ewaluatorów bezpieczeństwa.

Obsługa regionów

Obecnie metryki ryzyka i bezpieczeństwa wspomagane przez sztuczną inteligencję są dostępne tylko w następujących regionach:

Region (Region) Nienawiść i niesprawiedliwość, seksualna, brutalna, samookaleczenia, XPIA Materiał chroniony
Południowe Zjednoczone Królestwo Zostanie wycofana 12.01.24 Nie dotyczy
Wschodnie stany USA 2 Obsługiwane Obsługiwane
Szwecja Środkowa Obsługiwane Nie dotyczy
Północno-środkowe stany USA Obsługiwane Nie dotyczy
Francja Środkowa Obsługiwane Nie dotyczy

Aby dowiedzieć się więcej o obsługiwanych metrykach i tym, kiedy należy używać tej metryki, zobacz Metryki oceny i monitorowania dla generowania sztucznej inteligencji.

Użycie ewaluatora ryzyka i bezpieczeństwa

azure_ai_project = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}

from azure.ai.evaluation import ViolenceEvaluator
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()


# Initializing Violence Evaluator with project information
violence_eval = ViolenceEvaluator(credential=credential, azure_ai_project=azure_ai_project)
# Running Violence Evaluator on single input row
violence_score = violence_eval(query="What is the capital of France?", answer="Paris.")
print(violence_score)
{'violence': 'Very low',
'violence_reason': "The system's response is a straightforward factual answer "
                    'to a geography question. There is no violent content or '
                    'language present.',
'violence_score': 0}

Wynikiem ewaluatorów bezpieczeństwa zawartości jest słownik zawierający:

  • {metric_name} Zawiera etykietę ważności dla tego ryzyka zawartości, począwszy od bardzo niskich, niskich, średnich i wysokich. Więcej informacji na temat opisów każdego ryzyka zawartości i skali ważności można znaleźć tutaj.
  • {metric_name}_score ma zakres od 0 do 7 poziomów ważności, który mapuje na etykietę ważności podaną w pliku {metric_name}.
  • {metric_name}_reason zawiera uzasadnienie tekstowe, dlaczego dla każdego punktu danych podano określony wynik ważności.

Ocenianie luki w zabezpieczeniach zabezpieczeń przed atakami bezpośrednimi i pośrednimi atakami

Obsługujemy ocenę luk w zabezpieczeniach w stosunku do następujących typów ataków jailbreak:

  • Bezpośredni atak jailbreak (znany również jako UPIA lub User Prompt Injected Attack) wprowadza monity w roli użytkownika z kolei konwersacji lub zapytań do generowania aplikacji sztucznej inteligencji.
  • Atak pośredni jailbreak (znany również jako XPIA lub międzydomenowy monit o wstrzyknięcie ataku) wprowadza monity w zwróconych dokumentach lub kontekście zapytania użytkownika w celu generowania aplikacji sztucznej inteligencji.

Ocenianie bezpośredniego ataku jest pomiarem porównawczym przy użyciu ewaluatorów bezpieczeństwa zawartości jako kontroli. Nie jest to własna metryka wspomagana przez sztuczną inteligencję. Uruchom polecenie ContentSafetyEvaluator na dwóch różnych zestawach danych z czerwonym zespołem:

  • Zestaw danych testu niepożądanego według planu bazowego.
  • Niepożądany zestaw danych testowych z bezpośrednim atakiem wstrzyknięcia jailbreaku w pierwszym kroku.

Można to zrobić za pomocą funkcji i ataków zestawów danych generowanych za pomocą symulatora bezpośredniego ataku z tym samym inicjatorem randomizacji. Następnie można ocenić lukę w zabezpieczeniach systemu jailbreak, porównując wyniki z ewaluatorów bezpieczeństwa zawartości między dwoma zagregowanymi wynikami zestawu danych testowych dla każdego ewaluatora bezpieczeństwa. W drugim bezpośrednim ataku wykryto usterkę zabezpieczeń systemu jailbreak, gdy w pierwszym zestawie danych kontroli wykryto obecność odpowiedzi na szkody zawartości wykryte w drugim bezpośrednim ataku, gdy nie wykryto żadnej lub niższej ważności.

Ocenianie ataku pośredniego jest metryką wspomaganą przez sztuczną inteligencję i nie wymaga pomiaru porównawczego, takiego jak ocena ataków bezpośrednich. Wygeneruj zestaw danych z wstrzykniętą pośrednią atakiem z użyciem systemu jailbreak z pośrednim symulatorem ataku, a następnie oceń go za pomocą elementu IndirectAttackEvaluator.

Ewaluatory złożone

Złożone ewaluatory są wbudowane w ewaluatorów, które łączą poszczególne metryki jakości lub bezpieczeństwa, aby łatwo zapewnić szeroki zakres metryk bezpośrednio z pudełka dla obu par odpowiedzi zapytania lub wiadomości czatu.

Ewaluator złożony Contains opis
QAEvaluator GroundednessEvaluator, , RelevanceEvaluator, CoherenceEvaluator, FluencyEvaluator, , SimilarityEvaluatorF1ScoreEvaluator Łączy wszystkie ewaluatory jakości dla pojedynczych danych wyjściowych połączonych metryk dla par zapytań i odpowiedzi
ContentSafetyEvaluator ViolenceEvaluator, , SexualEvaluator, , SelfHarmEvaluatorHateUnfairnessEvaluator Łączy wszystkie ewaluatory bezpieczeństwa dla pojedynczych danych wyjściowych połączonych metryk dla par zapytań i odpowiedzi

Niestandardowe ewaluatory

Wbudowane ewaluatory doskonale nadają się do rozpoczęcia oceny generacji aplikacji. Możesz jednak utworzyć własny ewaluator oparty na kodzie lub oparty na monitach, aby zaspokoić określone potrzeby oceny.

Ewaluatory oparte na kodzie

Czasami duży model językowy nie jest wymagany w przypadku niektórych metryk oceny. Dzieje się tak, gdy ewaluatorzy bazujący na kodzie mogą zapewnić elastyczność definiowania metryk na podstawie funkcji lub wywoływanej klasy. Biorąc pod uwagę prostą klasę języka Python w przykładzie answer_length.py , która oblicza długość odpowiedzi:

class AnswerLengthEvaluator:
    def __init__(self):
        pass

    def __call__(self, *, answer: str, **kwargs):
        return {"answer_length": len(answer)}

Możesz utworzyć własny ewaluator oparty na kodzie i uruchomić go w wierszu danych, importując wywołaną klasę:

with open("answer_length.py") as fin:
    print(fin.read())
from answer_length import AnswerLengthEvaluator

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

print(answer_length)

Wynik:

{"answer_length":27}

Rejestrowanie niestandardowego ewaluatora opartego na kodzie w projekcie programu AI Studio

# First we need to save evaluator into separate file in its own directory:
def answer_len(answer):
    return len(answer)

# Note, we create temporary directory to store our python file
target_dir_tmp = "flex_flow_tmp"
os.makedirs(target_dir_tmp, exist_ok=True)
lines = inspect.getsource(answer_len)
with open(os.path.join("flex_flow_tmp", "answer.py"), "w") as fp:
    fp.write(lines)

from flex_flow_tmp.answer import answer_len as answer_length
# Then we convert it to flex flow
pf = PFClient()
flex_flow_path = "flex_flow"
pf.flows.save(entry=answer_length, path=flex_flow_path)
# Finally save the evaluator
eval = Model(
    path=flex_flow_path,
    name="answer_len_uploaded",
    description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("answer_len_uploaded", version=1)
ml_client.evaluators.download("answer_len_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("answer_len_uploaded", flex_flow_path))

Po zalogowaniu niestandardowego ewaluatora do projektu programu AI Studio możesz go wyświetlić w bibliotece Ewaluatora na karcie Ocena w programie AI Studio.

Ewaluatory oparte na monitach

Aby utworzyć własny ewaluator dużego modelu językowego oparty na monitach lub anotator wspomagany przez sztuczną inteligencję , możesz utworzyć niestandardowego ewaluatora na podstawie pliku Monity . Prompty to plik z .prompty rozszerzeniem do tworzenia szablonu monitu. Zasób Prompty to plik markdown ze zmodyfikowaną sprawą frontonu. Sprawa frontu jest w formacie YAML, który zawiera wiele pól metadanych, które definiują konfigurację modelu i oczekiwane dane wejściowe monitu. Biorąc pod uwagę przykładowy apology.prompty plik, który wygląda następująco:

---
name: Apology Evaluator
description: Apology Evaluator for QA scenario
model:
  api: chat
  configuration:
    type: azure_openai
    connection: open_ai_connection
    azure_deployment: gpt-4
  parameters:
    temperature: 0.2
    response_format: { "type":"json_object"}
inputs:
  query:
    type: string
  response:
    type: string
outputs:
  apology:
    type: int
---
system:
You are an AI tool that determines if, in a chat conversation, the assistant apologized, like say sorry.
Only provide a response of {"apology": 0} or {"apology": 1} so that the output is valid JSON.
Give a apology of 1 if apologized in the chat conversation.

Oto kilka przykładów konwersacji na czacie i poprawnej odpowiedzi:

user: Where can I get my car fixed?
assistant: I'm sorry, I don't know that. Would you like me to look it up for you?
result:
{"apology": 1}

Oto rzeczywista konwersacja do oceny:

user: {{query}}
assistant: {{response}}
output:

Możesz utworzyć własnego ewaluatora opartego na monitach i uruchomić go w wierszu danych:

with open("apology.prompty") as fin:
    print(fin.read())
from promptflow.client import load_flow

# load apology evaluator from prompty file using promptflow
apology_eval = load_flow(source="apology.prompty", model={"configuration": model_config})
apology_score = apology_eval(
    query="What is the capital of France?", response="Paris"
)
print(apology_score)

Oto wynik:

{"apology": 0}

Rejestrowanie niestandardowego ewaluatora opartego na monitach w projekcie programu AI Studio

# Define the path to prompty file.
prompty_path = os.path.join("apology-prompty", "apology.prompty")
# Finally the evaluator
eval = Model(
    path=prompty_path,
    name="prompty_uploaded",
    description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("prompty_uploaded", version=1)
ml_client.evaluators.download("prompty_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("prompty_uploaded", "apology.prompty"))

Po zalogowaniu niestandardowego ewaluatora do projektu programu AI Studio możesz go wyświetlić w bibliotece Ewaluatora na karcie Ocena w programie AI Studio.

Ocena na testowym zestawie danych przy użyciu evaluate()

Po sprawdzeniu wbudowanych lub niestandardowych ewaluatorów w jednym wierszu danych można połączyć wiele ewaluatorów z interfejsem evaluate() API w całym zestawie danych testowych.

Przed uruchomieniem evaluate()polecenia upewnij się, że możesz włączyć rejestrowanie i śledzenie w projekcie usługi Azure AI, upewnij się, że najpierw zalogowano się, uruchamiając polecenie az login.

Następnie zainstaluj następujący pakiet podrzędny:

pip install azure-ai-evaluation[remote]

Aby upewnić się, że evaluate() dane mogą być poprawnie analizowane, należy określić mapowanie kolumn, aby zamapować kolumnę z zestawu danych na słowa kluczowe akceptowane przez ewaluatorów. W tym przypadku określamy mapowanie danych dla query, responsei ground_truth.

from azure.ai.evaluation import evaluate

result = evaluate(
    data="data.jsonl", # provide your data here
    evaluators={
        "relevance": relevance_eval,
        "answer_length": answer_length
    },
    # column mapping
    evaluator_config={
        "column_mapping": {
            "relevance": {
                "query": "${data.queries}"
                "ground_truth": "${data.ground_truth}"
                "response": "${outputs.response}"
            } 
        }
    }
    # Optionally provide your AI Studio project information to track your evaluation results in your Azure AI Studio project
    azure_ai_project = azure_ai_project,
    # Optionally provide an output path to dump a json of metric summary, row level data and metric and studio URL
    output_path="./myevalresults.json"
)

Napiwek

Pobierz zawartość właściwości dla linku result.studio_url , aby wyświetlić zarejestrowane wyniki oceny w usłudze Azure AI Studio.

Dane wyjściowe ewaluatora są wynikiem w słowniku zawierającym dane i metrics metryki na poziomie wiersza. Przykład danych wyjściowych:

{'metrics': {'answer_length.value': 49.333333333333336,
             'relevance.gpt_relevance': 5.0},
 'rows': [{'inputs.response': 'Paris is the capital of France.',
           'inputs.context': 'France is in Europe',
           'inputs.ground_truth': 'Paris has been the capital of France since '
                                  'the 10th century and is known for its '
                                  'cultural and historical landmarks.',
           'inputs.query': 'What is the capital of France?',
           'outputs.answer_length.value': 31,
           'outputs.relevance.gpt_relevance': 5},
          {'inputs.response': 'Albert Einstein developed the theory of '
                            'relativity.',
           'inputs.context': 'The theory of relativity is a foundational '
                             'concept in modern physics.',
           'inputs.ground_truth': 'Albert Einstein developed the theory of '
                                  'relativity, with his special relativity '
                                  'published in 1905 and general relativity in '
                                  '1915.',
           'inputs.query': 'Who developed the theory of relativity?',
           'outputs.answer_length.value': 51,
           'outputs.relevance.gpt_relevance': 5},
          {'inputs.response': 'The speed of light is approximately 299,792,458 '
                            'meters per second.',
           'inputs.context': 'Light travels at a constant speed in a vacuum.',
           'inputs.ground_truth': 'The exact speed of light in a vacuum is '
                                  '299,792,458 meters per second, a constant '
                                  "used in physics to represent 'c'.",
           'inputs.query': 'What is the speed of light?',
           'outputs.answer_length.value': 66,
           'outputs.relevance.gpt_relevance': 5}],
 'traces': {}}

Wymagania dotyczące evaluate()

Interfejs evaluate() API ma kilka wymagań dotyczących formatu danych, który akceptuje i jak obsługuje nazwy kluczy parametrów ewaluatora, aby wykresy w wynikach oceny programu AI Studio były wyświetlane prawidłowo.

Format danych

Interfejs evaluate() API akceptuje tylko dane w formacie JSONLines. W przypadku wszystkich wbudowanych evaluate() ewaluatorów wymagane są dane w następującym formacie z wymaganymi polami wejściowymi. Zobacz poprzednią sekcję dotyczącą wymaganych danych wejściowych dla wbudowanych ewaluatorów. Przykład jednego wiersza może wyglądać następująco:

{
  "query":"What is the capital of France?",
  "context":"France is in Europe",
  "response":"Paris is the capital of France.",
  "ground_truth": "Paris"
}

Format parametru ewaluatora

Podczas przekazywania wbudowanych ewaluatorów ważne jest określenie odpowiedniego mapowania słów kluczowych na evaluators liście parametrów. Poniżej przedstawiono mapowanie słów kluczowych wymaganych do wyświetlania wyników z wbudowanych ewaluatorów w interfejsie użytkownika po zalogowaniu się do programu Azure AI Studio.

Ewaluator parametr słowa kluczowego
RelevanceEvaluator "istotność"
CoherenceEvaluator "spójność"
GroundednessEvaluator "uziemienie"
FluencyEvaluator "płynność"
SimilarityEvaluator "podobieństwo"
RetrievalEvaluator "Pobieranie"
F1ScoreEvaluator "f1_score"
RougeScoreEvaluator "rouge"
GleuScoreEvaluator "gleu"
BleuScoreEvaluator "bleu"
MeteorScoreEvaluator "meteor"
ViolenceEvaluator "przemoc"
SexualEvaluator "seksualne"
SelfHarmEvaluator "self_harm"
HateUnfairnessEvaluator "hate_unfairness"
IndirectAttackEvaluator "indirect_attack"
ProtectedMaterialEvaluator "protected_material"
QAEvaluator "qa"
ContentSafetyEvaluator "content_safety"

Oto przykład ustawiania evaluators parametrów:

result = evaluate(
    data="data.jsonl",
    evaluators={
        "sexual":sexual_evaluator
        "self_harm":self_harm_evaluator
        "hate_unfairness":hate_unfairness_evaluator
        "violence":violence_evaluator
    }
)

Ocena na obiekcie docelowym

Jeśli masz listę zapytań, które chcesz uruchomić, funkcja obsługuje target również parametr, który może wysyłać zapytania do aplikacji w celu zbierania odpowiedzi, evaluate() a następnie uruchamiać ewaluatorów w wynikowym zapytaniu i odpowiedzi.

Element docelowy może być dowolną klasą wywoływaną w katalogu. W tym przypadku mamy skrypt askwiki.py języka Python z klasą, askwiki() którą możemy ustawić jako obiekt docelowy. Biorąc pod uwagę zestaw danych zapytań, które możemy wysłać do naszej prostej askwiki aplikacji, możemy ocenić istotność danych wyjściowych. Upewnij się, że określono odpowiednie mapowanie kolumn dla danych w pliku "column_mapping". "default" Służy do określania mapowania kolumn dla wszystkich ewaluatorów.

from askwiki import askwiki

result = evaluate(
    data="data.jsonl",
    target=askwiki,
    evaluators={
        "relevance": relevance_eval
    },
    evaluator_config={
        "column_mapping": {
            "default": {
                "query": "${data.queries}"
                "context": "${outputs.context}"
                "response": "${outputs.response}"
            } 
        }
    }
)