Sdílet prostřednictvím


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_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í 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. Pole messages 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. Pole query ř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_contexta 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