Vstupní struktura vyhodnocení agenta
Důležité
Tato funkce je ve verzi Public Preview.
Tento článek vysvětluje vstupní schéma vyžadované vyhodnocením agenta k posouzení kvality, nákladů a latence vaší aplikace.
- Během vývoje se vyhodnocení provádí offline a evaluační sada je nutný vstup pro vyhodnocování agenta.
- Když je aplikace v produkčním prostředí, všechny vstupy do vyhodnocení agenta pocházejí z odvozovacích tabulek nebo produkčních protokolů.
Vstupní schéma je stejné pro online i offline vyhodnocení.
Obecné informace o zkušebních sadách najdete v tématu Sady vyhodnocení.
Schéma vstupu vyhodnocení
Následující tabulka ukazuje vstupní schéma vyhodnocení agenta. Poslední dva sloupce tabulky odkazují na to, jak je vstup poskytován k hovoru mlflow.evaluate()
. Podrobnosti najdete v tématu Zadání vstupů do testovacího spuštění.
Sloupec | Datový typ | Popis | Aplikace předána jako vstupní argument | Dříve generované výstupy |
---|---|---|---|---|
id_požadavku | string | Jedinečný identifikátor požadavku. | Volitelné | Volitelné |
request | Prohlédněte si schéma pro žádost. | Vstup do aplikace pro vyhodnocení, dotaz nebo dotaz uživatele. Nebo {'messages': [{"role": "user", "content": "What is RAG"}]} "Co je RAG?". Pokud request je zadaný jako řetězec, bude transformován na messages předtím, než se předá vašemu agentu. |
Požaduje se | Požaduje se |
odpověď | string | Odpověď vygenerovaná aplikací, kterou vyhodnocuje. | Vygenerováno vyhodnocením agenta | Nepovinné. Pokud není k dispozici, odvozeno z trasování. Buď response nebo trace je povinný. |
expected_facts | pole řetězce | Seznam faktů očekávaných ve výstupu modelu. Viz pokyny pro expected_facts. | Volitelné | Volitelné |
expected_response | string | Odpověď na základní pravdu (správná) pro vstupní požadavek. Viz pokyny pro expected_response. | Volitelné | Volitelné |
pokyny | pole řetězce | Očekává se, že výstup modelu bude dodržovat soubor pokynů. Viz pokyny . | Volitelné | Volitelné |
expected_retrieved_context | pole | Pole objektů obsahujících očekávaný načtený kontext požadavku (pokud aplikace obsahuje krok načtení). Schéma pole | Volitelné | Volitelné |
retrieved_context | pole | Načítání výsledků vygenerovaných retrieverem v aplikaci, která se vyhodnocuje Pokud je v aplikaci více kroků načítání, jedná se o výsledky načítání z posledního kroku (chronologicky v trasování). Schéma pole | Vygenerováno vyhodnocením agenta | Nepovinné. Pokud ho nezadáte, odvozené z poskytnutého trasování. |
trasování | Řetězec JSON trasování MLflow | Trasování MLflow spuštění aplikace u odpovídajícího požadavku | Vygenerováno vyhodnocením agenta | Nepovinné. Buď response nebo trace je povinný. |
expected_facts
pokyny
Pole expected_facts
určuje seznam faktů, které se mají zobrazit v libovolné správné odpovědi modelu pro konkrétní vstupní požadavek. To znamená, že odpověď modelu je považována za správnou, pokud obsahuje tato fakta bez ohledu na to, jak je odpověď frází.
Zahrnutím pouze požadovaných faktů a vynechání faktů, které nejsou v odpovědi striktně vyžadovány, umožňuje vyhodnocení agenta poskytovat robustnější signál o kvalitě výstupu.
Můžete zadat maximálně jednu z expected_facts
a expected_response
. Pokud zadáte obojí, zobrazí se chyba. Databricks doporučuje používat expected_facts
, protože se jedná o konkrétnější vodítko, které pomáhá hodnocení agentů efektivněji kvalitu vygenerovaných odpovědí.
guidelines
pokyny
Pole guidelines
určuje seznam pokynů, které musí dodržovat jakákoli správná odpověď modelu. Pokyny můžou odkazovat na různé vlastnosti odpovědi, včetně stylů nebo prvků souvisejících s obsahem. Pro nej robustnější signál o dodržování zásad doporučuje Databricks používat následující jazyk:
- "Odpověď musí..."
- "Odpověď nesmí..."
- "Odpověď může volitelně ..."
Konkrétně byste měli odkazovat na žádost a odpověď přímo a ponechat co nejmenší nejednoznačnost v pokynech. Pokyny, které platí pro celou sadu hodnocení, jako je zajištění, že reakce mají profesionální tón a jsou vždy v angličtině, se řídí parametrem global_guidelines
v konfiguraci vyhodnocovače následujícím způsobem:
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.",
"guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
]
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
],
}
}
)
expected_response
pokyny
Pole expected_response
obsahuje plně vytvořenou odpověď, která představuje odkaz pro správné odpovědi modelu. To znamená, že odpověď modelu je považována za správnou, pokud odpovídá obsahu informací v expected_response
. Naproti tomu expected_facts
uvádí pouze fakta potřebná k zobrazení ve správné odpovědi a nejedná se o plně vytvořenou referenční odpověď.
Podobně jako expected_facts
by expected_response
měla obsahovat pouze minimální sadu faktů, které jsou požadovány pro správnou odpověď. Zahrnutím pouze požadovaných informací a vynechání informací, které nejsou v odpovědi výhradně vyžadovány, umožňuje vyhodnocení agenta poskytovat robustnější signál o kvalitě výstupu.
Můžete zadat maximálně jednu z expected_facts
a expected_response
. Pokud zadáte obojí, zobrazí se chyba. Databricks doporučuje používat expected_facts
, protože se jedná o konkrétnější vodítko, které pomáhá hodnocení agentů efektivněji kvalitu vygenerovaných odpovědí.
schéma pro požadavek
Schéma požadavku může být jedno z následujících:
- Schéma dokončení chatu OpenAI. Schéma dokončování chatu OpenAI musí mít pole objektů jako parametr
messages
. Polemessages
může zakódovat celou konverzaci. - Pokud agent podporuje schéma dokončování chatu OpenAI, můžete předat prostý řetězec. Tento formát podporuje pouze konverzace s jedním otočením. Prosté řetězce se před předáním agenta převedou do
messages
formátu"role": "user"
. Například prostý řetězec se před předáním agenta převede na"What is MLflow?"
prostý řetězec{"messages": [{"role": "user", "content": "What is MLflow?"}]}
. -
SplitChatMessagesRequest
. Polequery
řetězce pro poslední požadavek a volitelnéhistory
pole, které kóduje předchozí otočení konverzace.
Pro vícenásobné chatovací aplikace použijte druhou nebo třetí možnost výše.
Následující příklad ukazuje všechny tři možnosti ve stejném request
sloupci testovací datové sady:
import pandas as pd
data = {
"request": [
# Plain string. Plain strings are transformed to the `messages` format before being passed to your agent.
"What is the difference between reduceByKey and groupByKey in Spark?",
# OpenAI chat completion schema. Use the `messages` field for a single- or multi-turn chat.
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# SplitChatMessagesRequest. Use the `query` and `history` fields for a single- or multi-turn chat.
{
"query": "Explain broadcast variables in Spark. How do they enhance performance?",
"history": [
{
"role": "user",
"content": "What are broadcast variables?"
},
{
"role": "assistant",
"content": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine."
}
]
}
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question"
]
}
eval_dataset = pd.DataFrame(data)
Schéma pro pole ve vstupu vyhodnocení
Schéma polí expected_retrieved_context
a retrieved_context
je znázorněno v následující tabulce:
Sloupec | Datový typ | Popis | Aplikace předána jako vstupní argument | Dříve generované výstupy |
---|---|---|---|---|
content | string | Obsah načteného kontextu Řetězec v libovolném formátu, například HTML, prostý text nebo Markdown. | Volitelné | Volitelné |
doc_uri | string | Jedinečný identifikátor (URI) nadřazeného dokumentu, ze kterého pochází blok dat. | Požaduje se | Požaduje se |
Vypočítané metriky
Sloupce v následující tabulce označují data zahrnutá ve vstupu a ✓
indikuje, že se metrika podporuje při poskytnutí těchto dat.
Podrobnosti o tom, co tyto metriky měří, najdete v tématu Hodnocení agenta, jak se posuzuje kvalita, náklady a latence.
Počítané metriky | request |
request a expected_response |
request , expected_response , expected_retrieved_context a guidelines |
request a expected_retrieved_context |
request a guidelines |
---|---|---|---|---|---|
response/llm_judged/relevance_to_query/rating |
✓ | ✓ | ✓ | ||
response/llm_judged/safety/rating |
✓ | ✓ | ✓ | ||
response/llm_judged/groundedness/rating |
✓ | ✓ | ✓ | ||
retrieval/llm_judged/chunk_relevance_precision |
✓ | ✓ | ✓ | ||
agent/total_token_count |
✓ | ✓ | ✓ | ||
agent/input_token_count |
✓ | ✓ | ✓ | ||
agent/output_token_count |
✓ | ✓ | ✓ | ||
response/llm_judged/correctness/rating |
✓ | ✓ | |||
retrieval/llm_judged/context_sufficiency/rating |
✓ | ✓ | |||
retrieval/ground_truth/document_recall |
✓ | ✓ | |||
response/llm_judged/guideline_adherence/rating |
✓ | ✓ |