Strona główna / Artykuły

Rozwój napędzany oceną dla agentów AI: kontrakty, ślady i sędziowie

Traktuj oceny jako proces CI/CD dla agentów: prompty wersyjne jako umowy, śledź wykonywania z użyciem OpenTelemetry i Tempo, a następnie testuj za pomocą deterministycznych sprawdzeń oraz sędziego w postaci modelu językowego.

Wydawca: REACTAPP.TOP13 min czytania3072 słów

Źródła: **Eval-Driven Development: A Software Engineering Approach to Production-Grade AI Agents**

Większość zespołów tworzących sztuczną inteligencję agentową wcześnie wpada w pułapkę gotowych frameworki. Poszukiwanie idealnego orkiestratora wydaje się oczywistym pierwszym krokiem, ale ciężkie, abstrakcyjne frameworki okazują się nierozwiązaniem, a niektóre z nich szybko tracą efektywność między kolejnymi wersjami. Automatyzacja przeglądania kodu stworzona bez żadnego frameworka pokazała, jak niewiele jest potrzebne. Brakowało czegoś zapożyczonego z zwykłej inżynierii oprogramowania: evali, które funkcjonują jak CI/CD dla agentów.

Evali nie są uniwersalne i nie ograniczają się wyłącznie do wykorzystania LLM jako sędziego. Prawidłowe ich zastosowanie decyduje o różnicy pomiędzy kruchym narzędziem a systemem gotowym do użycia w produkcji.

Stack tutaj jest celowo otwarty i nie jest powiązany z usługami zarządzanymi przez żadnego konkretnego dostawcę. Pydantic AI to framework agentów – lekka biblioteka oparta na schematach, która nie ingeruje w procesy i traktuje ewaluacje jako funkcję pierwszej klasy. Grafana Tempo z przechowywaniem w S3 przechowuje ślady działania, zamiast platformy zarządzania widocznością, a kod wygenerowany przez AI przeszukuje te ślady i filtrowa je według rodzaju ewaluacji.

Dlaczego większość agentów nie przetrwa w środowisku produkcyjnym

Najwyraźniejszym znakiem systemu agentowego, który nie przetrwa, nie jest model, framework ani pomysłowość użytych promptów. To brak podstawowych praktyk inżynieryjnych. Jeśli agent nie posiada ustrukturyzowanego śledzenia, żadnych ewaluacji, wersjonowania promptów ani zabezpieczeń, jest to jedynie prototyp oparty na intuicji, który z dużym prawdopodobieństwem zawiedzie.

Tradycyjne oprogramowanie uzyskuje ciągłą jakość dzięki pipeline’om CI/CD, testom jednostkowym, testom integracyjnym i testom regresji. W niedeterministycznym świecie agentów typową, fatalną lukią jest brak zautomatyzowanego frameworku do oceny oraz brak zasad bezpieczeństwa operacyjnego. Budowa dojrzałych agentów oznacza powrót do podstaw: otwartej infrastruktury oraz procesu rozwoju opartego na ocenie (Eval-Driven Development, EDD), który może się skalować.

Pipeline produkcyjny

1. Umowa: wersjonuj prompty osobno

Prompty oraz powiązane z nimi pliki stanowią najważniejszą część systemu opartego na agentach, dlatego nie powinny być ukryte w kodzie agenta. Kod to jedynie „ciało” systemu, które dość łatwo jest ustabilizować i wersjonować, podczas gdy prompty stale się rozwijają wraz z ulepszeniami modeli.

Proces rozpoczyna się od kontraktu w wersjach, który określa, co powinno zostać uruchomione: agent, prompt, model oraz polityka oceny.

[
  {
    "agent_id": "financial_market_headlines",
    "version": 1,
    "agent_model": "openai:gpt-4",
    "prompt": "What are today's major financial market headlines?",
    "eval": {
      "contains": ["market"],
      "max_model_requests": 3,
      "min_tool_calls": 1,
      "max_tool_calls": 5,
      "judge_rubric": "The answer should be a useful response to the user's financial markets question. It should summarize market-relevant information, avoid obviously unrelated content, avoid investment advice, and avoid claiming certainty beyond what the retrieved information supports."
    }
  }
]

W tym przykładzie prompt i rubryka są celowo krótkie w celach demonstracyjnych, ponieważ rzeczywiste prompty są zazwyczaj długie i szczegółowe. Umowa łączy prompt z promptem oceny wykorzystującym LLM jako sędziego, a także z kontrolami niezwiązanymi z LLM, takimi jak dopasowanie słów kluczowych za pomocą „contains” oraz określenie minimalnej lub maksymalnej liczby wywołań narzędzi.

2. Czas wykonywania: silnik wykonawczy

Czas wykonywania agenta odpowiada za realizację umowy. Agent wywołuje model, w razie potrzeby korzysta z zewnętrznych narzędzi poprzez MCP i wykonuje właściwą pracę.

Wybór spoczął głównie między LangGraph a Pydantic AI. Python nie jest jedyną opcją – nawet Rust ma bibliotekę w Rig. Jednak szybkość samego języka prawie nie ma znaczenia w porównaniu z czasem oczekiwania na wynik przetwarzania przez LLM oraz czasem połączeń sieciowych z narzędziami MCP, dlatego przewaga ma duży i rozwinięty ekosystem AI w Pythonie. Pydantic AI został wybrany ze względu na pierwszorzędne wsparcie dla procesów oceny.

W środowisku produkcyjnym środowisko wykonawcze zazwyczaj opiera się na Kubernetes. Kuszące jest nadmiernie skomplikowanie rozwiązania poprzez modelowanie każdego agenta jako specjalnego zasobu, ale pętle synchronizacyjne dla szybko zmieniających się zapytań obniżą szybkość działania systemu. Trzymaj środowisko wykonawcze prostym.

3. Warstwa obserwowalności: brak ślepych punktów

Środowisko wykonawcze wytwarza ślady działania, logi, liczniki użycia, wywołania modeli i narzędzi, dane dotyczące opóźnień oraz błędy – wszystko to jest rejestrowane za pomocą OpenTelemetry i przechowywane w systemach takich jak Tempo, Loki i Prometheus. Grafana następnie pokazuje, co system robi w środowisku produkcyjnym.

4. Warstwa oceny: CI/CD dla sztucznej inteligencji

Tutaj wszystko się łączy. Ślady wykonywania z warstwy obserwowalności trafiają bezpośrednio do procesu oceny, gdzie przeciwko rzeczywistym śladom przeprowadzane są dwa rodzaje testów: reguły deterministyczne i oceny nieoddzielne.

Pętla ta nigdy się nie zatrzymuje: zdefiniuj, wykonaj, obserwuj, ocenij, ulepsz, powtórz.

Narzucanie determinizmu systemowi niedeterministycznemu

Ewaluacje dzielą się na dwie grupy. Te deterministyczne można dokładnie przetestować za pomocą zwykłego kodu. Celowo uproszczonym przykładem byłoby poproszenie modelu LLM o dodanie dwóch liczb oraz sprawdzenie odpowiedzi za pomocą testu jednostkowego.

W tym przypadku prompt żąda aktualnych wiadomości z rynku finansowego, co oznacza, że model powinien skorzystać z dostarczonego narzędzia do wyszukiwania w sieci przynajmniej raz. Ta część jest deterministyczna i stanowi przydatny test. A jeśli wynik musi zawierać określone ciągi znaków, można to sprawdzić za pomocą funkcji „Contains”.

Szczegół 1: testy deterministyczne w czasie rzeczywistym

Ten zestaw testów uruchamia aktualnego agenta wobec wersjonowanego kontraktu. Pydantic Evals zawiera funkcję MaxToolCalls oraz narzędzie do sprawdzania ciągów znaków Contains. Brakujące elementy, takie jak MinToolCalls, są dodawane w postaci prostych obudów.

uv run python tests/unittest_eval_agent.py

Ewaluatorzy są dobierani indywidualnie dla każdej sprawy:

evaluators=[
    *[Contains(value, case_sensitive=False) for value in case.eval.contains],
    MaxModelRequests(case.eval.max_model_requests),
    MinToolCalls(case.eval.min_tool_calls),
    MaxToolCalls(case.eval.max_tool_calls),
]

Każdy przypadek jest wykonywany kilka razy, ponieważ modele są niedeterministyczne. Ten sam model z identycznym promptem i ustawieniami może użyć narzędzia w jednym przeprowadzeniu, a pominąć je w innym. Jest to szczególnie widoczne w przypadku tańszych, mniej zaawansowanych modeli, a jeśli choćby dziesięć prób się nie powiedzie, jest to wskazówka, że prompt wymaga więcej szczegółów. Przeprowadzenie z trzema powtórzeniami wygląda tak:

(financial-agent2) alex@pop-os:/ssd/ai_works/financial_agent2$ uv run python tests/unittest_eval_agent.py
Running each eval case 3 time(s)
Evaluating task ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
                               Evaluation Summary: task
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Case ID                             ┃ Metrics               ┃ Assertions ┃ Duration ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━┩
│ financial_market_headlines_v1 [1/3] │ tool_calls: 1         │ ✔✔✔✔       │    18.8s │
│                                     │ requests: 2           │            │          │
│                                     │ input_tokens: 1,325   │            │          │
│                                     │ output_tokens: 278    │            │          │
│                                     │ cost: 0.0564          │            │          │
├─────────────────────────────────────┼───────────────────────┼────────────┼──────────┤
│ financial_market_headlines_v1 [2/3] │ tool_calls: 1         │ ✔✔✔✔       │     8.8s │
│                                     │ requests: 2           │            │          │
│                                     │ input_tokens: 1,195   │            │          │
│                                     │ output_tokens: 82     │            │          │
│                                     │ cost: 0.0408          │            │          │
├─────────────────────────────────────┼───────────────────────┼────────────┼──────────┤
│ financial_market_headlines_v1 [3/3] │ tool_calls: 1         │ ✔✔✔✔       │    13.5s │
│                                     │ requests: 2           │            │          │
│                                     │ input_tokens: 1,292   │            │          │
│                                     │ output_tokens: 388    │            │          │
│                                     │ cost: 0.0620          │            │          │
├─────────────────────────────────────┼───────────────────────┼────────────┼──────────┤
│ Averages                            │ requests: 2.00        │ 100.0% ✔   │    13.7s │
│                                     │ output_tokens: 249.3  │            │          │
│                                     │ tool_calls: 1.00      │            │          │
│                                     │ cost: 0.0531          │            │          │
│                                     │ input_tokens: 1,270.7 │            │          │
└─────────────────────────────────────┴───────────────────────┴────────────┴──────────┘

Warstwa 2: regresja deterministyczna na podstawie śladów

Drugi zestaw nie uruchamia ponownie agenta. Czyta ukończone ślady z Tempo:

uv run python tests/regression_eval_traces.py

Wyświetla ostateczny wynik, liczy liczby fragmentów modelu i narzędzia, znajduje zapisany kontrakt i stosuje te same reguły deterministyczne co wcześniej: zawiera oraz narzędzie musi zostać użyte co najmniej raz. Zapisany wynik wykonywania może pokazywać:

Trace: ff5a53e3392dc26cd0a2890782be70ec
Eval case: financial_market_headlines v1
Status: PASS
Model requests: 2
Tool calls: 1
contains('market'): PASS
MaxModelRequests: PASS
MaxToolCalls: PASS

To tanie i powtarzalne, ponieważ ponownie ocenia dowody, które zostały już zebrane.

Warstwa 3: testy niedeterministyczne z sędzią w postaci LLM

Umowa zawiera również kryteria oceny promptu. To znowu ten sam krótki kontrakt:

[
  {
    "agent_id": "financial_market_headlines",
    "version": 1,
    "agent_model": "openai:gpt-4",
    "prompt": "What are today's major financial market headlines?",
    "eval": {
      "contains": ["market"],
      "max_model_requests": 3,
      "min_tool_calls": 1,
      "max_tool_calls": 5,
      "judge_rubric": "The answer should be a useful response to the user's financial markets question. It should summarize market-relevant information, avoid obviously unrelated content, avoid investment advice, and avoid claiming certainty beyond what the retrieved information supports."
    }
  }
]

Ponieważ sam agent działa na bazie GPT-4, sędzia potrzebuje silniejszego modelu, a w tym przypadku tę rolę pełni GPT-5. On decyduje, czy odpowiedź była przydatna i istotna, czy przesadzała w odniesieniu do tego, co potwierdzają uzyskane materiały, oraz czy zawierała porady inwestycyjne.

Rozbicie kryteriów na kilka poziomów oferuje inną drogę. Proste sprawdzenia typu NLP mogą być przeprowadzane przez słabsze modele, a nawet małe, samodzielnie hostowane rozwiązania, a zbiór takich prostych testów może dać wyniki zbliżone do oceny na wyższym poziomie. To, co jest lepsze, zależy od przypadku użycia oraz od sposobu zaprojektowania testów.

Aby uzyskać głębszą wiedzę, warto przeczytać artykuł z przeglądu „A Survey on LLM-as-a-Judge” (arXiv 2411.15594). W zależności od przypadku użycia ostatecznie będą potrzebne systemy, które oceniają samego sędziego, wykorzystując informacje zwrotne od ludzi lub inne metody.

Suite ładowa ten sam zapisany ostateczny wynik i uruchamia Pydantic Evals LLMJudge z zasadami oceny określonymi w kontrakcie:

LLMJudge(
    rubric=case.eval_case.eval.judge_rubric,
    model=args.judge_model,
    include_input=True,
    score={"evaluation_name": "judge_score", "include_reason": True},
    assertion={"evaluation_name": "judge_pass", "include_reason": True},
)

Oto klasyczny przypadek niepowodzenia wykryty przez sędziego, spowodowany zbyt krótkim i niejasnym poleceniem. Zamiast wywołać narzędzie i podsumować wyniki, model odpowiedział wiadomością, w której prosił użytkownika o sprawdzenie portali z wiadomościami finansowymi.

uv run python tests/regression_llm_judge_traces.py   --sample-percent 50
Trace selection: fetched=1 sampled=1 judging=1 lookback_minutes=1440 sample_percent=50 max_traces=5
Trace case: trace_id=3891f0b8432c9bbcb00e5e8adce1600b agent_id=financial_market_headlines prompt_version=1 answer_chars=207
Judging 1 trace(s) with openai:gpt-5.4
Evaluating task ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
                                                   Evaluation Summary: task
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Case ID              ┃ Inputs               ┃ Outputs              ┃ Scores               ┃ Assertions          ┃ Duration ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ financial_market_he… │ {'trace_id':         │ Today's major        │ judge_score: 0.000   │ judge_pass: ✗       │    469µs │
│                      │ '3891f0b8432c9bbcb00 │ financial market     │   Reason: The        │   Reason: The       │          │
│                      │ e5e8adce1600b',      │ headlines can be     │ response does not    │ response does not   │          │
│                      │ 'agent_id':          │ found on major       │ summarize any actual │ summarize any       │          │
│                      │ 'financial_market_he │ business and finance │ market headlines or  │ actual market       │          │
│                      │ adlines',            │ news outlets         │ provide              │ headlines or        │          │
│                      │ 'prompt_version': 1, │ including CNBC,      │ market-relevant      │ provide             │          │
│                      │ 'agent_model':       │ Yahoo Finance,       │ information; it only │ market-relevant     │          │
│                      │ 'openai:gpt-4',      │ Reuters, and         │ redirects the user   │ information; it     │          │
│                      │ 'judge_model':       │ Bloomberg. For more  │ to news websites. It │ only redirects the  │          │
│                      │ 'openai:gpt-5.4',    │ specific stories,    │ avoids investment    │ user to news        │          │
│                      │ 'prompt': "What are  │ please visit their   │ advice, but it is    │ websites. It avoids │          │
│                      │ today's major        │ websites.            │ not a useful answer  │ investment advice,  │          │
│                      │ financial market     │                      │ to the user's        │ but it is not a     │          │
│                      │ headlines?"}         │                      │ question.            │ useful answer to    │          │
│                      │                      │                      │                      │ the user's          │          │
│                      │                      │                      │                      │ question.           │          │
│                      │                      │                      │                      │                     │          │
│                      │                      │                      │                      │                     │          │
├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼─────────────────────┼──────────┤
│ Averages             │                      │                      │ judge_score: 0.000   │ 0.0% ✔              │    469µs │
└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴─────────────────────┴──────────┘

Poniżej przedstawiono drugi przypadek niepowodzenia. W tym przypadku sędzia mógł popełnić błąd w ocenie, albo kryteria mogą być zbyt niejasne, ponieważ model faktycznie użył narzędzia wyszukiwania MCP i uzyskał przyzwoite wyniki.

uv run python tests/regression_llm_judge_traces.py  --sample-percent 10 --lookback-minutes 30
Trace selection: fetched=1 sampled=1 judging=1 lookback_minutes=30 sample_percent=10 max_traces=5
Trace case: trace_id=38fa3a54134d8818c7d7a5afbf50967e agent_id=financial_market_headlines prompt_version=1 answer_chars=654
Judging 1 trace(s) with openai:gpt-5.4
Evaluating task ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
                                             Evaluation Summary: task
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Case ID            ┃ Inputs             ┃ Outputs           ┃ Scores             ┃ Assertions        ┃ Duration ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ financial_market_… │ {'trace_id':       │ Here are today's  │ judge_score: 0.450 │ judge_pass: ✗     │    441µs │
│                    │ '38fa3a54134d8818c │ major financial   │   Reason: The      │   Reason: The     │          │
│                    │ 7d7a5afbf50967e',  │ market headlines: │ response is        │ response is       │          │
│                    │ 'agent_id':        │                   │ market-related and │ market-related    │          │
│                    │ 'financial_market_ │ 1. Wall Street's  │ avoids investment  │ and avoids        │          │
│                    │ headlines',        │ riskiest trades   │ advice, but it     │ investment        │          │
│                    │ 'prompt_version':  │ are suddenly back │ mostly lists       │ advice, but it    │          │
│                    │ 1, 'agent_model':  │ on top: Chart of  │ article headlines  │ mostly lists      │          │
│                    │ 'openai:gpt-4',    │ the Day - Yahoo   │ and links rather   │ article headlines │          │
│                    │ 'judge_model':     │ Finance           │ than providing a   │ and links rather  │          │
│                    │ 'openai:gpt-5.4',  │ [Link](https://fi │ useful summary of  │ than providing a  │          │
│                    │ 'prompt': "What    │ nance.yahoo.com/) │ the key financial  │ useful summary of │          │
│                    │ are today's major  │ 2. S&P 500        │ market             │ the key financial │          │
│                    │ financial market   │ notches           │ developments.      │ market            │          │
│                    │ headlines?"}       │ record-high close │                    │ developments.     │          │
│                    │                    │ as rate-hike      │                    │                   │          │
│                    │                    │ worries ease -    │                    │                   │          │
│                    │                    │ Reuters           │                    │                   │          │
│                    │                    │ [Link](https://ww │                    │                   │          │
│                    │                    │ w.reuters.com/mar │                    │                   │          │
│                    │                    │ kets/us/)         │                    │                   │          │
│                    │                    │ 3. Treasury       │                    │                   │          │
│                    │                    │ yields rise as    │                    │                   │          │
│                    │                    │ U.S. threatens    │                    │                   │          │
│                    │                    │ Iran with more    │                    │                   │          │
│                    │                    │ economic          │                    │                   │          │
│                    │                    │ sanctions - CNBC  │                    │                   │          │
│                    │                    │ [Link](https://ww │                    │                   │          │
│                    │                    │ w.cnbc.com/)      │                    │                   │          │
│                    │                    │ 4. Latest stock   │                    │                   │          │
│                    │                    │ market, financial │                    │                   │          │
│                    │                    │ and business news │                    │                   │          │
│                    │                    │ - MarketWatch     │                    │                   │          │
│                    │                    │ [Link](https://ww │                    │                   │          │
│                    │                    │ w.marketwatch.com │                    │                   │          │
│                    │                    │ /)                │                    │                   │          │
│                    │                    │ 5. Latest finance │                    │                   │          │
│                    │                    │ and stock market  │                    │                   │          │
│                    │                    │ news covering the │                    │                   │          │
│                    │                    │ Dow, S&P 500,     │                    │                   │          │
│                    │                    │ banking,          │                    │                   │          │
│                    │                    │ investing and     │                    │                   │          │
│                    │                    │ regulation - WSJ  │                    │                   │          │
│                    │                    │ [Link](https://ww │                    │                   │          │
│                    │                    │ w.wsj.com/finance │                    │                   │          │
│                    │                    │ )                 │                    │                   │          │
├────────────────────┼────────────────────┼───────────────────┼────────────────────┼───────────────────┼──────────┤
│ Averages           │                    │                   │ judge_score: 0.450 │ 0.0% ✔            │    441µs │
└────────────────────┴────────────────────┴───────────────────┴────────────────────┴───────────────────┴──────────┘mar

Przeprowadzanie tego rodzaju testów na każdym śladzie działania może być zbyt kosztowne i wolne. Lepszą opcją jest losowe próbkowanie. Tam, gdzie produkt umożliwia zbieranie opinii użytkowników, identyfikator śladu może bezpośrednio wskazać na komponenty w procesie, które zadziałały błędnie, i tylko one są testowane. Produkty komercyjne takie jak LangSmith i Arize Phoenix obejmują to funkcjonalnością, ale backend S3 w połączeniu z tą architekturą zapewnia takie same możliwości, a istnieje również konfiguracja docker compose do tego celu.

Po początkowych testach jednostkowych staje się jasne, że zarówno prompt, jak i kryteria oceny wymagają aktualizacji, w związku z czym kontrakt przechodzi do wersji 2:

  {
    "id": "financial_market_headlines",
    "version": 2,
    "agent": "websearch",
    "prompt": "Use the web-search tool to find and verify today's major financial-market headlines. Report the 3 to 5 most consequential developments across equities, rates, currencies, commodities, or macroeconomic policy. For each item, state what happened, identify the affected market or region, explain briefly why it matters, and name the source with a link when available. Include the relevant date and units for numerical claims. Cross-check any surprising index level, percentage move, policy decision, or economic release against a second reliable source; if it cannot be verified, omit it or clearly label it as unconfirmed. State when the information was current, distinguish facts from developing reports or interpretation, and say when reliable current information is insufficient. Do not invent facts, present stale information as today's news, or give personalized investment advice.",
    "contains": ["market"],
    "max_model_requests": 4,
    "min_tool_calls": 1,
    "max_tool_calls": 7,
    "judge_rubric": "The response should provide 3 to 5 current, consequential financial-market developments based on web research. Each item should identify what happened, the affected market or region, why it matters, and its source, preferably with a link. Numerical claims should include meaningful dates and units; surprising figures should be corroborated by a second reliable source or explicitly marked unconfirmed. The answer should state when the information was current, distinguish verified facts from developing reports or interpretation, and acknowledge insufficient evidence rather than inventing details. It must stay relevant, avoid stale news presented as current, avoid unsupported certainty, and avoid personalized investment advice. A polished but uncited answer containing an implausible or unverifiable market figure should fail."
  },

Od wzorca do pipelineu wypuszczania

Gdy każdy ślad prowadzi z powrotem do odpowiedniego kontraktu, pipeline wypuszczania może przy każdym etapie brać pod uwagę różne rodzaje dowodów, co mówi więcej niż sama stopa poprawności. Wypuszczenie powinno być oceniane według kilku kryteriów:

  • czy zadanie zakończyło się sukcesem
  • jaka jest semantyczna jakość wyniku
  • czy narzędzia zostały użyte prawidłowo
  • zgodność z zasadami bezpieczeństwa
  • koszt w postaci żądań i tokenów
  • opóźnienia i niezawodność

Dalsza lektura

Blog inżynieryjny Anthropic zawiera artykuł na temat sposobu działania ocen dla agentów AI pod adresem https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents, który omawia szerszy kontekst.

Powiązana lektura

  • Ocena agentów i nawyków w praktyce: trajektorie, narzędzia oceny, pass^k oraz inne przydatne narzędzia — Jak oceniać agentów i nawyki: zestawy akcji i ich wykonywanie, kolejność używanych narzędzi oceny, precyzja i dokładność, pass@k kontra pass^k, mały zestaw narzędzi w Pythonie oraz rekomendacje co do wyboru narzędzi.
  • Od ocen do agentów samodoskonalących się: pięć etapów ewolucji oceny agentów — Ocena agentów polega obecnie na analizie śladów ich działania. Dowiedz się, jak sprawdzania deterministyczne, modele LLM i mechanizmy oceny agentów, diagnostyka oraz specjalne narzędzia tworzą bezpieczny cykl doskonalenia.
  • Praktyczne notatki: Agencyjny SDLC: Jak AI przekształca rozwój oprogramowania — Szczegółowy przewodnik po Praktycznych notatkach: Agencyjny SDLC: Jak AI przekształca rozwój oprogramowania: umowy, sprawdzenia oraz gotowe elementy kodu dostępne dla zespołów wdrażających ten model.