Распрацоўка праз ацэнкі для AI-агентаў: кантракты, трасы і суддзі
Ацэнкі як CI/CD для агентаў: версіянуйце промпты як кантракты, трасіруйце запускі праз OpenTelemetry і Tempo і тэстуйце дэтэрмінаванымі праверкамі і LLM-суддзём.
Крыніцы: **Eval-Driven Development: A Software Engineering Approach to Production-Grade AI Agents**
Большасць команд, які ствараюць AI-агентаў, рана падпадаюць у пастку стандартных фрэймворкаў. Пошук ідэальнага керуючага выглядае як явны першы крок, але масівныя, абстрактныя фрэймворкі віявляюцца не рашэннем, а дзеянні дзеяльнасці дэякіх з іх швыдка падупае між выданнямі. Автаматызацыя перагляду коду, створаная без жадных фрэймворкаў, паказала, як мало ўсё-такі трэба. Таго, чаго не хватала, было ўзятае з звычайнай інжынерыі прыладоў: эвалюацыі, якія функцыонуюць як CI/CD для агентаў.
Эвалюацыі не ёсць універсальнымі, і яны не ўсё час выступаюць у ролі LLM-суддзі. Правільнае ўпрацоўванне іх — гэта разлік межаў між нестабільным прыладам і сістэмай прыемнага рангу.
Гэтая стак-структура ўмышлена ў фармаце адкрытага кода і не прыўязана да служб, кераваных якім-небудзь конкрэтным постачальнікам. Pydantic AI ёсць фрэймворк для агентаў – лёгкая бібліятэка, якая спачатку фокусуецца на схемах, не перакрывае іншыя функцыі і розглядае працэсы ацэнкі як важлівую функцыю. Grafana Tempo з ахованнем у S3 зберагае логі дзеяння, заменяючыся такім чынам платформай для керавання станамі сістэмы, а код, створаны за дапамогою AI, аналізуе гэтыя логі і фільтруе іх па тыпу кожнай ацэнкі.
Чаму большасць агентаў не вытрымаюць у рэальных умовах
Найболей явным знакам таго, што агентскія сістэмы не будуць працаваць довга, яе не ўмоўкі модэля, фрэймворка чы інтэлігентнасць запітоў. Гэта відсутнасць базовых інжынерных практык. Калі у агента няма структураванага аналізу дзеяння, няма процэсаў ацэнкі, няма версіявання запітоў і няма механізмаў захоплення, то гэта лішыцца концэпцыяй, практычна неспроможной да функцыонавання.
Традыцыйныя програмы здобляюць стабільнае якосць за дапамою пайплайнаў CI/CD, тэстаў на елементарную працэснасць, тэстаў інтэграцыі і тэстаў рэгрэсіі. У недэтэрміністычным свеце агентаў звычны фатальны недастатак — гэта відсутнасць автаматызаванай сістэмы ацэнкі паўнасці, а таксама відсутнасць правілаў керавання ўрабоцункамі. Стварэнне зрэлых агентаў значыць вярнуцца да асновных прынцыпаў: відкрытай інфраструктуры і працэсу разработкі, керованага ацэнкай (Eval-Driven Development, EDD), які можа масштабавацца.
Пайплайн вырабоцкі
1. Контракт: версіяваць запіты окрэма
Запіты і асоўваныя з імі элементы ўсё бол важлівая частка агентскай сістэмы, таму іх не трэба хаваць у кодзе агента. Код — гэта проста тэла сістэмы, якое досыць лёгка стабілізаваць і версіяваць, тады калі запіты продовжваюць развівацца ў меру прагрэсу модэляў.
Гэтая паіплайн-сістэма запускаецца з версіяванага кантракта, які чытальна паказвае, што трэба запускаць: агента, запрос, мадэль і правілы ацэнкі.
[
{
"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."
}
}
]
У цій прыкладнай версіі запіт і крэтырыяркі спецыяльна зроблены короткімі для дэманстрацыі, адколькі рэальныя запіты зазвычай ў довгім і дэталізаваным фармаце. Контракт паў’язуе запіт з запітом для ацэнкі за дапамогою LLM як судды, а таксама з пераконтрацямі, якія не выконваюцца за дапамогою LLM, напрыклад, падбор ключоўых слоў за дапамогою оператара „contains“ і вялічыны мінімальнага чыста максымальнага колькісці вызываў інструментаў.
2. Час выканання: двухэтапны механізм
Час выканання агента выконвае контракт. Ён вызывае мадэль, пры неабходнасці выкарыстоўвае зовнішні інструменты праз MCP і выпрацоўвае саму працу.
Выбор здарыўся пераважна між LangGraph і Pydantic AI. Python не ўсё ж такі ўнікальны варыянт — нават у Rust ёсць бібліятэка Rig. Але чыстая швальнасць мовы практычна не мае значэння паўстаўна з часам чакання на вычысленне LLM і сеансамі зв’язку з інструментамі MCP, таму перамагае велікі і розвіты экасістэм AI для Python. Pydantic AI быў выбраны завдзяк сваёй першасортнай падтрымцы процэсаў ацэнкі.
У працэйнай супэрвізіі рантайм зазвычай выкорыстоўваецца на базе Kubernetes. Існуе спакуса занадто дакладна спраектаваць сістэму, пры якой кожны агент прыродзіцца як спецыяльны рысурс, але гэта зменшыць швальнасць работы праз неабходнасць стварэння ціклавых процэсаў для супрацоўкі з быстра ўзмінюючыміся запітамі. Стараюцца заставіць рантайм простым.
3. Слой стэпанавання: без слепых плясоў
Рантайм выдае трэсы, логі, показнікі выкарыстоўвання, вызовы модэляў і інструментаў, показнікі затрымкі і памылкі; усё гэта фіксуецца за дапамогою OpenTelemetry і зберагаецца ў такіх сістэмах, як Tempo, Loki і Prometheus. Grafana пасля чаго паказвае, што саме робіць сістэма пад час працы.
4. Слой ацэнкі: CI/CD для AI
Сюды ўсё адбываецца. Трэсы выканання з слоя стэпанавання прабіваюць безпосерэдна ў слой ацэнкі, дзе проты рэальных трэсаў адбываюцца два відзэны тэстаў: дэтэрміністычныя правілы і недэтэрміністычныя адгукі.
Цікл ніколі не зупіняецца: задаць, выконаць, стэпанаваць, ацэніць, паспрабаваць паспрабаваць зноў.
Застава дэтэрмінізма ў недэтэрміністычным сістэме
Адзінкі разлічаюцца на два групы. Дэтэрміністычныя можна точна перапрацаваць за дапамою звычайнага коду. Просты прыклад — прабаць LLM запісаць суму двух цяжэй і пераканацца ў правільнасці адпаведзення за дапамою тэста.
У гэтым случае запіт прасіць прынесці новыні фінансовага рынку за сёгодні, тое значыць, мадэль павінна хоць раз скорыстацца заданым інструментам пошуку ў інтэрнэце. Гэта ўжо дэтэрміністычны працэс, які ўтварае корыстны тэст. А калі выходны тэкст павінен міты певныя строкі, можна пераканацца ў ўсёму за дапамою пераканання на наявнасць „Contains“.
Слой 1: жывыя дэтэрміністычныя тэсты
Жывы комплект тэстаў запускае сёгоднішньага агента проты версіяванага контракту. Pydantic Evals включае MaxToolCalls і механізм пераканання на наявнасць тэксту Contains. Недастатковы элементы, такія як MinToolCalls, дадаюцца як простыя обгорткі.
uv run python tests/unittest_eval_agent.py
Атласавальнікія сабіраюцца па кожным случаю:
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),
]
Кожны рэйс выпалюецца колькаразо, таму што мадэлі ўзьмоць неадначныя. Адна і тая ж мадэль з ідэнтычным запросам і настройкамі можа выкорыстаць інструмент у аднам рэйсе, а ў іншам праігнораваць яго. Гэта особліва відчуваецца з дэшавымі, менш спроможнымі мадэлямі, і калі, скажамо, дзесяць рэйсаў не выйдуць, гэта ўскрые, што запросу трэба больш дакладнасці. Рэйс з трыма павтарэннямі выглядае так:
(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 │ │ │
└─────────────────────────────────────┴───────────────────────┴────────────┴──────────┘
Слой 2: дэтэрміністычная рэгрэсія на адпаведнасці з следаў
Другі набор не запускае агента зноў. Ён чытае завершаныя следы з Tempo:
uv run python tests/regression_eval_traces.py
Ён выявляе заканчоўны рэзультат, післячы колькісць фрагментаў модэля і інструмента, знаходзіць запісаны контракт і прыменяе тыя ж дэтэрміністычныя правіла, як і ранейш: наявнасць певных элементаў і прынеймна адна вызовка інструмента. Запісаны запуск можа адзвярнуць:
Trace: ff5a53e3392dc26cd0a2890782be70ec
Eval case: financial_market_headlines v1
Status: PASS
Model requests: 2
Tool calls: 1
contains('market'): PASS
MaxModelRequests: PASS
MaxToolCalls: PASS
Гэта дэшэўка і можна яе павтарыць, адколькі яна зноў ацэнюе паказнікі, якія ужо былі зафіксаваны.
Слой 3: недэтэрміністычныя тэсты з суддзём у вобразе LLM
У контракце таксама ёсць крытэрыя для тэставання запіту. Гэта знову той самы короткі контракт:
[
{
"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."
}
}
]
Пакалькі ўпрацоўкі агента адбываецца на базе GPT-4, таму судды патрэбны моцнейшыя модэлі, і GPT-5 выпалняе гэту ролю. Ён вяршыць, чы рэспанс быў корыстным і рэлевантным, чы не перацінены тыя даныя, якія былі атрыманы, і чы не містыцца ў яму інвестыцыйныя рэкамендаціі.
Разбіўка крэтэрыяў на калькі роўней дае ўзорак іншага падходу. Простыя пераканальнія на адліканні NLP могу выконвацца на слабейшых модэлях, або нават на маленькіх самастойна хоставаных модэлях, і сукупнаст такіх простых тэстаў можа даць рэзультаты, блізкія да вышэйшага роўня ацэнкі. Калі ўсё гэта лепшая, залежыць ад сцэнарыю выкарыстоўвання і ад таго, як спраектаваны тэсты.
Для глыбэйшага розумення паслужыць нарадчый артыкул „A Survey on LLM-as-a-Judge“ (arXiv 2411.15594). Залежна ад сцэнарыю выкарыстоўвання, зрэшты, патрэбны будуць сістэмы, якія будуць ацэнкаваць судду, выкарыстоўваючы людскія адзывы або іншыя способы.
Суітка завантажае той самы зберажаны фінальны рэзультат і запускае Pydantic Evals LLMJudge за правіламі контракту:
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},
)
Ёсць класычны прыклад неудачы, які зазначыў суддзя, вызваный корткім і нечыярым запітам. У зменшэнні на вызыв апарата і падсумавванні рэзультатаў модэль адпавязала паштою, якая прасіла корыстувальніка пераглянуць фінансавыя новынкі.
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 │
└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┴─────────────────────┴──────────┘
Ніжчэй паказана ўзгэлае сітуацыя аббячэння. У гэтым случае судда мог ўжоць зрабіць неправылы вынік, або крытэрыя можаць быць занадта нечысткімі, адколі мадэль дзе-жэ правільна выкарыстоўвала алгорытм пошуку MCP і атрымала прыемныя рэзультаты.
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
Адзіёванне такіх тэстаў для кожнага трагу можа стаць занадта дорогім і повольным. Лепшым выборам ёсць адбір прыкладаў адносна адбытоўна. Калі продукт апранацаваны так, каб можна было збіраць адзывы корыстувачаў, ID трагу можа безпасабільна прывесты да тых элементаў прабегу, дзе былі проблемы, і толькі яны прабуваюцца. Камерчыя продукты, такія як LangSmith і Arize Phoenix, падтрымляюць гэта, але S3-бэкенд у поўнай зусіллі таксама дае такія можлівасці, пры чым існуе таксама настройка docker compose для гэтага.
Пасля пачатковых тэстаў на елементах коду стае ясна, што і запіт, і крытэрыя оцэнкі патрабуюць адкорэктавання, і контракт пераходзіць да версіі 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."
},
З адаптавання шаблона да працэса выпуску
Калі кожны элемент вяртаецца да свага контракту, працэс выпуску можа скарыстаць разныя віды доказаў на кожным этапе, што дае большую інфармацыю, чым проста стопа успеху. Выпуск трэба оцэніваць па кальколькі вімёраў:
- чы задача была выканана успешна
- насколькі якісны ў выходным выніку з сэмантычнай точкі зору
- чы інструменты былі выкарыстаны правільна
- сарабітанне з правіламі і безпека
- вытраты ў відношэніі запытоў і токенаў
- затрымкі і надзеянае сарабітанне
Да дальнейшага чытання
У блогу інжынераў Anthropic ёсць пастаўка пра тое, як працуюць ацэнкі для AI-агентаў, на адрэсе https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents, якая раскрывае шырэйшыя аспекты.
Спадзяючыся чытання
- Развітка на адміністрацыі спецыфікацыяў з выкарыстоўваннем агентаў для кодавання на AI: практычны параднік — Як утрымваць агентыв для кодавання на AI ў межах спецыфікацыяў: чатырыэтапны працэс, файлы AGENTS.md і SPEC.md, ролі калькольнікаў, рэвэлюцыі готовасці і зсувы намеру.
- Інжынерыя агентаў у пяці шарах: ад спецыфікацыяў і паралельных калькольнікаў да правілаў і нагляду — Карпаты назваў пераход за межы класычнага кодавання. Пазнайоміцеся з пяцьма шарамі інжынерыі агентаў: спецыфікацыі, оркестрацыя, кодаваныя правілы, людская пераглядка і можлівасць назірання, а таксама план на тыдзень.