Indataschema för agentutvärdering
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här artikeln förklarar det indataschema som krävs av Agentutvärdering för att utvärdera programmets kvalitet, kostnad och svarstid.
- Under utvecklingen sker utvärderingen offline och en utvärderingsuppsättning är en nödvändig indata till Agentutvärdering.
- När ett program är i produktion kommer alla indata till Agentutvärdering från dina slutsatsdragningstabeller eller produktionsloggar.
Indataschemat är identiskt för både online- och offlineutvärderingar.
Allmän information om utvärderingsuppsättningar finns i Utvärderingsuppsättningar.
Schema för utvärderingsindata
I följande tabell visas agentutvärderingens indataschema. De två sista kolumnerna i tabellen refererar till hur indata tillhandahålls till anropet mlflow.evaluate()
. Mer information finns i Ange indata till en utvärderingskörning.
Column | Datatyp | beskrivning | Programmet skickades som indataargument | Tidigare genererade utdata har angetts |
---|---|---|---|---|
request_id | sträng | Unik identifierare för begäran. | Valfritt | Valfritt |
begäran | Se Schema för begäran. | Indata till programmet för att utvärdera, användarens fråga eller fråga. Till exempel, {'messages': [{"role": "user", "content": "What is RAG"}]} eller "Vad är RAG?". När request anges som en sträng omvandlas den till messages innan den skickas till din agent. |
Obligatoriskt | Obligatoriskt |
svar | Se Schema för svar. | Svar som genereras av programmet som utvärderas. | Genereras av agentutvärdering | Valfritt. Om den inte tillhandahålls härleds den från spårningen. Antingen response eller trace krävs. |
expected_facts | strängmatris | En lista över fakta som förväntas i modellutdata. Se expected_facts riktlinjerna. |
Valfritt | Valfritt |
expected_response | sträng | Grundsanningssvar (korrekt) för indatabegäran. Se expected_response riktlinjer. |
Valfritt | Valfritt |
riktlinjer |
guidelines riktlinjer |
En namngiven ordlista eller lista över riktlinjer som modellens utdata förväntas följa. Se guidelines riktlinjer. |
Valfritt | Valfritt |
expected_retrieved_context | matris | Matris med objekt som innehåller den förväntade hämtade kontexten för begäran (om programmet innehåller ett hämtningssteg). Matrisschema | Valfritt | Valfritt |
retrieved_context | matris | Hämtningsresultat som genereras av hämtaren i programmet som utvärderas. Om flera hämtningssteg finns i programmet är detta hämtningsresultatet från det sista steget (kronologiskt i spårningen). Matrisschema | Genereras av agentutvärdering | Valfritt. Om det inte tillhandahålls härleds från den angivna spårningen. |
spåra | JSON-sträng för MLflow Trace | MLflow-spårning av programmets körning på motsvarande begäran. | Genereras av agentutvärdering | Valfritt. Antingen response eller trace krävs. |
expected_facts
riktlinjer
Fältet expected_facts
anger listan över fakta som förväntas visas i ett korrekt modellsvar för den specifika indatabegäran. Det vill säga att ett modellsvar bedöms vara korrekt om det innehåller dessa fakta, oavsett hur svaret formuleras.
Genom att endast ta med de fakta som krävs och utelämna fakta som inte är absolut nödvändiga i svaret kan agentutvärderingen ge en mer robust signal om utdatakvaliteten.
Du kan ange högst en av expected_facts
och expected_response
. Om du anger båda rapporteras ett fel. Databricks rekommenderar att du använder expected_facts
, eftersom det är en mer specifik riktlinje som hjälper agentutvärdering att bedöma kvaliteten på genererade svar mer effektivt.
guidelines
riktlinjer
Fältet guidelines
anger en uppsättning riktlinjer som alla korrekta modellsvar måste följa.
guidelines
kan uttryckas i två format:
- En lista över riktlinjer (
List[str]
) innehåller en enda uppsättning riktlinjer. - Namngivna riktlinjer (
Dict[str, List[str]]
) innehåller en mappning av ett namn på riktlinjen till en matris med riktlinjer för det namnet. Specificerade riktlinjer kräverdatabricks-agents >= 0.16.0
.
Riktlinjer kan referera till olika egenskaper hos svaret, inklusive stilistiska eller innehållsrelaterade element. För den mest robusta signalen om riktlinjeefterlevnad rekommenderar Databricks att du använder följande språk:
- "Svaret måste ..."
- "Svaret får inte ..."
- "Svaret kan eventuellt ..."
Mer specifikt bör du referera till begäran och svaret direkt och lämna så lite tvetydighet som möjligt i riktlinjerna. För riktlinjer som gäller för hela utvärderingsuppsättningen, till exempel att säkerställa att svaren har en professionell ton eller alltid är på engelska, använder du parametern global_guidelines
i utvärderarkonfigurationen på följande sätt:
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
riktlinjer
Fältet expected_response
innehåller ett fullständigt format svar som representerar en referens för rätt modellsvar. Ett modellsvar bedöms alltså vara korrekt om det matchar informationsinnehållet i expected_response
. Däremot expected_facts
visas endast de fakta som krävs för att visas i ett korrekt svar och inte är ett fullständigt referenssvar.
expected_facts
expected_response
På liknande sätt bör endast innehålla den minimala uppsättning fakta som krävs för ett korrekt svar. Genom att endast inkludera nödvändig information och utelämna information som inte är strikt nödvändig i svaret kan agentutvärderingen ge en mer robust signal om utdatakvaliteten.
Du kan ange högst en av expected_facts
och expected_response
. Om du anger båda rapporteras ett fel. Databricks rekommenderar att du använder expected_facts
, eftersom det är en mer specifik riktlinje som hjälper agentutvärdering att bedöma kvaliteten på genererade svar mer effektivt.
Schema för begäran
Begärandeschemat kan vara något av följande:
- En godtycklig serialiserbar ordlista (till exempel
Dict[str, Any]
) - Om agenten stöder OpenAI-chattens slutförandeschema kan du skicka en vanlig sträng. Det här formatet stöder endast konversationer med en enda tur. Vanliga strängar konverteras till formatet
messages
med"role": "user"
innan de skickas till din agent. Till exempel konverteras en vanlig sträng"What is MLflow?"
till{"messages": [{"role": "user", "content": "What is MLflow?"}]}
innan den skickas till din agent.
Observera att de inbyggda domarna fungerar bäst med valfritt format med hjälp av ett OpenAI-chattens slutförandeschema. OpenAI-chattens slutförandeschema måste ha en matris med objekt som en messages
parameter. Fältet messages
kan koda hela konversationen.
I följande exempel visas några möjliga alternativ i samma request
kolumn i utvärderingsdatauppsättningen:
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)
Schema för svar
Svarsschemat, som liknar begärandeschemat, kan vara något av följande:
- En godtycklig serialiserbar ordlista (till exempel
Dict[str, Any]
). - Om agenten stöder OpenAI-chattens slutförandeschema kan du skicka en vanlig sträng. Det här formatet stöder endast konversationer med en enda tur. Vanliga strängar konverteras till
choices
format. Till exempel konverteras en vanlig sträng"MLFlow is a framework."
till{"choices": [{"message": {"content": "MLFlow is a framework."}}]}
.
Schema för matriser i utvärderingsindata
Schemat för matriserna expected_retrieved_context
och retrieved_context
visas i följande tabell:
Column | Datatyp | beskrivning | Programmet skickades som indataargument | Tidigare genererade utdata har angetts |
---|---|---|---|---|
innehåll | sträng | Innehållet i den hämtade kontexten. Sträng i valfritt format, till exempel HTML, oformaterad text eller Markdown. | Valfritt | Valfritt |
doc_uri | sträng | Unik identifierare (URI) för det överordnade dokumentet där segmentet kom ifrån. | Obligatoriskt | Obligatoriskt |
Beräknade mått
Kolumnerna i följande tabell anger de data som ingår i indata och ✓
anger att måttet stöds när dessa data tillhandahålls.
Mer information om vad dessa mått mäter finns i Hur kvalitet, kostnad och svarstid utvärderas av agentutvärdering.
Beräknade mått | request |
request och expected_response |
request , expected_response , expected_retrieved_context och guidelines |
request och expected_retrieved_context |
request och 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 |
✓ | ✓ |