Schemat wejściowy oceny agenta
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
W tym artykule wyjaśniono schemat danych wejściowych wymagany przez ocenę agenta w celu oceny jakości, kosztów i opóźnień aplikacji.
- Podczas fazy rozwoju ocena odbywa się w trybie offline, a zestaw ewaluacyjny jest wymaganym wejściem do Ewaluacji Agenta.
- Gdy aplikacja jest w środowisku produkcyjnym, wszystkie dane wejściowe do Oceny Agenta pochodzą z tabel wnioskowania lub dzienników produkcyjnych.
Schemat wejściowy jest identyczny zarówno w przypadku ocen online, jak i offline.
Aby uzyskać ogólne informacje na temat zestawów oceny, zobacz Zestawy oceny.
Schemat wejściowy oceny
W poniższej tabeli przedstawiono schemat wejściowy oceny agenta. Dwie ostatnie kolumny tabeli odnoszą się do sposobu podania danych wejściowych do wywołania mlflow.evaluate()
. Aby uzyskać szczegółowe informacje, zobacz Zapewnianie danych wejściowych do przebiegu oceny.
Kolumna | Typ danych | opis | Aplikacja przekazana jako argument wejściowy | Wcześniej wygenerowane dane wyjściowe |
---|---|---|---|---|
request_id | string | Unikatowy identyfikator żądania. | Opcjonalnie | Opcjonalnie |
żądanie | Zobacz Schemat dla żądania. | Dane wejściowe do aplikacji w celu oceny, pytania użytkownika lub zapytania. Na przykład {'messages': [{"role": "user", "content": "What is RAG"}]} lub "Co to jest RAG?". Gdy request zostanie podany jako ciąg, zostanie on przekształcony na messages przed przekazaniem go do agenta. |
Wymagania | Wymagania |
odpowiedź | string | Odpowiedź wygenerowana przez ocenianą aplikację. | Generowane przez ocenę agenta | Opcjonalny. Jeśli nie zostanie podany, pochodzi z śledzenia. Albo response albo trace jest wymagany. |
expected_facts | tablica ciągów | Lista faktów, które są oczekiwane w danych wyjściowych modelu. Zobacz wskazówki dotyczące expected_facts. | Opcjonalnie | Opcjonalnie |
expected_response | string | Prawidłowa odpowiedź na żądanie wejściowe. Zobacz wskazówki dotyczące expected_response. | Opcjonalnie | Opcjonalnie |
Wytyczne | tablica ciągów | Lista wytycznych, które powinny być zgodne z danymi wyjściowymi modelu. Zobacz wytyczne dotyczące . | Opcjonalnie | Opcjonalnie |
expected_retrieved_context | tablica | Tablica obiektów zawierających oczekiwany kontekst pobrany dla żądania (jeśli aplikacja zawiera krok pobierania). schemat tablicy | Opcjonalnie | Opcjonalnie |
retrieved_context | tablica | Wyniki pobierania wygenerowane przez program retriever w ocenianej aplikacji. Jeśli w aplikacji znajduje się wiele kroków pobierania, jest to wynik pobierania z ostatniego kroku (chronologicznie w śladzie). schemat tablicy | Generowane przez ocenę agenta | Opcjonalny. Jeśli nie podano, pochodzi z podanego śladu. |
śledzenia | Ciąg JSON śledzenia MLflow | MLflow ślad wykonania aplikacji w odpowiednim żądaniu. | Generowane przez ocenę agenta | Opcjonalny. Albo response albo trace jest wymagany. |
expected_facts
Wytyczne
Pole expected_facts
określa listę faktów, które powinny pojawić się w dowolnej poprawnej odpowiedzi modelu dla określonego żądania wejściowego. Oznacza to, że odpowiedź modelu jest uważana za poprawną, jeśli zawiera te fakty, niezależnie od sposobu wyrażenia odpowiedzi.
Uwzględnienie tylko wymaganych faktów i pozostawienie faktów, które nie są ściśle wymagane w odpowiedzi, umożliwia ocenę agenta w celu zapewnienia bardziej niezawodnego sygnału jakości danych wyjściowych.
Można określić co najwyżej jeden z elementów expected_facts
i expected_response
. Jeśli określisz oba te elementy, zostanie zgłoszony błąd. Usługa Databricks zaleca użycie metody expected_facts
, ponieważ jest to bardziej szczegółowa wskazówka, która pomaga sędziom oceny agenta efektywniej ocenić jakość wygenerowanych odpowiedzi.
guidelines
Wytyczne
Pole guidelines
określa listę wytycznych, z którymi musi być zgodna każda poprawna odpowiedź na model. Wytyczne mogą odnosić się do różnych cech odpowiedzi, w tym elementów stylistycznych lub związanych z zawartością. Aby uzyskać najbardziej niezawodny sygnał dotyczący przestrzegania wytycznych, usługa Databricks zaleca używanie następującego języka:
- "Odpowiedź musi ..."
- "Odpowiedź nie może ..."
- "Odpowiedź może opcjonalnie ..."
W szczególności należy bezpośrednio odwołać się do żądania i odpowiedzi i pozostawić jak najmniej niejednoznaczności, jak to możliwe w wytycznych. Aby uzyskać wytyczne dotyczące całego zestawu oceny, takie jak zapewnienie, że odpowiedzi mają profesjonalny ton lub są zawsze w języku angielskim, użyj parametru global_guidelines
w konfiguracji ewaluatora w następujący sposób:
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
Wytyczne
Pole expected_response
zawiera w pełni sformułowaną odpowiedź, która reprezentuje odwołanie do poprawnych odpowiedzi modelu. Oznacza to, że odpowiedź modelu jest uważana za poprawną, jeśli pasuje do zawartości informacji w pliku expected_response
. W przeciwieństwie do expected_facts
listy tylko faktów, które są wymagane do pojawienia się w poprawnej odpowiedzi i nie jest w pełni sformułowaną odpowiedzią referencyjną.
Podobnie jak expected_facts
, expected_response
powinna zawierać tylko minimalny zestaw faktów wymaganych do poprawnej odpowiedzi. Uwzględnienie tylko wymaganych informacji i pozostawienie informacji, które nie są ściśle wymagane w odpowiedzi, umożliwia ocenę agenta w celu zapewnienia bardziej niezawodnego sygnału jakości danych wyjściowych.
Można określić co najwyżej jeden z elementów expected_facts
i expected_response
. Jeśli określisz oba te elementy, zostanie zgłoszony błąd. Usługa Databricks zaleca użycie metody expected_facts
, ponieważ jest to bardziej szczegółowa wskazówka, która pomaga sędziom oceny agenta efektywniej ocenić jakość wygenerowanych odpowiedzi.
schemat dla żądania
Schemat żądania może być jednym z następujących elementów:
- Schemat ukończenia czatu OpenAI . Schemat uzupełniania czatu OpenAI musi mieć jako parametr
messages
tablicę obiektów. Polemessages
może kodować pełną konwersację. - Jeśli agent obsługuje schemat uzupełniania czatu OpenAI, możesz przekazać zwykły ciąg. Ten format obsługuje tylko konwersacje jednokrotne. Zwykłe ciągi są konwertowane na
messages
format"role": "user"
z przed przekazaniem do agenta. Na przykład zwykły ciąg"What is MLflow?"
jest konwertowany na{"messages": [{"role": "user", "content": "What is MLflow?"}]}
przed przekazaniem do agenta. -
SplitChatMessagesRequest
.query
Pole ciągu dla najnowszego żądania i opcjonalnehistory
pole, które koduje poprzednie zwroty konwersacji.
W przypadku aplikacji do czatów wieloe obrotu użyj drugiej lub trzeciej opcji powyżej.
W poniższym przykładzie przedstawiono wszystkie trzy opcje w tej samej kolumnie request
zestawu danych oceny:
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 for arrays in evaluation input (Schemat dla tablic w danych wejściowych oceny)
Schemat tablic expected_retrieved_context
i retrieved_context
przedstawiono w poniższej tabeli:
Kolumna | Typ danych | opis | Aplikacja przekazana jako argument wejściowy | Wcześniej wygenerowane dane wyjściowe |
---|---|---|---|---|
content | string | Zawartość pobranego kontekstu. Ciąg w dowolnym formacie, takim jak HTML, zwykły tekst lub Markdown. | Opcjonalnie | Opcjonalnie |
doc_uri | string | Unikatowy identyfikator (URI) dokumentu nadrzędnego, z którego pochodzi fragment. | Wymagania | Wymagania |
Obliczone metryki
Kolumny w poniższej tabeli wskazują dane zawarte w danych wejściowych, a ✓
wskazuje, że metryka jest obsługiwana po podaniu tych danych.
Aby uzyskać szczegółowe informacje na temat miary tych metryk, zobacz Jak jakość, koszt i opóźnienie są oceniane przez ocenę agenta.
Metryki obliczeniowe | request |
request i expected_response |
request , expected_response , expected_retrieved_context i guidelines |
request i expected_retrieved_context |
request i 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 |
✓ | ✓ |