Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Agent Optimizer jest obecnie w wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Warunki dodatkowe korzystania z testowych wersji Microsoft Azure.
Optymalizator agenta ocenia agenta względem zestawu danych — kolekcji zadań — ocenianych przez ewaluatorów. Oba te elementy można wygenerować automatycznie za pomocą interfejsu wiersza polecenia lub ręcznie utworzyć zestaw danych w celu uzyskania pełnej kontroli.
Obie części są niezbędne do dobrej optymalizacji: zestaw danych definiuje, co należy przetestować, a ewaluatorzy definiują sposób oceniania poszczególnych odpowiedzi. Słabi ewaluatorzy generują hałaśliwe wyniki, które prowadzą do słabej optymalizacji, więc inwestują w silnych ewaluatorów tak samo jak zadania reprezentatywne.
Tworzenie tych zasobów jest drugim krokiem w procesie optymalizacji, po przygotowaniu agenta do optymalizacji. Optymalizator używa ich do oceniania punktu odniesienia i klasyfikacji kandydatów.
Wymagania wstępne
- Projekt Foundry z wdrożonym hostowanym agentem
- Zainstalowane rozszerzenie interfejsu wiersza polecenia (CLI)
azure.ai.agents(zobacz Szybki przewodnik: Optymalizacja hostowanego agenta)
Generowanie zestawu danych i ewaluatorów (zalecane)
Najszybszym sposobem tworzenia zasobów oceny jest użycie polecenia azd ai agent eval generate. Polecenie automatycznie wykrywa agenta i generuje wszystko, czego potrzebuje optymalizator:
azd ai agent eval generate
Domyślnie generuje:
- Początkowy zbiór danych zadań dostosowany do domeny Twojego agenta.
-
Ewaluatorzy , którzy oceniają odpowiedzi — wbudowany ewaluator (na przykład
builtin.task_adherence) oraz niestandardowy ewaluator rubryk dostosowany do twojego agenta. - Runnable
eval.yaml, który łączy je razem.
Informacje o kreatorze interaktywnym, flagach nieinteraktywnych oraz szczegóły dotyczące wygenerowanych artefaktów znajdziesz w sekcji Inicjalizowanie zasobów ewaluacji.
Po wygenerowaniu azd ai agent optimize automatycznie wykrywa eval.yaml:
azd ai agent optimize
Aby dostosować wygenerowane zasoby, zobacz Dostosowywanie ewaluatorów i Tworzenie niestandardowego zestawu danych. Aby zmienić opcje uruchomienia, edytuj eval.yaml; zobacz Konfigurowanie uruchomienia optymalizacji.
Dostosowywanie ewaluatorów (zaawansowane)
Ewaluatorzy oceniają każdą odpowiedź agenta. Optymalizator obsługuje dwa rodzaje:
-
Wbudowane mechanizmy oceny, takie jak
builtin.task_adherence, który ocenia każde kryterium dla danego zadania jako zaliczone lub niezaliczone. -
Niestandardowe oceniacze oparte na rubrykach, które oceniają odpowiedzi w wielu aspektach jakości dostosowanych do Twojego agenta.
azd ai agent eval generateautomatycznie tworzy edytowalny plikrubric_dimensions.json.
W przypadku większości agentów wygenerowany ewaluator rubryk daje najbardziej znaczące wyniki, ponieważ jest dostosowany do twojej domeny. Edytuj wygenerowane rubric_dimensions.json w celu uściślinia wymiarów, a następnie uruchom polecenie azd ai agent eval update , aby zarejestrować zmiany jako nową wersję. Aby uzyskać szczegółowe informacje na temat generowania, edytowania i przechowywania wersji ewaluatorów, zobacz Inicjowanie zasobów oceny.
Aby dodać ewaluatory do konfiguracji uruchomienia, zobacz Konfigurowanie uruchomienia optymalizacji.
Tworzenie niestandardowego zestawu danych (zaawansowane)
Utwórz niestandardowy zestaw danych, gdy potrzebujesz dokładnej kontroli nad scenariuszami testowymi lub masz dane produkcyjne do bezpośredniego użycia. Zalecane podejście polega na iterowaniu na bazie początkowego zestawu danych, który tworzy azd ai agent eval generate — doprecyzowaniu go do postaci lokalnego zestawu danych lub wskazaniu innego zestawu danych już zarejestrowanego w projekcie Foundry.
Wybieranie źródła zestawu danych
Zestaw danych może pochodzić z jednego z dwóch źródeł:
-
Zestaw danych foundry — zestaw danych już zarejestrowany w projekcie Foundry. Odwołaj się do niego w
eval.yamlza pomocąnameiversion. -
Lokalny zestaw danych — plik JSONL utworzony i zachowany w projekcie. Odwołaj się do tego w
eval.yamlza pomocąlocal_uri.
Oba źródła używają tego samego schematu zadań opisanego w następnej sekcji. Aby zapoznać się z okablowaniem eval.yaml , zobacz Konfigurowanie przebiegu optymalizacji.
Schemat zestawu danych
Zestaw danych używa formatu JSONL (JSON Lines). Każdy wiersz jest jednym obiektem JSON reprezentującym pojedyncze zadanie oceny — pojedynczy scenariusz. Zadanie ma monit (query) i, opcjonalnie, poziom criteriazadania .
{"name": "task_1", "query": "Your prompt here"}
{"name": "task_2", "query": "Another prompt", "ground_truth": "Expected answer"}
| Pole | Required | Description |
|---|---|---|
name |
Yes | Unikatowy identyfikator zadania (na przykład "greeting", "math_test"). |
query |
Yes | Wiadomość wysłana do agenta. |
ground_truth |
No | Oczekiwana odpowiedź używana przez ewaluatorów obsługujących odniesienia. |
criteria |
No | Opcjonalne kontrole na poziomie zadania. Zobacz Dodawanie kryteriów na poziomie zadania. |
Jeśli używasz lokalnego zestawu danych, przed uruchomieniem optymalizacji zweryfikuj składnię JSONL:
python -c "import json; [json.loads(l) for l in open('eval.jsonl')]"
Dodawanie kryteriów na poziomie zadania
Kryteria są opcjonalne.
Osoby ewaluacyjne konfigurowane w eval.yaml programie mają zastosowanie do każdego zadania w zestawie danych. Dodaj criteria dla poszczególnych zadań tylko wtedy, gdy konkretne zadanie wymaga kontroli wykraczających poza te wykonywane przez współdzielonych ewaluatorów. Jeśli są obecne, criteria są oceniane i sumowane wraz ze wspólnymi ewaluatorami, aby uzyskać końcowy wynik zadania.
| Pole | Required | Description |
|---|---|---|
criteria[].name |
Yes | Krótka nazwa kryterium (na przykład "is_polite"). |
criteria[].instruction |
Yes | Co sprawdza ewaluator. Być specyficzne i możliwe do testowania. |
Poniższy zestaw danych pomocy technicznej dla klientów przedstawia zadania z kryteriami na poziomie zadania:
{"name": "refund_policy", "query": "What is your refund policy?", "criteria": [{"name": "mentions_30_days", "instruction": "Response must mention the 30-day refund window"}, {"name": "polite_tone", "instruction": "Response must be professional and empathetic"}]}
{"name": "order_status", "query": "Where is my order #12345?", "criteria": [{"name": "asks_for_details", "instruction": "Agent should ask for email or order details to look up the order"}, {"name": "no_hallucination", "instruction": "Agent must NOT make up a fake order status"}]}
{"name": "out_of_scope", "query": "Can you help me fix my car?", "criteria": [{"name": "polite_decline", "instruction": "Agent should politely explain this is outside its scope"}, {"name": "redirect", "instruction": "Agent should suggest contacting an appropriate service"}]}
Porady dotyczące pisania dobrych zestawów danych
Uwzględnij przypadki brzegowe
Przetestuj poza szczęśliwą ścieżką. Załącz:
- Żądania poza zakresem — żądania, które agent powinien odrzucać lub przekierowywać
- Zapytania niejednoznaczne — zadania, w których agent powinien poprosić o wyjaśnienie
- Wrogie dane wejściowe — próby nakłonienia agenta do niewłaściwego działania
- Zadania wieloetapowe — złożone żądania wymagające strukturalnych rozumowania
Wytyczne dotyczące rozmiaru
| Rozmiar zestawu danych | Kompromis |
|---|---|
| 3–5 zadań | Szybka iteracja, ograniczony sygnał |
| 5–10 zadań | Dobra równowaga szybkości i zasięgu |
| 10–20 zadań | Kompleksowa ocena, dłuższe testy |
| 20+ zadania | Dokładne, ale powolne — rozważ przeprowadzenie ostatecznej weryfikacji |
Większe zestawy danych zapewniają szerszy zakres, ale ocena trwa dłużej.
Podaj podstawy prawdy, gdy jest to przydatne
Pole ground_truth daje ewaluatorom odpowiedź referencyjną na porównanie. Nie jest to wymagane — ewaluatorzy mogą również oceniać odpowiedzi na podstawie swoich instrukcji i niezależnie od kryteriów na poziomie zadania.
{"name": "geography_fact", "query": "What is the largest city in France by population?", "ground_truth": "Paris", "criteria": [{"name": "correct_answer", "instruction": "Response must state that Paris is the largest city in France by population"}]}
Pisz prompty jak prawdziwi użytkownicy
Jeśli to możliwe, użyj rzeczywistych komunikatów od użytkowników. Rzeczywiste prompty oddają słownictwo i kontekst, z jakimi agent ma do czynienia w środowisku produkcyjnym, co pomaga również tworzyć realistyczne kryteria oceny na poziomie zadań.
Określ dokładnie kryteria
Niejasne kryteria prowadzą do niespójnego oceniania. Ustaw każde kryterium jako specyficzne i testowalne.
Źle:
{"name": "good_answer", "instruction": "The response should be good"}
Dobry:
{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}
Troubleshooting
| Problem | Przyczyna | Napraw. |
|---|---|---|
dataset not found |
Nieprawidłowa ścieżka w eval.yaml |
Dla dataset.local_uri użyj ścieżki względnej względem lokalizacji pliku konfiguracyjnego. W przypadku zestawu danych usługi Foundry sprawdź dataset.name i dataset.version. |
invalid JSON on line N |
Nieprawidłowy JSONL | Sprawdź, czy każdy wiersz jest prawidłowy w formacie JSON. Sprawdź, czy na końcu nie ma przecinków. |
| Wyniki są niespójne między przebiegami | Niejasne kryteria | Ustaw kryteria specyficzne i testowalne. |