Condividi tramite


Valutare con Azure AI Evaluation SDK

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Nota

Valutare con l'SDK del flusso di richiesta è stato ritirato e sostituito con Azure AI Evaluation SDK.

Per valutare in modo accurato le prestazioni dell'applicazione di intelligenza artificiale generativa quando applicata a un set di dati considerevole, è possibile eseguire la valutazione nell'ambiente di sviluppo con Azure AI Evaluation SDK. Dato un set di dati di test o una destinazione, le generazioni di applicazioni di intelligenza artificiale generativa vengono misurate in modo quantitativo con metriche basate su matematica e valutatori di qualità e sicurezza assistiti dall'intelligenza artificiale. I valutatori predefiniti o personalizzati possono fornire informazioni dettagliate complete sulle funzionalità e sulle limitazioni dell'applicazione.

Questo articolo illustra come eseguire valutatori in una singola riga di dati, un set di dati di test più grande in una destinazione dell'applicazione con valutatori predefiniti usando Azure AI Evaluation SDK e quindi tenere traccia dei risultati e dei log di valutazione in Studio AI della piattaforma Azure.

Introduzione

Installare prima di tutto il pacchetto analizzatori da Azure AI Evaluation SDK:

pip install azure-ai-evaluation

Valutatori predefiniti

I valutatori predefiniti supportano gli scenari di applicazione seguenti:

  • Query e risposta: questo scenario è progettato per le applicazioni che comportano l'invio di query e la generazione di risposte, in genere a turno singolo.
  • Generazione aumentata di recupero: questo scenario è adatto per le applicazioni in cui il modello si impegna per la generazione usando un approccio di recupero con estensione aumentata per estrarre informazioni dai documenti forniti e generare risposte dettagliate, in genere a più turni.

Per informazioni più approfondite su ogni definizione di valutatore e sulla modalità di calcolo, vedere Metriche di valutazione e monitoraggio per IA generativa.

Categoria Classe valutatore
Prestazioni e qualità (basata su IA) GroundednessEvaluator, RelevanceEvaluator, CoherenceEvaluator, FluencyEvaluator, SimilarityEvaluatorRetrievalEvaluator
Prestazioni e qualità (NLP) F1ScoreEvaluator, RougeScoreEvaluator, GleuScoreEvaluator, BleuScoreEvaluatorMeteorScoreEvaluator
Rischio e sicurezza (basata su IA) ViolenceEvaluator, SexualEvaluator, SelfHarmEvaluator, HateUnfairnessEvaluator, IndirectAttackEvaluatorProtectedMaterialEvaluator
Composita QAEvaluator, ContentSafetyEvaluator

Le metriche di qualità e sicurezza predefinite accettano coppie di domande e risposte, insieme a informazioni aggiuntive per valutatori specifici.

Suggerimento

Per altre informazioni su input e output, vedere la documentazione di riferimento su Azure Python.

Requisiti dei dati per gli valutatori predefiniti

Gli analizzatori predefiniti possono accettare coppie di query e respons o un elenco di conversazioni:

  • Coppie di query e risposta in .jsonl formato con gli input necessari.
  • Elenco di conversazioni in .jsonl formato nella sezione seguente.
Evaluator query response context ground_truth conversation
GroundednessEvaluator N/D Obbligatorio: stringa Obbligatorio: stringa N/D Supportata
RelevanceEvaluator Obbligatorio: stringa Obbligatorio: stringa Obbligatorio: stringa N/D Supportata
CoherenceEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
FluencyEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
SimilarityEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
RetrievalEvaluator N/D N/D N/D N/D Supportata solo la conversazione
F1ScoreEvaluator N/D Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
RougeScoreEvaluator N/D Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
GleuScoreEvaluator N/D Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
BleuScoreEvaluator N/D Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
MeteorScoreEvaluator N/D Obbligatorio: stringa N/D Obbligatorio: stringa Non supportato
ViolenceEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
SexualEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
SelfHarmEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
HateUnfairnessEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
IndirectAttackEvaluator Obbligatorio: stringa Obbligatorio: stringa Obbligatorio: stringa N/D Supportata
ProtectedMaterialEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
QAEvaluator Obbligatorio: stringa Obbligatorio: stringa Obbligatorio: stringa N/D Non supportato
ContentSafetyEvaluator Obbligatorio: stringa Obbligatorio: stringa N/D N/D Supportata
  • Query: la query inviata all'applicazione di intelligenza artificiale generativa
  • Risposta: risposta alla query generata dall'applicazione di intelligenza artificiale generativa
  • Contesto: origine in base alla quale viene generata la risposta (ovvero documenti di base)
  • Verità di base: risposta alla domanda generata dall'utente o dall'essere umano come risposta vera
  • Conversazione: un elenco di messaggi di utenti e assistenti turni. Per altre informazioni, vedere la sezione successiva.

Valutazione delle conversazioni a più turni

Per gli analizzatori che supportano le conversazioni come input, è sufficiente passare la conversazione direttamente nell'analizzatore:

relevance_score = relevance_eval(conversation=conversation)

Una conversazione è un dizionario Python di un elenco di messaggi (che includono contenuto, ruolo e facoltativamente contesto). Di seguito è riportato un esempio di conversazione a due turni.

{"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
        }
        ]
    }
}

Le conversazioni vengono valutate a turno e i risultati vengono aggregati in tutti i turni per un punteggio di conversazione.

Valutatori di prestazioni e qualità

Quando si usano metriche di qualità e prestazioni assistite dall'intelligenza artificiale, è necessario specificare un modello GPT per il processo di calcolo.

Impostazione

Scegliere una distribuzione con il modello GPT-3.5, GPT-4, GPT-4o o GPT-4-mini per i calcoli e impostarlo come .model_config Sono supportati sia lo schema di configurazione del modello di Azure OpenAI che quello di OpenAI. È consigliabile usare modelli GPT che non hanno il suffisso (preview) per ottenere le migliori prestazioni e risposte analizzabili con gli analizzatori.

Utilizzo dell'analizzatore di prestazioni e qualità

È possibile eseguire gli analizzatori predefiniti importando la classe analizzatore desiderata. Assicurarsi di impostare le variabili di ambiente.

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)

Di seguito è riportato un esempio del risultato:

{'relevance.gpt_relevance': 5.0}

Valutatori di rischi e sicurezza

Quando si usano metriche di rischio e sicurezza assistita dall'intelligenza artificiale, non è necessario un modello GPT. Invece di model_config, specificare le informazioni di azure_ai_project. In questo modo si accede al servizio back-end di valutazione della sicurezza di Azure AI Studio, che effettua il provisioning di un modello GPT specifico per la valutazione dei danni che può generare punteggi di gravità del rischio di contenuto e ragionamento per abilitare gli analizzatori di sicurezza.

Supporto di area

Attualmente le metriche di rischio e sicurezza assistita dall'intelligenza artificiale sono disponibili solo nelle aree seguenti:

Paese Odio e ingiustità, sessuale, violento, autolesionismo, XPIA Materiale protetto
Regno Unito meridionale Sarà deprecato 12/1/24 N/D
Stati Uniti orientali 2 Supportata Supportata
Svezia centrale Supportato N/D
Stati Uniti centro-settentrionali Supportato N/D
Francia centrale Supportato N/D

Per altre informazioni sulle metriche supportate e su quando usare la metrica, vedere Valutazione e monitoraggio delle metriche per l'intelligenza artificiale generativa.

Uso dell'analizzatore di rischi e sicurezza

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}

Il risultato dei valutatori di Sicurezza dei contenuti è un dizionario contenente:

  • {metric_name} fornisce un'etichetta di gravità per il rischio di contenuto che può essere Molto basso, Basso, Medio e Alto. Per altre informazioni sulle descrizioni di ogni rischio di contenuto e scala di gravità, vedere qui.
  • {metric_name}_score ha un intervallo compreso tra 0 e 7 per il livello di gravità che esegue il mapping a un'etichetta di gravità specificata in {metric_name}.
  • {metric_name}_reason ha un motivo di testo per cui è stato assegnato un determinato punteggio di gravità per ogni punto dati.

Valutazione della vulnerabilità ad attacco jailbreak diretto e indiretto

Microsoft supporta la valutazione della vulnerabilità nei confronti dei seguenti tipi di attacchi jailbreak:

  • Attacco jailbreak diretto (noto anche come UPIA o Attacco con inserimento di richieste dell'utente) inserisce richieste nel turno di conversazioni del ruolo utente o domande per le applicazioni di IA generativa.
  • Attacco jailbreak indiretto (noto anche come XPIA o attacco tra domini con inserimento di richieste) inserisce richieste nei documenti restituiti o nel contesto della domande dell'utente per le applicazioni di IA generativa.

La valutazione degli attacchi diretti è una misurazione comparativa che usa gli analizzatori di Sicurezza dei contenuti come controllo. Non è una metrica autonoma basata su intelligenza artificiale. Eseguire ContentSafetyEvaluator su due set di dati diversi con Red team:

  • Set di dati di test antagonisti di base.
  • Set di dati di test antagonisti con inserimenti di attacchi jailbreak diretti nel primo turno.

È possibile eseguire questa operazione con le funzionalità e i set di dati di attacco generati con il simulatore di attacchi diretti con il medesimo valore di inizializzazione della randomizzazione. È quindi possibile valutare la vulnerabilità di jailbreak confrontando i risultati dei valutatori della sicurezza dei contenuti tra i punteggi aggregati dei due set di dati di test per ogni valutatore di sicurezza. Un difetto dell'attacco jailbreak diretto viene rilevato quando si individua la presenza di risposta a contenuti dannosi nel secondo set di dati soggetto ad attacco diretto e non era stata rilevata alcuna gravità nel primo set di dati di controllo, oppure la gravità rilevata era ridotta.

La valutazione degli attacchi indiretti è una metrica basata su intelligenza artificiale e non richiede una misurazione comparativa come la valutazione degli attacchi diretti. Generare un set di dati di attacco jailbreak indiretto con il simulatore di attacco indiretto quindi valutare con il IndirectAttackEvaluator.

Valutatori compositi

I valutatori compositi sono strumenti di valutazione che combinano le singole metriche di qualità o sicurezza per offrire facilmente un'ampia gamma di metriche sin dall'inizio per coppie di domande e risposte o messaggi di chat.

Valutatori compositi Contiene Descrizione
QAEvaluator GroundednessEvaluator, RelevanceEvaluator, CoherenceEvaluator, FluencyEvaluator, SimilarityEvaluatorF1ScoreEvaluator Combina tutti i valutatori di qualità per un singolo output di metriche combinate per coppie di domande e risposte
ContentSafetyEvaluator ViolenceEvaluator, SexualEvaluator, SelfHarmEvaluatorHateUnfairnessEvaluator Combina tutti i valutatori di sicurezza per un singolo output di metriche combinate per coppie di domande e risposte

Valutatori personalizzati

Gli analizzatori predefiniti sono ideali per iniziare a valutare le generazioni dell'applicazione. Tuttavia, è possibile creare un valutatore basato su codice o basato su richiesta per soddisfare le esigenze di valutazione specifiche.

Valutatori basati su codice

In alcuni casi non è necessario un modello linguistico di grandi dimensioni per determinate metriche di valutazione. Questo caso si ha quando i valutatori basati su codice possono offrire la flessibilità necessaria per definire le metriche in base alle funzioni o alla classe chiamabile. Data una semplice classe Python in un esempio answer_length.py che calcola la lunghezza di una risposta:

class AnswerLengthEvaluator:
    def __init__(self):
        pass

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

È possibile creare un valutatore basato su codice ed eseguirlo in una riga di dati importando una classe chiamabile:

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)

Ecco il risultato:

{"answer_length":27}

Registrare l'analizzatore personalizzato basato su codice nel progetto Studio AI

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

Dopo aver effettuato la registrazione dell'analizzatore personalizzato nel progetto di Studio AI, è possibile visualizzarlo nella libreria dell'analizzatore nella scheda Valutazione in AI Studio.

Valutatori basati su richiesta

Per creare un valutatore di modelli linguistici di grandi dimensioni (LLM) basato su richiesta o un annotatore basato su IA, è possibile creare un valutatore personalizzato basato su un file Prompty. Prompty è un file con estensione .prompty per lo sviluppo di un modello di richiesta. L'asset Prompty è un file markdown con una materia anteriore modificata. La materia principale è in formato YAML, che contiene molti campi di metadati che definiscono la configurazione del modello e gli input previsti del Prompty. Dato un file di esempio apology.prompty simile al seguente:

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

Ecco alcuni esempi di conversazioni di chat e la risposta corretta:

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}

Ecco la conversazione effettiva a cui assegnare il punteggio:

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

È possibile creare un analizzatore basato su Prompty ed eseguirlo in una riga di dati:

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)

Il risultato è il seguente:

{"apology": 0}

Registrare l'analizzatore personalizzato basato su prompt nel progetto Studio AI

# 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"))

Dopo aver effettuato la registrazione dell'analizzatore personalizzato nel progetto di Studio AI, è possibile visualizzarlo nella libreria dell'analizzatore nella scheda Valutazione in Studio AI.

Eseguire una valutazione sul set di dati di test tramite evaluate()

Dopo aver controllato i valutatori predefiniti o personalizzati in una singola riga di dati, è possibile combinare più valutatori con l'API evaluate() in un intero set di dati di test.

Prima di eseguire evaluate(), per assicurarsi di poter abilitare la registrazione e la traccia nel progetto di Intelligenza artificiale di Azure, assicurarsi di essere prima connessi eseguendo az login.

Installare quindi il sotto-pacchetto seguente:

pip install azure-ai-evaluation[remote]

Per garantire che evaluate() possa analizzare correttamente i dati, è necessario specificare il mapping delle colonne per eseguirlo dal set di dati alle parole chiave accettate dai valutatori. In questo caso, si specifica il mapping dei dati per query, responsee 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"
)

Suggerimento

Ottenere il contenuto della proprietà result.studio_url per un collegamento per visualizzare i risultati della valutazione registrata in Studio AI della piattaforma Azure.

Il valutatore restituisce risultati in un dizionario che contiene valori metrics aggregati e dati e metriche a livello di riga. Esempio di output:

{'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': {}}

Requisiti per evaluate()

L'API evaluate() richiede alcuni requisiti per il formato dati accettato e il modo in cui gestisce i nomi delle chiavi dei parametri dell'analizzatore in modo che i grafici nei risultati della valutazione di AI Studio vengano visualizzati correttamente.

Formato dati

L'API evaluate() accetta solo i dati nel formato JSONLines. Per tutti i valutatori predefiniti, evaluate() richiede dati nel formato seguente con i campi di input obbligatori. Vedere la sezione precedente sull'input dei dati richiesto per i valutatori predefiniti. L'esempio di una riga può essere simile al seguente:

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

Formato dei parametri dell'analizzatore

Quando si passa agli analizzatori predefiniti, è importante specificare il mapping delle parole chiave corretto nell'elenco dei parametri evaluators. Di seguito è riportato il mapping delle parole chiave richiesto per i risultati degli analizzatori predefiniti da visualizzare nell'interfaccia utente quando si è connessi a Studio IA di Azure.

Evaluator parametro parola chiave
RelevanceEvaluator "relevance"
CoherenceEvaluator "coherence"
GroundednessEvaluator "groundedness"
FluencyEvaluator "fluency"
SimilarityEvaluator "similarity"
RetrievalEvaluator "recupero"
F1ScoreEvaluator "f1_score"
RougeScoreEvaluator "rouge"
GleuScoreEvaluator "gleu"
BleuScoreEvaluator "bleu"
MeteorScoreEvaluator "meteor"
ViolenceEvaluator "violence"
SexualEvaluator "sexual"
SelfHarmEvaluator "self_harm"
HateUnfairnessEvaluator "hate_unfairness"
IndirectAttackEvaluator "indirect_attack"
ProtectedMaterialEvaluator "protected_material"
QAEvaluator "qa"
ContentSafetyEvaluator "content_safety"

Ecco un esempio dell'impostazione dei parametri evaluators:

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

Valutare in base a una destinazione

Se si ha un elenco di domande da eseguire e da valutare, evaluate() supporta anche un parametro target, che può inviare domande a un'applicazione per raccogliere risposte ed eseguire i valutatori sulla domanda e sulla risposta risultanti.

Una destinazione può essere qualsiasi classe chiamabile nella directory. In questo caso è disponibile uno script askwiki.py Python con una classe askwiki() chiamabile che è possibile impostare come destinazione. Dato un set di dati di query che è possibile inviare all'app askwiki semplice, è possibile valutare la pertinenza degli output. Assicurarsi di specificare il mapping delle colonne appropriato per i dati in "column_mapping". È possibile usare "default" per specificare il mapping delle colonne per tutti gli analizzatori.

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