BlogAgenci AI

Co wersjonować, żeby wynik agenta dało się później wyjaśnić

Wersjonuj wszystko, co może zmienić to, jak agent obsługuje sprawę: model i jego ustawienia, prompty i przykłady, opisy narzędzi i ich kod, reguły biznesowe, dane do wyszukiwania i sam kod workflow. Połącz je w jeden manifest wydania, oznaczaj jego identyfikatorem każdą sprawę i każdy ślad wykonania i przechowuj zapis tego, co agent przeczytał i zdecydował. Gdy ktoś po miesiącach zapyta o wynik, wyjaśniasz go na podstawie tego zapisu. Ponowne uruchomienie sprawy rzadko jest możliwe i nie pokazałoby, co stało się wtedy.

Zaktualizowano

Zachowanie zmienia nie tylko prompt

Zespoły zwykle wersjonują kod, a czasem prompt. Pozostałe elementy zmieniają się niezauważenie, choć każdy może zmienić wynik sprawy:

  • Identyfikator modelu i ustawienia, takie jak effort albo limity odpowiedzi
  • Opisy narzędzi, w których według przewodnika Anthropic o pisaniu narzędzi nawet drobne zmiany sformułowań potrafią wyraźnie przesunąć wyniki
  • Implementacja narzędzia, na przykład serwer MCP wdrażany według własnego harmonogramu
  • Reguły biznesowe i progi, często trzymane w tabeli konfiguracyjnej edytowanej przez zespół operacyjny
  • Indeks wyszukiwania przebudowywany co noc
  • Kod workflow, wersja frameworka i oceniacze w ewaluacjach

Jeden manifest na wydanie

Zbierz te odwołania w jednym pliku generowanym przy wydaniu i przechowywanym razem z kodem. Jego identyfikator staje się wersją agenta. Przykład jest hipotetyczny; odwołania do commitów i wersje to wartości zastępcze.

Manifest wydania dla agenta procesowego (hipotetyczny)
agent: invoice-matching
release: 2026.10.3
model:
  id: claude-sonnet-5-5          # exact ID sent to the provider
  settings: {effort: medium, max_tokens: 4000}
prompt: prompts/invoice-agent.md@3f2a91c
examples: examples/invoice-fewshot.jsonl@3f2a91c
tool_descriptions: tools/descriptions.yaml@3f2a91c
tool_servers:
  erp-mcp: 1.8.2
policy: ap-tolerance-policy v4
retrieval_index: supplier-terms build 2026-10-20
workflow_code: 3f2a91c
lockfile: uv.lock@3f2a91c
test_set: invoice-cases v12, passed 2026-10-21

Oznaczaj wydaniem każdy rekord sprawy i każdy span. Konwencje semantyczne OpenTelemetry dla spanów agentów zawierają do tego atrybut gen_ai.agent.version, wciąż ze statusem Development. Zapisuj dokładny identyfikator modelu, który wysyłasz. Przegląd modeli Anthropic mówi na przykład, że każdy aktualny identyfikator modelu Claude to przypięty snapshot, a jednocześnie podaje daty wycofania, co jest kolejnym powodem, by nie liczyć na późniejsze uruchomienie starej wersji.

Rekonstrukcja to nie odtworzenie

Żeby później wyjaśnić sprawę, potrzebujesz wydania, danych wejściowych w postaci, w jakiej przeczytał je agent, każdego wywołania narzędzia z wynikiem, odpowiedzi modelu i wszystkich decyzji ludzi. Checkpointy w tym pomagają. W LangGraph każdy checkpoint zawiera wartości stanu, metadane, znacznik czasu i odwołanie do poprzedniego checkpointu, a get_state_history wymienia je dla danego wątku.

Odtworzenie to coś innego. Ta sama dokumentacja wyjaśnia, że wznowienie od wcześniejszego checkpointu ponownie uruchamia późniejsze węzły, w tym wywołania modelu i żądania API, więc powstaje nowy przebieg na dzisiejszych systemach. Zapisany rekord służy do wyjaśniania przeszłości, a ponowne uruchomienia na bieżącym wydaniu do testów regresji. Zauważ też, że dokumentacja persistence w LangGraph zaleca czyszczenie checkpointów albo politykę retencji, więc retencję potrzebną do wyjaśnień trzeba ustalić świadomie.

Sprawy, które obejmują zmianę wydania

Sprawa wstrzymana w poniedziałek do akceptacji może zostać wznowiona po środowym wydaniu. Silniki trwałych workflow traktują to jako znany problem. Dokumentacja Temporal wyjaśnia, że kod workflow musi być deterministyczny na potrzeby odtwarzania, że dodanie, usunięcie albo przestawienie niektórych kroków bez wersjonowania powoduje w działających workflow błąd niedeterminizmu i że do obsługi takich zmian służą worker versioning i patching.

Niezależnie od frameworka wybierz regułę: sprawy w toku albo kończą się na wydaniu, na którym się zaczęły, albo przechodzą na nowe przez jawną migrację zapisanego stanu. Zapisuj wydanie przy każdym kroku, nie tylko przy sprawie, żeby dało się wyjaśnić także sprawę mieszaną.

Typowe luki

Luki zwykle leżą poza głównym repozytorium: prompt edytowany w konsoli dostawcy, serwer narzędzi wdrażany przez inny zespół, próg zmieniony w bazie danych, indeks odświeżany w nocy. Każdą z nich trzeba albo włączyć do manifestu, albo zapisywać przy każdej sprawie z użytą wartością. Traktuj każdą zmianę wpisu w manifeście jako wydanie, które przechodzi przez zestaw testowy. Przydatny pierwszy krok to spisanie manifestu dla agenta, którego dziś uruchamiasz, i zaznaczenie każdego pola, którego nie umiesz wypełnić.

Pytania

Czy musimy umieć dokładnie powtórzyć starą sprawę?

Zwykle się nie da: odpowiedzi modeli się różnią, modele są wycofywane, a systemy, które czytał agent, się zmieniły. Celem jest wyjaśnienie sprawy na podstawie zapisanego rekordu i ponowne uruchomienie jej na bieżącym wydaniu, gdy chcesz wiedzieć, jak agent zachowuje się dziś.

Czy każda drobna zmiana promptu naprawdę wymaga nowego wydania?

Wymaga nowej wersji i przebiegu zestawu testowego, a oba kroki da się zautomatyzować i utrzymać tanio. Proces nie musi być ciężki. Ważne, żeby żadna zmiana nie trafiła do prawdziwych spraw bez identyfikatora, który później da się odnaleźć.

Jak długo przechowywać te zapisy?

Tak długo, jak możesz musieć wyjaśnić decyzję, a to zależy od procesu i twoich obowiązków. Zapisy często zawierają dane osobowe, więc okres ustal z doradcami do spraw zgodności i ochrony danych, zamiast zdawać się na domyślne ustawienie narzędzia.

Porozmawiaj z inżynierem

Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.

Rezerwacja odbywa się w Kalendarzu Google.

Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.

Przycisk przygotowuje e-mail w twoim własnym programie pocztowym, a wysyłasz go samodzielnie. Polityka prywatności (wersja robocza)