Ад налагоджэння запитоў да цікламі зворатнага зв’язку: DSPy, GEPA і Claude Code
Дазвольце даклэ научыцца, як DSPy, MIPRO, STORM, GEPA, Claude Code і MCP перакладаюць роботу з ШІ з перапісвання запитоў у стварэнне виміроўваных праектаў з екзекувальными цікламі зворотнага зв’язку.
Крыніцы: From Stanford’s DSPy to Anthropic’s Claude Code: AI Engineering Beyond Prompt Engineering
Прывычным рашэннем для слабых рэзультатаў LLM працаваў годзінамі было простае: паспрыягчы запыт і прабавіць зноў. У системах з агентамі запыт часта не ёсць тым элементам, які трэба правіць.
Уявіце баг у працоўным режыме, які з’яўляецца толькі пасля змены налашоўкаў. Перадайце яго двум разным AI-системам. Першая атрымле трэйс выканання праграмы, а таксама рэчыста сформульаваныя інструкцыі і вярне патч. Другая можа ачыніць репазітарый, прачытаць правілы проекту, воспаліць адзінак, змяніць код, запрацаваць тэсты, з’ясавіць, што зламалося, і пачаць зноў.
У обох случаях важлівы ўзор. Тое, што є у другай системе, а няма ў першай, — гэта выконвальны цыкл зворотнага зв’язку.
Калі такі цыклы існуе, формулюванне запиту стае толькі аднам з многіх параметраў. Вы таксама можете налаштаваць спосаб разбівання задачы, тое, што будзе запрашана, якія інструменты ў наявнасці, прыклады, процедуру пераканання, правіла павторных спроб, спосаб ізоляціі выконання, а таксама прыстрой ацэнкі, які вяршыць вынік, чы робота дасканальна.
Гэта тая самая лінія, якая праходзіць ад даследжэнняў Stanford па DSPy, MIPRO, STORM і GEPA да практычнай роботы Anthropic над Claude Code і Model Context Protocol. Гэта не адна архітектура. Аднойчы спільная ідея застаецца: інжынерыя ІІ пераходзіць ад доўнелення адзінаго запиту да стварэння систем, якія дзейнуюць, меркуюць рэзультат і паспрабоўваюць паспрабаваць паўрабіць програму, якая працуе з модэлем.
Запит тепер — аднам параметрам
У прыкладніку, які працуе толькі адназначна, є дужа мало можлівасцей кантролю:
Task → Prompt → Model → Result
Для задач, які можна адмініструвацыя, гэта нормальна. Але система становіцца нестабільной, калі задача выклікае патрэбу ў кальколькох етапах, викорыстоўванні зовнішніх даных, рэальных паслядківах, перакананні чыстоты рашэння чы ў відновленні пасля паслядніх неправільных рашэнняў.
Система, створаная для практычнага выкарыстання, выглядае так:
Task
↓
Program / Planner
↓
Context + Retrieval
↓
Tools + Environment
↓
Execution Trace
↓
Evaluator
↓
Retry, Repair, or Optimize
↓
Result
Сягодні прыкметны рэзультат можа маты многа можлівых прычын. Модель можа не быць дастаткова сілёй. Процес выкарыстоўвання дадзеных могаў запрашаць неправільны контэкст. Планавальнік могаў паспяшна распадзіць заведамыя задачы. Інструмент могаў вернуць застарэлыя дадзеныя. Апрацоўвальнік дадзеных могаў прыйняць некоректны адпаведзенне. Алі ж інструкцыі сапраўды трэба пасправіць.
Таму інжынерыя запрошэнняў не зникае. Яна стае часткай шырэйшай проблемы дыягностикі і оптымізацыі.
DSPy: чыніць програму ясной
Першая значныя ідея DSPy была такой — перастаць спрыяць з процесам, калі LM-пайплайны розглядаюцца як скупка ручна настроеных стрэнгаў запытанняў. У первыях научных працах прыклады застосоўання LM адображаліся як вычынныя графы декларатыўных модуляў, і быў даданы кампіляр, які оптымізаваў гэтыя модулі на адповіднасць певным критэрыям. У ныях дакументах гэта выказана простае: неабходна задаць структураваныя падписы і модулі, падаць прыклады і функцію оцэнкі, а таксама скомпіляваць програму замест таго, каб ручна настраіваць кожны запыт.
Маленькая програма на DSPy выглядае так:
import dspy
class Diagnose(dspy.Signature):
"""Identify the most likely root cause from an issue and repository evidence."""
issue: str = dspy.InputField()
evidence: str = dspy.InputField()
diagnosis: str = dspy.OutputField()
program = dspy.ChainOfThought(Diagnose)
optimizer = dspy.GEPA(
metric=score_diagnosis,
auto="medium",
)
optimized = optimizer.compile(
program,
trainset=historical_incidents,
)
Сінтаксіс — не галоўная прычына. Гэта важліва таму, што чатыры элементы, якія зазвычай з’яўляюцца разам у аднам запите, тепер є окремымі: што павінен стварыць заданне, як яго выконваюць, якія прыклады служаюць кераваннем і як оцінюецца успех.
Это змінюе роботу інжынера. Уместо таго, каб витрачаць усі ресурсы на обгаворэнне таго, чым «быць канцызным» павінна заменіцца фраза «розсудліва адпавядаць», можна задаць кращы вопыт: якія аспекты поведзення павінны падбіцца і як іх вимерыць?
Без значымага показніка аўтаматычная оптымізацыя проста робіць систему кращай для неправильнай мэты.
MIPRO: налаштаванне багацьох стадій — це задача пошуку
Усё стаецца складней, калі працэйная програма складаецца з калькольных модуляў. Возьмем прыклад процесу вылечэння бага, які включае дыягназ, стварэнне патча і яго перагляд, пры чым пасляльні тэсты не працуюць. Калькольны модуль які стаў прычыной? Калькольная інструкцыя якая трэба змяніць? Чы не вводзіць у глухае каліцтва адзін з прыкладаў на канкрэтныя кейсы? Чы могла бы кращая стадія дыягназа пагоршыць процес стварэння патча?
Это ўзначэння крэдытавання, і самэ гэта є метай MIPRO. У статыце па MIPRO ідзе да глыбіні не толькі рэдагаванне адзінаго запиту; там адгукуюцца як напісаныя інструкцыі, так і прыклады на канкрэтныя кейсы кожнага модуля, спалучаючы прыказы інструкцый, якія врачаюць як саму працэйную програму, так і даныя, а таксама ацэнку на міні-пакетах дадзеных і заместны модэль, які направляе пошук да перспективных камбінацый.
У структуре:
Bootstrap useful demonstrations
↓
Propose task-grounded instructions
↓
Search instruction + demo combinations
↓
Evaluate the whole program
За дапамою Llama-3-8B оптымізатор параджаў сваія базовыя значэнні ў пяці з семі багатастадійных праектаў; у найкращым случае было досягнуто падышча на 13% па показніку точнасці.
Гэта менш амбіцыйны тверджэнне, чым «автаматычныя запросы параджаюць людзям». Глэбэйшы вывад — структурны: калі інструкцыі і прыклады стаюць параметрамі багатастадійного праекта, його паспрабоўкі паўрабкі стаюць пошукам у системе, а не працэю над аднай строчкай тексту.
STORM: структура ранейш за оптымізацыю
Жадны оптымізатор не можа вывячыць праблемны працэс. STORM ад Стэнфорда є хорашым прыкладам, адколі яго акцэнт знаходзіцца на тым, як складзецца ланцоўка задач, а не на тым, які запрос будзе кращым.
Адзін модэль, яка выконвае весь абстракцыйны рэшучы і длігі напісанне заодно, — это наўінаватая версія; STORM выдзеляе фазу падготовкі ў самастоятныя крокі. Ён шукае разныя практычныя падходы да тэмы, выкарыстоўвае іх для стварэння запытанняў, апараных у адпаведных джэрэласях, арганізуе засобленаі матэрыял у структуру плану, і толькі пасля чаго прымэшчае текст.
Па супэрнатыўным показнікам, апараным на адной структуре плану, у студзіі адзначаецца абсалютны прырост у організацыі на 25 пацэнтажных пунктав і прырост у шыроте на 10 пунктав. У даследжэнні STORM таксама чыста адзначаюцца меры: створаныя статыі няявяцца гатовымі да публікацыі і часта патрабуюць значнай рэдагуванні.
Урок, які можна вынесці, — гэта не «дадзіце больш агентаў». Це тое, што разбіўка на часткі даўае можлівасць окрема кантролюваць контэкст, доказы, адмаўленне пасля невыпання задач і ўзлік. Перш чым оптымізаваць рабочы процес, пераканайцеся, што яго стадіі адпавядаюць способам, якімі ён на самай працэ паспяшае.
GEPA: вывучыце на уроках таго, што насправды адбылося
Адна аўтарытетная оцэнка можа сказаць вам, што выступ быў сярэдні. Але яна зазвычай не можа паведаміць, чаму. Рэальны выступ залеў за сабой набагато болей цінныя доказы:
input
↓
retrieval choice
↓
reasoning
↓
tool call
↓
tool result
↓
constraint failure
↓
final output
GEPA, які ў складзе слова Genetic-Pareto і была опублікована у ліпені 2025 года, выкарыстоўвае гэты сігнал. Яна бере прыклады траекторыяў выканання, аналізуе іх на адной мове, пропануе правкі запытанняў, оцінюе кандыдатаў і падтрымлівае Парэтоўскія грані, каб не выкидваць допаможныя стратэгіі.
| Порэванне ў старонцы | Звярнуты рэзультат |
|---|---|
| Працаванне проты GRPO, шасць заданняў | у сярэднем на 6% краща |
| Колькість запускаў патрэбна проты GRPO | до 35 разоў менш |
| Працаванне проты MIPROv2 | на 10% краща |
| Точнасць у AIME-2025 | +12% |
У працэйнай суперактыўнасці важліва адна межа. GEPA оптымізуе траекторыі, якія вы вялікі час спазіралі. Гэта не дазвол на тое, каб жывы агент сам сабе перапісваўся пасля кожнага запиту корыстніка. Перш чым будзе запрацоўваць які-небудзь оптымізаваны варіант, яго трэба версіяваць, оцэніваць на прыкладах, над якімі ён ніколі не трэнаваўся, трываць у межах фіксаванага бюджету оптымізацыі і працэсаваць через спецыяльны крок павышэння на адпаведным наборе для ацэнкі. Гэта і є межа межы між корыстным самапраўцаваннем і неконтрольваным самаўтворэннем.
Claude Code: цикл у рэальной средзе
DSPy рашае проблему з боку оптымізацыі програмы. Claude Code падходзіць да яе з боку часу выканання. У парадыгме Anthropic гэта агент, які знаходзіцца ў вашым репазітарыі: ён берае інструкцыі самай проекта, зміняе файлы, выкананяе каманды shell і наборы тэстаў, і постаўляе корэктывы на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчынку на аднойчы
Repository + Project Rules + Task
↓
Model
↙ ↓ ↘
Read Edit Execute
↘ ↓ ↙
Tests / Runtime Evidence
↓
Next Decision
Гэтыя дадзеныя падчас выконання зменяюць тое, што можа робіць модель. Неудачны тэст ёсць кращай адзінкай, чым заповедь «прашам пераглянуць». Канфлікт у компіляторы значна лепшы, чым калі модель сама оцэнюе свае парадкты. Можна механічна пераканацца, чы разлік змян застаецца ў дапустым межах, замест таго, каб запытаць іншую модель, чы змяны маюць адпаведны масштаб.
Внутрашнія паказнікі продуктывнасці компаніі Anthropic цікавыя, але іх лёгка перасценіць. У аналізных звярненнях за 2026 год паказана, што да 2-го кварталу 2026 году кожны інжынер стварае прыблізна у васьма раза больш ліній коду на дзень, чым раней, і там чытна паведамленне, што лініі коду перэцэнююць рэальную продуктывнасць. Гэты період таксама включае значныя змяны як у самых моделях, так і ў Claude Code, таму ція цифра не паказвае, што сама толькі оркестрацыя прынесла гэты прырост. Болей ясны сигнал — сучасныя системы кодавання продовжаюць ператвараць выходы модэляў у дзеянні, абсерваціі, а потым у новыя рашэнні.
MCP сьягоўвае інструменты; ён не керуе імі
Частаючы сабралі MCP з агентамі, выкарыстоўваннем інструментаў і керуванням, нібы то было адно і тое ж. Але гэта не так. Архітектура MCP — цэла спефікацыя кліент-сервера: прыклад АІ падключаецца да сервераў і выявляе, якія інструменты, ресурсы і запиты яны адкрываюць, а потым вызывае іх у аднаковы спосаб. Хост координуе кліенты і несе адпаведальнасць за правыя на доступ, кантэкстнае керуванне, палітіку безпекі і спосаб падключэння LLM.
Такім чынам MCP пакрывае адны слой у большай структуре:
Model capability envelope
Program / graph task decomposition
Context / state what the model can see
Tools / MCP what the system can access or do
Runtime / harness where actions execute
Evaluator what counts as success
Optimizer how the program improves
Observability why a run succeeded or failed
Няма жадной праматры, якая б контролавала все, і самэ гэта ўсёлікавае значэнне працы з системамі.
Оптымізавайце цыкл вылечэння бягоў, а не сам запит
Вернімся да бяга з самага пачатку. У зменшыню да адной інструкцыі, якая кажа "знайці проблэму і яе вылечыць", раскажіце працоўны процес дэтальна:
Issue + Repository
↓
Diagnosis
↓
Patch
↓
Tests + Lint + Runtime Checks
↓
Diff Review
↓
Accept or Revise
Кожны ўрадок зараз дае доказы. Журналы выконання, якія файлы былі прачытаны, якія каманды былі запусцаны, патчы, якія не задаліся, рэзультаты тэстаў і фінальныя разніцы.
Дэтэрміністычныя перакананні абходзяць тое, што можна механічна падтвердзіць: неабяжныя тэсты праходзяць, код застаецца чыстым, забраныя файлы не чапаюцца, а патч застаецца ў сваім дазволеным дыяпазоне. Суджэнне модэлю застаецца для пытанняў, якія ў справе сэмантыкі, напрыклад, чы выявленне пояснюе верагодную прычыну.
З часам практычныя прыклады стаюць наборам для ацэнкі. MIPRO можа шукаць інструкцыі і дэманстрацыі ў модулях дыягназу і рэмонту. GEPA можа взяць неудачныя траекторыі і адзывы атрыбутаў ацэнкі, ўзятыя після выконання, і запропанаваць кращы текст праграмы. Але оптымізацыя належыць за межамы выдання:
Production traces
↓
Curated evaluation set
↓
Offline optimizer
↓
Candidate program
↓
Held-out validation
↓
Controlled promotion
Хтоце месца, дзе нарэшце зустроццася дакларацыя і вырабоцтва. Час адміністрацыі агента стварае дзеянні і следы. Атрыбут прыменяе следы да доказаў. Оптымізатор прыказвае лепшую программу. Процес развяртання выявляе, чым можна безбедна аправіць.
Што гэта значыць для інжынераў AI
Прыказы не сталі нерэлевантнымі. У вас проста ёсць больш корыстных моментаў, калі можна втруціцца. Калі рабочы процес работае неэфектыва, не пачынайце зразу з формулювання. З'ясавайце, який слой не выканаў сваю ролю:
- Чы могла базовая модель узагалі адмахнуцца задання?
- Чы апранаванне прадаст правы контэкст?
- Чы заданне было раздзеленае на разумныя часткі?
- Чы інструменты вернулі доказы, якімы можна даверыць?
- Чы выкананне было ізольаванае і можна было яго спазірваць?
- Чы атрыбут прыменяе меры таго паведання, якое нас насправды цікавіць?
- Чы оптымізатор павышае якасць у тэстовых дадзенах, чы проста падлаяеся пад дадзеныя для разработкі?
Аналіз усія системы таксама адкрывае тыя компрэсіі, якія часта занедбваюцца пад час агітавання. Абгорткі слабага модэлю ў граф не ператварае яго на передавальны модэль. Некалькія метрыкі спрыяюць оптымізацыі неправільнага паведання. Больш адзінакоў значыць больш шляхоў краху і большую плошчу для атак. Кожны запуск оптымізацыі спрацоўвае токены і час для ацэнкі. Найгоршае — агент, які сам сабе правяць без історыі версій і без недастрынутых тэстовых кейсоў, можа стаць болей нестабільным, хоць на паперы выглядае болей незалежным.
Таму вывад не ў тым, што модэль перастаў мяць значэнне. Якосьць модэлю задае верхнюю межу його можлівасцяў. Дизайн системы вяліць, сколькі з тых можлівасцяў ператвараецца на надзеяны робот.
Гэта і ўсё справжнее звяжанне між даследжэннямі Стэнфорда і інструментамі Anthropic. За дапамогою DSPy програма больш не хаваецца ў строчкіх запитаў. MIPRO дазволяе шукать інструкцыі та прыклады на розных этапах. STORM нагадвае, што форма рабочага процесу є першацей. GEPA аналізуе всі следы выканання, каб знайсці способы паспрабоўкі паспрабоўкі. Claude Code размешчае модель у рамках рабочай інжынернай структуры, а стандарт MCP стандартизуе адну з меж з можлівасцямі званавнага сераўера. Разныя проекты на разных роўнях, усе якія вядуць у той самы кірпат.
Калі наступны раз система AI збяжыцца, пытанне «Какі запит мне пробавіць далей?» не павінна быць ўсім, што трэба спытаць. Трэба спытаць, якая частка системы збяжылася, і якія доказы дапаможуць яе парадкаваць.