Dela via


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ältet messages 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. Ett query strängfält för den senaste begäran och ett valfritt history 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_contextoch 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