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 | sträng | 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 riktlinjer. | Valfritt | Valfritt |
expected_response | sträng | Grundsanningssvar (korrekt) för indatabegäran. Se expected_response riktlinjer. | Valfritt | Valfritt |
riktlinjer | strängmatris | En lista över riktlinjer som modellens utdata förväntas följa. Se riktlinjerna för . | 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 den lista med riktlinjer som alla korrekta modellsvar måste följa. 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.",
"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
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:
- OpenAI-chattens slutförandeschema. OpenAI-chattens slutförandeschema måste ha en matris med objekt som en
messages
parameter. Fältetmessages
kan koda hela konversationen. - 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. -
SplitChatMessagesRequest
. Ettquery
strängfält för den senaste begäran och ett valfritthistory
fält som kodar tidigare vändningar av konversationen.
För chattprogram med flera svängar använder du det andra eller tredje alternativet ovan.
I följande exempel visas alla tre alternativen 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."
}
]
}
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question"
]
}
eval_dataset = pd.DataFrame(data)
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 |
✓ | ✓ |