Enterprise RAG Challenge 3: wnioski z publicznych zgłoszeń

Tłumaczenie automatyczne

Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.

Enterprise RAG Challenge 3 (ERC3) polegało na tym, że agenci wykonywali zadania biznesowe na symulowanym API firmy. Zamrożona tabela wyników nagrodzonych zgłoszeń jest wyjątkowo przydatna, bo wielu uczestników opublikowało więcej niż wynik: architekturę, zestaw modeli, koszt i uwagi o błędach.

Przejrzałem te publiczne opisy, żeby odpowiedzieć na węższe pytanie: jakie decyzje projektowe powtarzały się w mocnych zgłoszeniach i które z nich przydadzą się poza tym benchmarkiem?

Ten artykuł jest dla inżynierów, którzy budują agentów wywołujących biznesowe APIs. Zobaczysz pięć rozwiązań z publicznych opisów, problemy, które każde z nich rozwiązywało (uprawnienia, paginacja, brakujące linki, rozmiar kontekstu), oraz kolejność, w jakiej warto je wypróbować we własnym agencie.

Czym jest Enterprise RAG Challenge?

Enterprise RAG Challenge 3 to szeroko zakrojony projekt badawczy oparty na zbiorowym udziale, który sprawdza, jak autonomiczni agenci AI radzą sobie ze złożonymi zadaniami biznesowymi. W odróżnieniu od statycznych benchmarków ERC3 działa na Agentic Enterprise Simulation (AGES), symulacji zdarzeń dyskretnych, która udostępnia realistyczne API przedsiębiorstwa.

Co testuje benchmark

W AGES agenci pracują w fikcyjnej firmie, która ma:

  • Profile pracowników z konkretnymi umiejętnościami i działami
  • Projekty z przydziałem zespołów i relacjami z klientami
  • Firmową wiki z regułami biznesowymi i hierarchiami uprawnień
  • Rejestrację czasu pracy i operacje finansowe

Każde zadanie uruchamia odizolowaną symulację. Wiki firmy jest wspólna, ale rekordy operacyjne różnią się w zależności od zadania, więc agent nie rozwiąże zestawu, zapamiętując jeden stan firmy.

Wyniki to migawka

ERC3 udostępnia teraz zarówno zamrożoną tabelę wyników konkursu, jak i publiczny benchmark, który przyjmował kolejne uruchomienia po zakończeniu wydarzenia. Te strony odpowiadają na różne pytania. Poniższe liczby opisują tabelę wyników nagrodzonych zgłoszeń w chwili zamknięcia konkursu, a nie późniejsze, lepsze sesje:

MetrykaMigawka z konkursu
Zgłoszenia do nagrody38
Zestaw zadań103 zadania biznesowe
Najwyższy wynik w nagrodzie0.718
Zamknięcie konkursu9 grudnia 2025, 13:40 CET

Strona działającego benchmarku może pokazywać wyższe wyniki, bo obejmuje późniejsze uruchomienia. Dlatego zamrożona tabela jest właściwym źródłem dla twierdzeń o tym, co wygrało konkurs. Ultimate leaderboard bierze najlepsze uruchomienie każdego konta bez uwzględniania zamknięcia konkursu, więc jego wyniki nie są porównywalne z wynikami nagrodzonych zgłoszeń.

Rodzaje zadań

Zadania obejmują kilka obszarów umiejętności:

  • Rozumowanie wieloetapowe, na przykład dopasowanie umiejętności pracowników do przydziałów w projektach.
  • Walidacja uprawnień, na przykład blokowanie nieautoryzowanych zmian wynagrodzenia lub dostępu do danych.
  • Niejednoznaczne zapytania, w tym wielojęzyczne i parafrazowane prośby.
  • Ścisła zgodność wyjścia z wymaganiami, w tym obowiązkowe linki do encji w odpowiedziach.

Co sugerują zgłoszenia

Publiczne opisy nie pozwalają na jednoznaczny werdykt w rodzaju „multi-agent wygrywa z single-agent”. Zgłoszenie z czwartego miejsca w nagrodach, MMzXeM, było jednym agentem z narzędziami odwzorowanymi 1:1 na endpointy API, narzędziem ask_wiki i system prompt o długości 320 tokens. Opisy potwierdzają jednak cztery węższe obserwacje:

  1. Zespoły wydzielały komponent, gdy odpowiadał za jedno wymaganie, z którym agenci wciąż sobie nie radzili: sprawdzenie uprawnień, walidację kroków, wykonywanie kodu albo linki do encji. Nie dzieliły systemu według dowolnych „ról agentów”.
  2. Walidacja przesuwała się bliżej działań nieodwracalnych. Kilka systemów sprawdzało uprawnienia przed wykonaniem, weryfikowało pojedyncze kroki albo chroniło końcową odpowiedź.
  3. Zmiany napędzały nieudane ślady. Zwycięzca zamieniał nieudane uruchomienia w poprawki w treści prompt w zautomatyzowanej pętli; inne zespoły opisały podobnie konkretne poprawki narzędzi i prompts.
  4. Polityka kontekstu była decyzją architektoniczną. Zespoły próbowały destylacji, wstępnego ładowania, wyszukiwania i kompresji historii. Ich własne raporty nie zgadzają się co do tego, czy kompresja pomagała, więc nie ma uniwersalnego przepisu.

Pięć pouczających podejść

To nie jest pięć najlepszych w kolejności rankingu. Wybrałem je, bo ich publiczne opisy pokazują pięć różnych sposobów budowy systemu: automatyczne zmiany w treści prompt, wyspecjalizowane etapy, walidację każdego kroku, strażników odpowiedzi i izolację plan-execute.

ZespółKontekst tabeli wynikówOpublikowany wynik
VZS9FLNagroda, 1. miejsce0.718
LcnxuyNagroda, 8. miejsce0.505
NLN7DwNagroda, 2. miejsce0.621
J8GvbiNagroda, 16. miejsce0.437
5qsp7i (key_concept_parallel)Ultimate, 3. miejsce0.670

1. Ewolucyjne projektowanie tekstu prompt (zespół VZS9FL / @aostrikov)

Podejście z najwyższym wynikiem zautomatyzowało projektowanie tekstu prompt za pomocą pętli samodoskonalenia.

Wersje tekstu prompt od v1 do v80 i jeden przebieg pętli: agent główny rejestruje zadania z błędami, analizator proponuje przyczyny, a agent wersjonujący wybiera część z nich i pisze kolejną wersjęWersje tekstu prompt od v1 do v80 i jeden przebieg pętli: agent główny rejestruje zadania z błędami, analizator proponuje przyczyny, a agent wersjonujący wybiera część z nich i pisze kolejną wersję

Zamiast ręcznie dostrajać produkcyjny prompt, zespół zbudował pętlę z trzema agentami, która zamieniała nieudane ślady w kandydatów na nowe wersje.

Potok z trzema agentami:

AgentRola
Main AgentUruchamia benchmark, zapisuje wszystkie działania i błędy
Analyzer AgentPrzegląda nieudane zadania, formułuje hipotezy o przyczynach
Versioner AgentGeneruje nową wersję tekstu prompt uwzględniającą wnioski

Produkcyjny prompt był 80. automatycznie wygenerowaną wersją. Zespół opisuje pętlę jako analizę nieudanych zadań, proponowanie przyczyn i decydowanie, które sugestie uwzględnić. Tabela wyników potwierdza końcowy wynik i liczbę iteracji. Nie wyodrębnia, jaka część zysku wynika z automatyzacji, a jaka z modeli, narzędzi lub nagromadzonej informacji zwrotnej z benchmarku.

Stos: claude-opus-4.5 z Anthropic Python SDK i natywnym korzystaniem z narzędzi.


2. Wieloagentowy potok sekwencyjny (zespół Lcnxuy / @andrey_aiweapps)

To zgłoszenie zbudowało sekwencyjny przepływ pracy, w którym wyspecjalizowane komponenty odpowiadały za kontrole bezpieczeństwa, wyciąganie kontekstu, wykonanie i formatowanie linków do encji.

Cztery etapy od kontroli bezpieczeństwa do narzędzia odpowiedzi, pięć faz wykonania i dwie odpowiedzi: jedna bez linków, druga z linkami utworzonymi wewnątrz narzędzia odpowiedziCztery etapy od kontroli bezpieczeństwa do narzędzia odpowiedzi, pięć faz wykonania i dwie odpowiedzi: jedna bez linków, druga z linkami utworzonymi wewnątrz narzędzia odpowiedzi

Udokumentowane komponenty:

  1. Security Gate Agent: kontrola przed wykonaniem, która sprawdza uprawnienia względem reguł wiki, zanim ruszy główna pętla.
  2. Context Extraction Agent: wyciąga kluczowe reguły z system prompts dłuższych niż 500 linii i wstępnie ładuje dane użytkownika, projektu i klienta.
  3. Execution Agent: planowanie w stylu ReAct z 5 wewnętrznymi fazami (tożsamość → wykrywanie zagrożeń → zbieranie informacji → walidacja dostępu → wykonanie).
  4. LinkGeneratorAgent: osadzony w narzędziu odpowiedzi, analizuje kontekst, aby dołączyć wymagane linki do encji.

Według opisu zespołu LinkGeneratorAgent miał zapobiegać błędom brakujących linków: odpowiedziom z poprawnym tekstem, ale bez wymaganych linków do encji. To najłatwiejsza do przeniesienia część. Umieszczenie go w narzędziu odpowiedzi czyni wymaganie benchmarku (obowiązkowe linki do encji) własnością interfejsu, a nie kolejną instrukcją, o której model wykonujący może zapomnieć.

Stos: frameworki atomic-agents i instructor z gpt-5.1-codex-max, gpt-4.1 i claude-sonnet-4.5.


3. Schema-guided reasoning z walidacją kroków (zespół NLN7Dw / Ilia Ris)

Schema-guided reasoning (SGR) każe modelowi w każdym kroku wypełnić stały schemat wyjścia, na przykład rozumowanie, plan i następne wywołanie narzędzia, dzięki czemu program może odczytać i sprawdzić każde pole. Artykuł o SGR na tym blogu pokazuje, jak wymusić taki schemat w vLLM. Ten zespół połączył SGR z szybką inferencją i walidatorem każdego proponowanego kroku. Taki projekt czyni poprawki tanimi: odrzuć błędny krok, zanim stanie się wywołaniem narzędzia, a potem poproś główny przepływ o jego przeróbkę z uwagami walidatora.

Model czyta plan, rekordy i skompresowaną historię, zapisuje jeden krok jako schemat, a StepValidator odsyła błędny krok przed jakimkolwiek wywołaniem narzędziaModel czyta plan, rekordy i skompresowaną historię, zapisuje jeden krok jako schemat, a StepValidator odsyła błędny krok przed jakimkolwiek wywołaniem narzędzia

Kluczowe komponenty:

KomponentFunkcja
StepValidatorSprawdza każdy proponowany krok. Jeśli coś jest nie tak, odsyła go do przeróbki z uwagami.
Zarządzanie kontekstemPełny plan z poprzedniej tury plus skompresowana historia starszych tur
Dynamiczne wzbogacanieAutomatycznie pobiera profil użytkownika, projekty, klientów; LLM filtruje, by dodać tylko dane istotne dla zadania
Wrappery automatycznej paginacjiWszystkie endpointy list automatycznie zwracają pełne wyniki

Zespół podał, że uruchamiał gpt-oss-120b na Cerebras z szybkością do około 3000 tokens na sekundę. Zespół połączył walidację z inferencją o wysokiej przepustowości, co mogło zmniejszyć jej koszt w opóźnieniu. Publiczny wynik nie wyodrębnia tego efektu.

Stos: zmodyfikowany agent NextStep, przykładowy agent SGR opublikowany dla ERC3.


4. System wzbogacaczy i strażników (zespół J8Gvbi / @mishka)

To zgłoszenie dodało do bazy SGR nieblokujące podpowiedzi i wielopoziomowy system strażników. Gdy wracały odpowiedzi API, wzbogacacze (enrichers) je analizowały i dodawały do późniejszego kontekstu wskazówki operacyjne. Strażnicy sprawdzali odpowiedź agenta przed jej wysłaniem.

Dwa moduły wzbogacające zamieniają odpowiedzi API we wskazówki, potem trzy tryby kontroli: hard block odrzuca, soft block akceptuje powtórzoną odpowiedź, a soft hint akceptuje ze wskazówkąDwa moduły wzbogacające zamieniają odpowiedzi API we wskazówki, potem trzy tryby kontroli: hard block odrzuca, soft block akceptuje powtórzoną odpowiedź, a soft hint akceptuje ze wskazówką

Ponad 20 wzbogacaczy analizowało odpowiedzi API i dodawało podpowiedzi kontekstowe:

RoleEnricher: "You are LEAD of this project, proceed with update."
PaginationHintEnricher: "next_offset=5 means MORE results! MUST paginate."

System strażników z trzema trybami:

TrybZachowanie
Hard blockOdpowiedź, która według danych API jest niemożliwa, na przykład wskazuje pracownika spoza zespołu projektu, zostaje odrzucona
Soft blockRyzykowna odpowiedź zostaje raz odrzucona z ostrzeżeniem i jest przyjmowana, jeśli agent po tym ostrzeżeniu wyśle ją ponownie
Soft hintWskazówka jest dołączana bez blokowania

Hybrydowa wiki RAG: zespół przeszukiwał lokalną kopię firmowej wiki na trzy sposoby: regex dla uporządkowanych wzorców, takich jak salary|privacy, embeddings sentence-transformer dla dopasowań semantycznych oraz nakładanie się zbiorów tokens jako awaryjne wyszukiwanie słów kluczowych. Moja interpretacja, dlaczego trzy: regex znajduje dokładne nazwy pól i terminy, a embeddings znajdują reguły sformułowane inaczej niż pytanie.

Stos: qwen/qwen3-235b-a22b-2507 na frameworku SGR opartym na LangChain.


5. Plan-execute REPL (zespół 5qsp7i / key_concept_parallel)

Ta architektura trzymała planowanie i pisanie kodu w osobnych wywołaniach modelu. Wygenerowany kod Pythona działa w REPL (read-eval-print loop), czyli sesji Pythona, która zachowuje zmienne między krokami. Pojawiła się w szerszej tabeli Ultimate, a nie w zamrożonej piątce najlepszych zgłoszeń do nagrody. Jej publiczny opis i tak jest przydatny, bo pokazuje inną formę dekompozycji: izolację według fazy wykonania, a nie według roli biznesowej.

Moduł planujący, model kodu, REPL i model decyzyjny wraz z możliwymi wynikami oraz ślad czterech kroków, w którym nowy plan zmienia kroki 3 i 4, zachowując zmienne REPL s1 i s2Moduł planujący, model kodu, REPL i model decyzyjny wraz z możliwymi wynikami oraz ślad czterech kroków, w którym nowy plan zmienia kroki 3 i 4, zachowując zmienne REPL s1 i s2

Różne modele wykonywały różne zadania: jeden planował, drugi pisał kod Pythona, a osobny model decyzyjny wybierał, co zrobić po każdym kroku.

Konfiguracja z wieloma modelami:

EtapModel
Planowanieopenai/gpt-5.1
Generowanie kodudeepseek/deepseek-v3.2
Decyzja po krokuopenai/gpt-4.1
Odpowiedź końcowaopenai/gpt-4.1

REPL ukończenia kroku:

  1. Planista tworzy krok wysokiego poziomu.
  2. Model generujący kod pracuje w świeżym kontekście modelu i pisze dla tego kroku skrypt Pythona.
  3. Skrypt wykonuje się w REPL przypisanym do zadania, którego zmienne są zachowywane między krokami.
  4. Model decyzyjny patrzy na wynik i wybiera jeden z czterech wyników: kontynuować następnym krokiem, zakończyć, bo zadanie jest wykonane, przerwać, bo się nie udało, albo zaplanować od nowa.

Ścieżka ponownego planowania to pomysł wart ponownego użycia. Gdy wynik kroku pokazuje, że plan już nie pasuje, model decyzyjny może zachować ukończoną pracę i przepisać tylko pozostałe kroki planu. Na diagramie zakończenie sukcesem i porażką mają jedno wspólne wyjście do odpowiedzi końcowej.


Wzorce powtarzające się w zgłoszeniach

Implementacje się różniły, ale kilka kwestii inżynierskich pojawiało się w publicznych opisach wielokrotnie.

Zarządzanie kontekstem było jawne

Żaden zespół nie mógł dać modelowi wszystkich reguł, rekordów i poprzednich kroków bez podjęcia decyzji o polityce. Systemy różniły się tym, gdzie filtrowały informacje: przed uruchomieniem, przy wyszukiwaniu albo w historii. Diagram dzieli kontekst modelu na cztery części i pokazuje, która polityka kontroluje każdą część, kiedy działa i które zespoły jej używały.

Kontekst podzielony na reguły wiki, rekordy, wyniki wyszukiwania i historię tur; każda część ma politykę, moment jej działania oraz zespoły, które jej używałyKontekst podzielony na reguły wiki, rekordy, wyniki wyszukiwania i historię tur; każda część ma politykę, moment jej działania oraz zespoły, które jej używały

StrategiaPodejścieNajlepsza do
Wyodrębnianie regułWstępne przetworzenie reguł wiki na zwięzłe instrukcje z zachowaniem ograniczeńZwięzłych prompts, szybkiego startu
Wstępne ładowanie danychŁadowanie danych użytkownika/projektu/klienta przed wykonaniemOgraniczania liczby wywołań narzędzi
Hybrydowy RAGStrumienie wyszukiwania: regex + semantyczne + słowa kluczoweZłożonych potrzeb wyszukiwania
Kompresja historiiOstatnie tury w całości, starsza historia skompresowanaDługich rozmów

Kompromis: NLN7Dw kompresowało starsze tury, a f1Uixf podało, że kompresja historii szkodziła jego eksperymentom, i zachowało całą rozmowę. Traktuj kompresję jako zmierzony wybór, a nie ustawienie domyślne. Mocne zgłoszenia różniły się też rozmiarem tekstu prompt. Kc7F2N (3. miejsce w nagrodach) zachowało minimalne własne instrukcje, polegało na destylowanych regułach wiki, a narzędzia wyszukiwania zbudowało z użyciem embeddings. MMzXeM (4. miejsce w nagrodach) utrzymało główny prompt na poziomie 320 tokens i schowało całą wiki za narzędziem ask_wiki, które korzystało z cache’owania kontekstu, by pozostać tanim.


Kontrole przed główną pętlą, w jej trakcie i po niej

Kilka zespołów umieściło kontrole przed główną pętlą, w jej trakcie lub po niej. Te kontrole potrzebują innych danych na różnych etapach. Wspólna implementacja może je wykonywać, jeśli na każdym etapie otrzymuje właściwe dane wejściowe. Krytyk wywoływany tylko dla końcowej odpowiedzi nie może zapobiec wcześniejszemu nieautoryzowanemu wywołaniu narzędzia. Diagram umieszcza każdą kontrolę na osi czasu od zadania do oceny i pokazuje, co widzi oraz jakiemu błędowi zapobiega.

Oś czasu od zadania do oceny: kontrola bezpieczeństwa przed pętlą, kontrola kroku w pętli i kontrola odpowiedzi w trzech trybach po pętli; każda pokazuje, co widzi i jakiemu błędowi zapobiegaOś czasu od zadania do oceny: kontrola bezpieczeństwa przed pętlą, kontrola kroku w pętli i kontrola odpowiedzi w trzech trybach po pętli; każda pokazuje, co widzi i jakiemu błędowi zapobiega

Typ guardrailKiedyPrzykład
Kontrole przed wykonaniemPrzed startem głównej pętliSecurity Gate Agent sprawdza uprawnienia względem reguł wiki
Walidatory w pętliW trakcie rozumowaniaStepValidator sprawdza każde proponowane działanie, w razie błędu wymusza przeróbkę
Strażnicy po wykonaniuPrzed końcowym wysłaniemSystem strażników z trzema trybami sprawdza odpowiedź agenta względem danych API i polityki

Wrappery narzędzi

Kilka zespołów zmieniło warstwę narzędzi widzianą przez model zamiast dodawać instrukcje o surowym API:

  • Auto-paginacja: NLN7Dw usunęło paginację ze wszystkich narzędzi. Jedna funkcja przechodzi po wszystkich stronach i zwraca pełną listę.
  • Rozmyta normalizacja: parsery narzędzi J8Gvbi odwzorowują ludzkie sformułowania na nazwy API, więc „Willingness to travel” staje się polem will_travel.
  • Czyszczenie schematów: f1Uixf usunęło nieużywane pola ze schematów narzędzi i rozbudowało opisy parametrów. NLN7Dw przebudowało Req_LogTimeEntry, jedyne narzędzie SDK, którego pola szły w innej kolejności, bo ta kolejność myliła model.
  • Narzędzia do rozumowania: xoDvsa (7. miejsce w nagrodach, 0.515) dodało narzędzia plan, think i critic do zwykłego agenta ReAct. Narzędzie critic zwraca ustrukturyzowane dane wyjściowe z dedykowanymi polami rozumowania.

Wrapper ukrywa paginację przed modelem: agent prosi o listę raz, a list_all podąża za next_offset, aż osiągnie wartość -1, oznaczającą koniec w oficjalnym przykładzie ERC3. Poniższy kod ilustruje krok 1 kolejności wdrażania na końcu tego artykułu; nie jest kodem żadnego zespołu. respond tworzy linki do encji na podstawie identyfikatorów pobranych przez agenta i odrzuca identyfikator, którego agent nigdy nie widział. Każdy link pochodzi więc z kodu, a wymyślony identyfikator zostaje odrzucony przed oceną.

# Stand-in for the benchmark API: 12 projects, 5 per page.
PROJECTS = [{"id": f"proj_{i}", "name": f"Project {i}"} for i in range(12)]

def call_api(endpoint: str, offset: int = 0, limit: int = 5) -> dict:
    page = PROJECTS[offset : offset + limit]
    more = offset + limit < len(PROJECTS)
    return {"items": page, "next_offset": offset + limit if more else -1}

def list_all(endpoint: str) -> list[dict]:
    """Follow next_offset until the API returns the terminal value -1."""
    items, offset = [], 0
    while offset != -1:
        page = call_api(endpoint, offset=offset)
        items.extend(page["items"])
        offset = page["next_offset"]
    return items

def respond(text: str, entity_ids: list[str], fetched: list[dict]) -> dict:
    """Build required links from IDs; refuse IDs the agent never fetched."""
    known = {row["id"] for row in fetched}
    unknown = [i for i in entity_ids if i not in known]
    if unknown:
        raise ValueError(f"unknown entity ids: {unknown}")
    return {"message": text, "links": [{"id": i} for i in entity_ids]}

projects = list_all("/projects/list")
assert len(projects) == 12  # three pages, one list
print(respond("You lead two projects.", ["proj_3", "proj_11"], projects))

Agent nigdy nie widzi granicy strony, a proj_11 z trzeciej strony jest poprawnym linkiem.


Rodzaje awarii i strukturalne poprawki zgłaszane przez zespoły

Opisy wielokrotnie wspominają awarie, w których agent wywołuje API albo stosuje politykę firmy. Najbardziej użyteczne poprawki przenosiły wymaganie do kodu lub do osobnego kroku walidacji:

Rodzaj awariiOpisPoprawka architektoniczna
Obejście uprawnieńWykonanie zastrzeżonych działań bez sprawdzenia uprawnień użytkownikaSecurity Gate Agent przed wykonaniem; obowiązkowa sekwencja tożsamość → uprawnienia → wykonanie
Brakujące linki do encjiPoprawna odpowiedź tekstowa, ale bez wymaganych linków referencyjnychOsadzony LinkGeneratorAgent w narzędziu odpowiedzi
Niepełna paginacjaPrzetworzenie tylko pierwszej strony wyników listyWrappery auto-paginacji dla wszystkich endpointów list
Pętle wywołań narzędziPowtarzane wywołania z drobnymi zmianamiLimity tur; czytelniejsze schematy narzędzi; wybór modelu przetestowany na rzeczywistym przepływie
Przeładowanie kontekstuWypełnianie kontekstu nieistotnymi sekcjami wikiDestylacja reguł; dynamiczne filtrowanie kontekstu

Dwa raporty uzupełniają wiersz o pętlach. f1Uixf widziało pętle wywołań narzędzi z GPT-5, ale nie z mniejszym modelem Qwen3. NLN7Dw ustawiło zbyt niski limit tur i 5 z 103 zadań nie zostało ukończonych, więc limit tur wymaga zapasu.


Praktyczna kolejność wdrażania

ERC3 to jedna symulowana firma, a nie ogólne badanie ablacyjne agentów. Używaj go jako źródła hipotez projektowych, a następnie testuj je na własnych śladach. Rozsądna kolejność wdrażania to:

  1. Najpierw zadbaj o deterministyczną poprawność API. Paginuj automatycznie endpointy list, normalizuj rozmyte pola, waliduj schematy i generuj wymagane linki wewnątrz narzędzia odpowiedzi.
  2. Dodaj kontrole tam, gdzie błąd jest kosztowny. Weryfikuj tożsamość i uprawnienia przed mutacją; waliduj krok przed wykonaniem tylko wtedy, gdy dodatkowe wywołanie modelu wychwytuje błędy warte swojego kosztu.
  3. Zapisz politykę kontekstu. Zdecyduj, co jest wstępnie ładowane, wyszukiwane, kompresowane albo zachowywane dosłownie. Mierz politykę według wycinków zadań, a nie samą liczbą tokens.
  4. Zamień nieudane ślady w przypadki regresji. Sklasyfikuj błąd, zmień jeden mechanizm i uruchom ponownie dotknięty wycinek. Automatyzuj zmiany w treści prompt dopiero wtedy, gdy ta pętla jest wiarygodna.
  5. Dziel na komponenty, gdy własność staje się jaśniejsza. Osobny komponent jest uzasadniony, gdy może odpowiadać za ograniczenie, używać innego modelu lub narzędzia albo być testowany niezależnie, a nie tylko dlatego, że „multi-agent” brzmi bardziej zaawansowanie.

Poniższy diagram zaczyna się od tego, co widać w śladzie, i wskazuje poprawkę do wypróbowania w pierwszej kolejności. Numery odpowiadają krokom powyżej.

Siedem błędów pokazanych tak, jak wyglądają w śladzie, wraz z pierwszą poprawką do wypróbowania i jej numerem krokuSiedem błędów pokazanych tak, jak wyglądają w śladzie, wraz z pierwszą poprawką do wypróbowania i jej numerem kroku

Źródła