Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Databricks doporučuje používat MLflow 3 k vyhodnocení a monitorování aplikací GenAI. Tato stránka popisuje vyhodnocení agenta MLflow 2.
- Úvod k vyhodnocení a monitorování na MLflow 3 najdete v tématu Vyhodnocení a monitorování agentů AI.
- Informace o migraci na MLflow 3 najdete v tématu Migrace na MLflow 3 z vyhodnocení agenta.
- Informace o MLflow 3 najdete v tématu Vytváření datových sad vyhodnocení MLflow.
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 vyhodnocovacích sadách najdete v tématu Sady vyhodnocení (MLflow 2).
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 naleznete v části Zadání vstupů pro zkušební běh.
| Column | Datový typ | Description | Aplikace předána jako argument vstupu | Dříve generované výstupy |
|---|---|---|---|---|
| id_požadavku | řetězec | Jedinečný identifikátor požadavku. | Volitelný | Volitelný |
| žádost | Viz Schéma pro žádost. | Vstup pro vyhodnocení aplikace, dotaz uživatele nebo jeho otázka. 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. |
Povinné | Povinné |
| response | Viz Schéma pro odpověď. | Odpověď vygenerovaná aplikací, kterou vyhodnocuje. | Vytvořeno na základě hodnocení agenta | Optional. Pokud není k dispozici, bude odvozeno z Trace. Buď response nebo trace je povinný. |
| očekávaná_fakta | pole řetězce | Seznam faktů očekávaných ve výstupu modelu. Viz expected_facts pokyny. |
Volitelný | Volitelný |
| očekávaná_odpověď | řetězec | Skutečná správná odpověď pro vstupní požadavek. Viz expected_response pokyny. |
Volitelný | Volitelný |
| pokyny |
guidelines pokyny |
Výstup modelu se očekává, že bude dodržovat pojmenovaný dictionář nebo seznam pokynů. Viz guidelines pokyny. |
Volitelný | Volitelný |
| očekávaný_získaný_kontext | 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ý |
| načtený_kontext | pole | Výsledky vyhledávání generované vyhledávačem 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 | Vytvořeno na základě hodnocení agenta | Optional. Pokud není poskytnuto, je odvozeno z poskytnutého trasování. |
| trasování | Řetězec JSON MLflow Trace | Záznam spuštění aplikace pomocí MLflow v rámci odpovídajícího požadavku. | Vytvořeno na základě hodnocení agenta | Optional. 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í agentem efektivněji posuzovat kvalitu vygenerovaných odpovědí.
guidelines pokyny
Pole guidelines určuje nastavené pokyny, které musí dodržovat jakákoli správná odpověď modelu.
guidelines lze vyjádřit ve dvou formátech:
- Seznam pokynů (
List[str]) poskytuje jedinou sadu pokynů. - Pojmenované směrnice (
Dict[str, List[str]]) zajišťují přiřazení názvu směrnice k poli směrnic pro tento název. Pojmenované směrnice vyžadujídatabricks-agents >= 0.16.0.
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.",
# Note: You can also just pass an array to `guidelines`.
"guidelines": {
"english": ["The response must be in English"],
"clarity": ["The response must be clear, coherent, and concise"],
}
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
# Note: You can also just pass an array to `guidelines`.
"global_guidelines": {
"english": ["The response must be in English"],
"clarity": ["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_factsby 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í agentem efektivněji posuzovat kvalitu vygenerovaných odpovědí.
schéma požadavku
Schéma požadavku může být jedno z následujících:
- Libovolný serializovatelný slovník (například
Dict[str, Any]) - Pokud agent podporuje schéma dokončování chatu OpenAI, můžete předat prostý řetězec. Tento formát podporuje pouze jednostranné konverzace. Prosté řetězce se převedou do formátu
messagespomocí"role": "user"před předáním vašemu agentovi. Například se prostý řetězec"What is MLflow?"převede na{"messages": [{"role": "user", "content": "What is MLflow?"}]}před předáním vašemu agentovi.
Všimněte si, že integrovaní soudci fungují nejlépe s jakýmkoli formátem používajícím schéma dokončení chatu OpenAI . Schéma dokončování chatu OpenAI musí mít pole objektů jako parametr messages. Pole messages může zakódovat celou konverzaci.
Následující příklad ukazuje několik možných možností 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."
}
]
},
# Arbitrary format. These must be JSON-serializable and are passed directly to your agent.
{
"message_history": [
{
"user_0": "What are broadcast variables?",
"assistant_0": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine.",
}
],
"last_user_request": "How can you minimize data shuffling in Spark?"
},
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question",
"expected response for fourth question",
]
}
eval_dataset = pd.DataFrame(data)
schéma pro odpověď
Schéma odpovědi, podobně jako schéma požadavku, může být jedno z následujících:
- Libovolný serializovatelný slovník (například
Dict[str, Any]). - Pokud agent podporuje schéma dokončování chatu OpenAI, můžete předat prostý řetězec. Tento formát podporuje pouze jednostranné konverzace. Prosté řetězce jsou převedeny do formátu
choices. Například prostý řetězec"MLFlow is a framework."je převeden na{"choices": [{"message": {"content": "MLFlow is a framework."}}]}.
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:
| Column | Datový typ | Description | Aplikace předána jako vstupní argument | Dříve generované výstupy |
|---|---|---|---|---|
| obsah | řetězec | Obsah načteného kontextu Řetězec v libovolném formátu, například HTML, prostý text nebo Markdown. | Volitelný | Volitelný |
| doc_uri | řetězec | Jedinečný identifikátor (URI) nadřazeného dokumentu, ze kterého pochází blok dat. | Povinné | Povinné |
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 Jak hodnocení agenta (MLflow 2) 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 |
✓ | ✓ |