Giudici di intelligenza artificiale incorporati
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo illustra i dettagli di ognuno dei giudici di intelligenza artificiale integrati in Mosaic AI Agent Evaluation, inclusi gli input necessari e le metriche di output.
Vedere anche:
- Come la valutazione degli agenti valuta la qualità, i costi e la latenza
- Personalizzare i giudici di intelligenza artificiale
- Riferimento SDK di Python per funzioni chiamabili
Panoramica dei giudici di intelligenza artificiale
Nota
Non tutti i giudici richiedono etichette di verità fondamentale. I giudici che non richiedono etichette sono utili quando si dispone solo di un set di richieste per valutare l'agente.
Nome del giudice | Aspetto di qualità valutato dal giudice | Input necessari | Richiede la verità di base |
---|---|---|---|
global_guideline_adherence |
La risposta generata è conforme alle linee guida globali? |
request , response , global_guidelines (dal evaluator_config ) |
No, ma richiede global_guidelines |
guideline_adherence |
La risposta generata è conforme alle linee guida fornite per ogni domanda? |
request , response , guidelines |
Sì |
correctness |
La risposta generata è corretta (rispetto alla verità di riferimento)? |
response , expected_facts[] o expected_response |
Sì |
relevance_to_query |
L'indirizzo di risposta (è rilevante per) la richiesta dell'utente? |
response , request |
No |
context_sufficiency |
Il recuperatore ha trovato documenti con informazioni sufficienti per produrre la risposta prevista? |
retrieved_context , expected_response |
Sì |
safety |
c'è contenuto dannoso o tossico nella risposta? | response |
No |
chunk_relevance |
Il retriever ha trovato blocchi utili (rilevanti) per rispondere alla richiesta dell'utente? Nota: Questo giudizio viene applicato separatamente a ciascun blocco recuperato, producendo un punteggio razionale del tipo & per ogni blocco. Questi punteggi vengono aggregati in un punteggio chunk_relevance/precision per ogni riga che rappresenta il % di blocchi rilevanti. |
retrieved_context , request |
No |
groundedness |
La risposta generata è basata sul contesto recuperato (non è frutto di allucinazione)? |
response , trace[retrieved_context] |
No |
document_recall |
Quanti dei documenti rilevanti noti ha trovato lo strumento di recupero? |
retrieved_context , expected_retrieved_context[].doc_uri |
Sì |
Nota
Per le conversazioni a più turni, i giudici dell'intelligenza artificiale valutano solo l'ultima parte della conversazione.
Output del giudice di intelligenza artificiale
Ogni giudice usato nella valutazione restituisce le colonne seguenti:
Campo dati | Tipo | Descrizione |
---|---|---|
response/llm_judged/{judge_name}/rating |
string |
yes se il giudice passa, no se il giudice fallisce. |
response/llm_judged/{judge_name}/rationale |
string |
Ragionamento scritto di LLM per yes o no . |
response/llm_judged/{judge_name}/error_message |
string |
Se si è verificato un errore durante il calcolo di questa valutazione, i dettagli dell'errore sono disponibili qui. Se non viene visualizzato alcun errore, questo valore è NULL. |
Ogni giudice produrrà anche una metrica aggregata per l'intero percorso.
Nome metrica | Tipo | Descrizione |
---|---|---|
response/llm_judged/{judge_name}/rating/average |
float, [0, 1] |
Percentuale di tutte le valutazioni giudicate yes . |
Conformità alle linee guida
Definizione: la risposta è conforme alle linee guida fornite?
Richiede chesia veritiero: Non è necessario quando si utilizza global_guidelines
. Sì quando si usa per singola riga guidelines
.
La conformità alle linee guida valuta se la risposta dell'agente segue vincoli specifici o istruzioni fornite nelle linee guida.
Le linee guida possono essere definite in uno dei modi seguenti:
- per riga: la risposta di una richiesta specifica deve rispettare le linee guida definite nella riga di valutazione.
- globalmente: tutte le risposte per qualsiasi richiesta devono rispettare le linee guida globali.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
. - per riga
guidelines
oglobal_guidelines
definiti nella configurazione.
Esempi
Usare la conformità alle linee guida per ogni riga da un set di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"guidelines": ["The response must be in English", "The response must be concise"]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["guideline_adherence"]
}
}
)
Utilizzare l'adesione alle linee guida globali da un insieme di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["guideline_adherence"],
"global_guidelines": ["The response must be in English", "The response must be concise"]
}
}
)
Usare la conformità alle linee guida con l'SDK del giudice chiamabile :
from databricks.agents.evals import judges
assessment = judges.guideline_adherence(
request="What is the capital of France?",
response="The capital of France is Paris.",
guidelines=["The response must be in English", "The response must be concise"]
)
print(assessment)
Cosa fare quando la risposta non rispetta le linee guida?
Quando la risposta viola le linee guida:
- Identificare le linee guida violate e analizzare il motivo per cui l'agente non è riuscito a rispettarlo.
- Modificare la richiesta per evidenziare la conformità a linee guida specifiche o ripetere il training del modello con altri esempi allineati al comportamento desiderato.
- Per le linee guida globali, assicurarsi che siano specificate correttamente nella configurazione dell'analizzatore.
Correttezza
definizione: l'agente ha risposto con una risposta effettivamente accurata?
richiede la verità di base: Sì, expected_facts[]
o expected_response
.
La correttezza confronta la risposta effettiva dell'agente a un'etichetta di veridicità ed è un buon modo per rilevare errori concreti.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
. - expected_facts o expected_response
Importante
Databricks consiglia di usare expected_facts[]
anziché expected_response
.
expected_facts[]
rappresentano il set minimo di fatti necessari in una risposta corretta e sono più facili da gestire per gli esperti di materia.
Se è necessario usare expected_response
, deve includere solo il set minimo di fatti necessari per una risposta corretta. Se copi una risposta da un'altra fonte, modifica la risposta per rimuovere qualsiasi testo non necessario affinché una risposta venga considerata corretta.
Includendo solo le informazioni necessarie e lasciando le informazioni non strettamente necessarie nella risposta, consente alla valutazione dell'agente di fornire un segnale più affidabile sulla qualità dell'output.
Esempi
Usare la correttezza di un set di valutazione:
import mlflow
eval_set = [{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"expected_facts": [
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["correctness"]
}
}
)
Usare la correttezza con l'SDK del giudice chiamabile :
from databricks.agents.evals import judges
assessment = judges.correctness(
request="What is the difference between reduceByKey and groupByKey in Spark?",
response="reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
expected_facts=[
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
]
)
print(assessment)
Cosa fare quando una risposta non è corretta?
Quando un agente risponde con una risposta effettivamente imprecisa, è necessario:
- Comprendere se un contesto recuperato dall'agente è irrilevante o innacurato. Per le applicazioni RAG, puoi utilizzare il giudice di sufficienza del contesto per determinare se il contesto è sufficiente a generare il
expected_facts
o ilexpected_response
. - Se è presente un contesto sufficiente, modificare il prompt per includere le informazioni pertinenti.
Pertinenza alla query
definizione: la risposta è pertinente alla richiesta di input?
"richiede la verifica della verità di base: No."
La pertinenza garantisce che la risposta dell'agente indirizzi direttamente l'input dell'utente senza deviare in argomenti non correlati.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
.
Esempi
Utilizzare la rilevanza di un insieme di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris."
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["relevance_to_query"]
}
}
)
Usare la pertinenza con 'SDK del giudice chiamabile:
from databricks.agents.evals import judges
assessment = judges.relevance_to_query(
request="What is the capital of France?",
response="The capital of France is Paris."
)
print(assessment)
Cosa fare quando una risposta non è rilevante?
Quando l'agente fornisce una risposta irrilevante, prendere in considerazione i passaggi seguenti:
- Valutare la comprensione della richiesta del modello e modificarne il retriever, i dati di addestramento o le istruzioni del prompt di conseguenza.
Sufficienza del contesto
Definizione: i documenti recuperati sono sufficienti per produrre la risposta prevista?
richiede la verità di base: Sì, expected_facts
o expected_response
.
La sufficienza del contesto valuta se i documenti recuperati forniscono tutte le informazioni necessarie per generare la risposta prevista.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
. -
retrieved_context[].content
se non è stato specificato il parametromodel
permlflow.evaluate()
.
Esempi
Usare la sufficienza del contesto da un set di valutazione:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"retrieved_context": [
{"content": "Paris is the capital city of France."}
],
"expected_facts": [
"Paris"
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["context_sufficiency"]
}
}
)
Usa la sufficienza contestuale con l'SDK del giudice chiamabile :
from databricks.agents.evals import judges
assessment = judges.context_sufficiency(
request="What is the capital of France?",
retrieved_context=[
{"content": "Paris is the capital city of France."}
]
)
print(assessment)
Cosa fare quando il contesto non è sufficiente?
Quando il contesto non è sufficiente:
- Migliorare il meccanismo di recupero per assicurarsi che siano inclusi tutti i documenti necessari.
- Modificare il prompt del modello per fare riferimento in modo esplicito a informazioni mancanti o definire la priorità del contesto pertinente.
Sicurezza
Definizione: la risposta evita contenuto dannoso o tossico?
"richiede la verifica della verità di base: No."
La sicurezza garantisce che le risposte dell'agente non contengano contenuto dannoso, offensivo o tossico.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
.
Esempi
Applicare le misure di sicurezza da un set di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris."
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["safety"]
}
}
)
Adottare misure di sicurezza con l'SDK giudice chiamabile :
from databricks.agents.evals import judges
assessment = judges.safety(
request="What is the capital of France?",
response="The capital of France is Paris."
)
print(assessment)
Cosa fare quando la risposta non è sicura?
Quando la risposta include contenuto dannoso:
- Analizzare la richiesta per identificare se potrebbe causare inavvertitamente risposte non sicure. Modificare l'input, se necessario.
- Perfezionare il modello o richiedere in modo esplicito di evitare di generare contenuto dannoso o tossico.
- Usare meccanismi di sicurezza aggiuntivi, ad esempio filtri di contenuto, per intercettare le risposte non sicure prima di raggiungere l'utente.
Radicamento
Definizione: la risposta è effettivamente coerente con il contesto recuperato?
"richiede la verifica della verità di base: No."
La correttezza determina se la risposta dell'agente è allineata alle informazioni fornite nel contesto ottenuto.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
response
se non è stato specificato il parametromodel
permlflow.evaluate()
. -
retrieved_context[].content
se l'argomentomodel
non viene utilizzato nella chiamata amlflow.evaluate()
.
Esempi
Usare la solidità di un set di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"retrieved_context": [
{"content": "Paris is the capital city of France."}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["groundedness"]
}
}
)
Usare il metodo di stabilità con l'SDK per il giudice callable :
from databricks.agents.evals import judges
assessment = judges.groundedness(
request="What is the capital of France?",
response="The capital of France is Paris.",
retrieved_context=[
{"content": "Paris is the capital city of France."}
]
)
print(assessment)
Cosa fare quando la risposta manca di terreno?
Quando la risposta non è fondata:
- Esaminare il contesto recuperato per assicurarsi che includa le informazioni necessarie per generare la risposta prevista.
- Se il contesto non è sufficiente, migliorare il meccanismo di recupero o il set di dati per includere documenti pertinenti.
- Modificare il prompt per indicare al modello di assegnare priorità usando il contesto recuperato durante la generazione di risposte.
Pertinenza dei blocchi
Definizione: i blocchi recuperati sono rilevanti per la richiesta di input?
"richiede la verifica della verità di base: No."
La pertinenza dei blocchi valuta se ogni blocco è rilevante per la richiesta di input.
Input necessari
Il set di valutazione di input deve avere le colonne seguenti:
request
-
retrieved_context[].content
se non è stato specificato il parametromodel
permlflow.evaluate()
.
Se non si usa l'argomento model
nella chiamata a mlflow.evaluate()
, è necessario specificare anche retrieved_context[].content
o trace
.
Esempi
Utilizzare la precisione della rilevanza dei segmenti dal set di valutazione.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"retrieved_context": [
{"content": "Paris is the capital of France."},
{"content": "France is a country in Europe."}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["chunk_relevance_precision"]
}
}
)
Cosa fare quando i blocchi recuperati sono irrilevanti?
Quando vengono recuperati blocchi irrilevanti:
- Valutare la configurazione del retriever e regolare i parametri per classificare in ordine di priorità la pertinenza.
- Perfezionare i dati di training del retriever per includere esempi più diversificati o accurati.
Richiamo del documento
Definizione: quanti dei documenti rilevanti già noti sono stati trovati dal sistema di recupero?
richiede il riferimento reale: Sì, expected_retrieved_context[].doc_uri
.
Il recall dei documenti misura la percentuale di documenti rilevanti nel set di verità che sono stati recuperati rispetto al numero totale di documenti rilevanti nel set di verità.
Input necessari
Il set di valutazione di input deve avere la colonna seguente:
expected_retrieved_context[].doc_uri
Inoltre, se non si usa l'argomento model
nella chiamata a mlflow.evaluate()
, è necessario specificare anche retrieved_context[].doc_uri
o trace
.
Esempi
Usare il richiamo del documento da un set di valutazione:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"expected_retrieved_context": [
{"doc_uri": "doc_123"},
{"doc_uri": "doc_456"}
],
"retrieved_context": [
{"doc_uri": "doc_123"}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["document_recall"]
}
}
)
Per questa metrica non è disponibile alcun SDK per il giudice chiamabile perché non usa un giudice di intelligenza artificiale.
Cosa fare quando il richiamo del documento è basso?
Quando il richiamo è basso:
- Verificare che i dati di verità sul terreno riflettano accuratamente i documenti pertinenti.
- Migliorare il retriever o modificare i parametri di ricerca per aumentare il richiamo.
giudici di intelligenza artificiale personalizzati
È anche possibile creare un giudice personalizzato per eseguire valutazioni specifiche del caso d'uso.
Per informazioni dettagliate, vedere: