Практычныя прытамулкі: Loop Engineering проты Graph Engineering: Змена архітектуры
Практычныя прыказкі: Інжынерыя циклаў проты інжынерыі графаў: Змена архітектуры: кантракты, пераказы і месцы для коду для команд, якія выкарыстоўваюць гэты патэрн.
У гэтым керавану практычна адбудова маршруту ад сыр'ёў да рабочай системы для: Loop Engineering протыва Graph Engineering: Змена архітектуры, якая тыха перакаштоввае AI-агентаў. Акцэнт ставіцца на крокі, якія можна выконваць, чыстае перакананне і код, які можна падставіць у репозытарый без неабяснення меты. У стадії агульнага відзору неабходна з'явіць вхідныя даны, адпаведальнага за крок і критэрыя завершэння прычыму перад зменай коду. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю без неабяснення схованага стану. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераў, хранільнікі секрэтных дадзеных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без чытання всіх элементаў структуры.
Змест
Калі працюеце над стадзіяй Кантэксту, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неякшання. Такі список пераконтроўкаў дапамагае заліцвачваць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткаю продукту, а не пазнейшым дапрацоўкам. Зробіце пераконтроль пасля дорогіх крокаў. Система вярнення не павінна знову ставіць рахунак за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
1. Проблема з тым, як мы ствараемі агентаў AI
Калі працюеце над стадзіяй «1. Проблема», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцвачваць змяны коду пазнейша. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказваць на адзіну абяжлівасць, а не на заплутаны ланцужок задач. Зробіце пераконтроль пасля дорогіх крокаў. Програма не павінна зноў стаўіць плата за той самы вызов LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
2. Спачатку — простая аналагія
Калі працуеце над простым этапам «2 First», спачатку запісайце угоду: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрэтывайцеся да гэтага этапу як да угоды межа даннімі і перакананымі выходамі. Дайце назвы элементам, задаце правіла пераканання успеху і не падзейцеся частковым завершэнням без паведамлення. Зробіце перапытку пасля дорогіх крокаў. Система вярнення не должна зноў ставіць плату за той самы вызов LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працуеце над простым этапам «2 First», спачатку запісайце угоду: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Зберагаеце настройкі паза кодам прыемніка. Файлы сераў, хранільнікі секрэтных данных і флагі функций должны знаходзіцца ў аднам месцы, куда аператары можаць адбавляць контроль, не чытаяўшы весь граф.
3. Што такое інжынерыя ціклу?
Этап «3 What is Loop» працюе найкраща, калі яго розглядаць як вимерную паверхню. Зафіксавце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў ёсць частью продукту, а не пасляднім дапрацоўкам. Храніце стан графа у простым і типаванам формате. Вярнутыя структуры маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакоююць продовжэнне выканання пасля перарываў.
4. Архітектура інжынерыі циклаў
Этап архітектуры інжынерыі 4 Loop працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная версія, адзін прыклад неудачы і заўважэння па поверненню да пачатковага стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты роботы графа трэба зберагаць у простаму, типаваным формате. Вярнутыя структуры маскуюць інфармацію пра тое, який вузел запісаў канкрэтны поле, і спакоююць працу пасля перерываў.
def run_agent(task: str, tools: list, max_iterations: int = 10) -> str:
context = [{"role": "user", "content": task}]
for step in range(max_iterations):
response = llm.generate(context, tools=tools)
if response.is_final_answer:
return response.content
tool_result = execute_tool(response.tool_call)
context.append({"role": "assistant", "content": response.content})
context.append({"role": "tool", "content": tool_result})
return "Stopped: max iterations reached"
5. Што такое інжынерыя графа?
Этап «5 Чаго ёсць Граф» працуе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагучы адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Спрыяйце гэтым этапам як кантракту межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Храніце стан Графа у простам і типаваным формате. Вярнутыя структуры дадзення маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакшваюць возз'яднанне пасля перарываў. Этап «5 Чаго ёсць Граф» працуе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагучы адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Храніце настройкі параду ўнутры коду прыкладнага програма. Файлы сяродавішча, хранальнікі секрэтных дадзенняў і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабходнасці чытання всего Графа.
Чаму гэта ўплывачна
На стадії аналізу прычын такой моці, перш чым зменяць код, неабходна дэфініцыя вхідных даных, адпаведальнага за крок і крэтарыяў завершэння. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не яго пазнейшай дапрацоўкі. Неабходна людзкая аправарэнне для тых крокоў, якія выкарыстоўваюць грошы або зменяюць даны варабочага сервісу. Працэс кампайлявання не є адпаведніком повноты бізнес-функцый.
6. Архітэктура інжынерыі графаў
Для 6-й стадзіі архітектуры інжынерыі графаў неабходна практычна вызначыць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння пры зміне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі крок не выкананы, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес. Неабходна людская апраўда для тых крокаў, якія выкарыстоўваюць грошы чы зміняюць даны ў працэсе. Компіляцыйныя налашчэння не ўзроўнаўцуюцься з повнай адпаведальнасцю ў бізнесе.
from graph_engine import StateGraph, START, END
def router(state: dict) -> str:
return state["task_type"] # "research" | "code" | "review"
def research_agent(state: dict) -> dict:
state["results"]["research"] = do_research(state["query"])
return state
def code_agent(state: dict) -> dict:
state["results"]["code"] = write_code(state["query"])
return state
def review_agent(state: dict) -> dict:
state["valid"] = validate(state["results"])
return state
def aggregator(state: dict) -> dict:
state["final_output"] = merge(state["results"])
return state
graph = StateGraph(schema=AgentState)
graph.add_node("router", router)
graph.add_node("research_agent", research_agent)
graph.add_node("code_agent", code_agent)
graph.add_node("review_agent", review_agent)
graph.add_node("aggregator", aggregator)
graph.add_conditional_edges("router", {
"research": "research_agent",
"code": "code_agent",
"review": "review_agent",
})
graph.add_edge(["research_agent", "code_agent", "review_agent"], "aggregator")
graph.add_conditional_edges("aggregator", {
"valid": END,
"invalid": "router", # explicit retry edge
})
app = graph.compile()
app.invoke({"query": "...", "results": {}, "task_type": "code"})
Циклы проты графаў: паралельныя порэвананні
Для этапа «For the Loop проты Graph Side-by-Side» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры выходу пры перадзмене коду. Аператары должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрацавваць з гэтым этапам як з кантрактом межа вхіднымі данымі і падтвердзенымі выходнымі рэзультатамі. Даць назвы артыфактам, прадзефінаваць перагляды успеху і адмовіцца ад беззвучнага частковага завершэння. Заставіць людзкую апраўдку для тых канектаў, якія витрачаюць грошы або зменяюць даны прадукцыі. Працэс складання коду не ўзроўнаважваецца з абсягам выпанення бізнес-задач.
7. Змена прагляду: чаму промысел пераходзіць з Loop на Graph
Для стадіі 7 «Змена прагматыкі» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры перадзначэнні коду. Аперацыйныя працавнікі должны магчыма ўвайсці крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і вартасць токенаў або запытак па боку функцыйнальных рэзультаатаў. Відразлівае паказанне вартасцей запобегае неспадзяваным рахункам, калі траекторыя пераходзіць з дэмавайнага сераўера у спяльныя сераўеры. Заставіце людзкую апрацоўку для тых крокаў, якія витрачаюць грошы або зменяюць даны ў працэсе. Компіляцыйныя налаштаванні не ўзначаюць пачатковай готовасі рашэння для бізнесу.
1. Задачы рэальнага свету не ўздоўж адной прямой лініі
Для адаптавання 1 задачы рэальнага свету на практычны ўровень неабходна спачатку адзначыць вхідныя даны, адпаведальнага за кожны крок і критэрыі завершэння, прычаму змянюваць код. Аператары должны магчымае перайсці на гэты крок з вядомага пункта контролю, не прыпускаючы стану, які залишаецца незрозумелым. Канфігурацыю трэба захаваць пазнаходзіцца за межамі коду прыемліка. Файлы сераўнавання, хранальнікі секрэтных данных і флагі функцыйяў должны быць аднароджаны ў аднам месца, куда аператары можуць адбавіць аудыт, не чытаючы весь код. Неабходна людская апрацоўка для тых рэшэнняй, якія выкорыстоўваюць грошы або зміняюць даны, якія викорыстоўваюцца у працэсе. Прыемліванне параметраў пад час компіляцыі не є гарантіяй полнай адпаведнасці прыемліка бізнес-трэбаванням.
2. Сістэмы з калькольнікамі агентаў патрабуюць кращай структуры
Для стадіі, якая выкалікаеся для 2 систем з калькольнікамі, перш чым зменяць код, неабходна адзначэнне вхідных дадзеных, адпаведнага адпаведальніка за крок і крэтарыяў завершэння. Аперацыйныя працавнікі павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не спрабоўваючы з’ясаваць захаваны стан. Неабходна аддзекластыць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія пераказы і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Неабходна людзкая апраўда для тых крокоў, якія выкалікаюць витраты чы зменяюць данні пра вырабоцтва. Працэс складання коду не є адпаведнікам полныя бізнес-функцыям.
3. Чым больш ролі грае AI, тым важлівей стаюць прозрачнасць і доверлівасць
Для стадіі 3 «Видазрэмасць і доверлівасць» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры перадзеі коду. Аперацыйныя працавнікі павінны магчымае перадзеі крок з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына нехаспекі павінна вказваць на адзіну адпаведальнасць, а не на заплутаны процес. Пры кроках, якія витрачаюць грошы або зменяюць даны ў працэйнай сістэме, неабяжна ўключыць людзкія пераказы. Компіляцыйныя налашчэнні не ўзначаюць павнае адпрацоўванне бізнес-процэсаў.
4. Косц і швальнасць
Для стадіі 4 «Косц і шырока» неабяжна ўзначыць вхідныя даны, адпаведальнага за выкананне крока і крэтырыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перывыканне крока з вядомай точкі контролю без неабяжнага вычыслення захаваных станоў. Спрыяць гэтай стадіі як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, узначыць перакананні на успех і адмовіцца ад беззвучнага частковага завершэння. Забезпечыць людскія падтверджэння для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны праўлення. Кампайляванне коду не ўзначае повнага завершэння бізнес-процэсу. Для стадіі 4 «Косц і шырока» неабяжна ўзначыць вхідныя даны, адпаведальнага за выкананне крока і крэтырыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перывыканне крока з вядомай точкі контролю без неабяжнага вычыслення захаваных станоў. Храніць настройкі параду ад коду прыемленае. Файлы сераўіса, храненні секрэтных дадзенаў і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў.
5. Лёгкая перапрацоўка і адтрыманне
Калі працуеце над стадзіяй «Лёгкая перапрацоўка», спачатку запісайце умовы: неабходныя даны, сігнал успеху і тое, што выходзіць па частковай нявыполненні. Такі список контролю дапамагае заставаць пазнейшыя змены коду чыстымі. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам. Ставіце контрольныя пункты пасля дорогіх крокаў. Система вяснавання не должна зноў выклікаць той самы календар вызову LLM, калі аператар перапрыбывае пазнейшы вузел.
8. Калі выкорыстоўваць ціклы протыра графаў
Калі працуеце над 8 стадзямі «Калі выкорыстоўваць», спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выходзіць па частковай нявыполненасці. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, нявыполненасць павінна вказваць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце перапактаванне пасля дорогіх крокаў. Система вярнення не павинна зноў выклікаць той самы LLM-званак, калі аператар пракушае пазнейшы вузел.
Вжывайце цікл, калі:
Калі працюеце над стадзіяй «Reach for a loop», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрэчвайце гэтую стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі данымі. Дайце назвы артыфактам, задаце правіла пераканання успеху і не прабуйце прыймаць часткова завершанне без паведамлення. Зробіце контрольны пункт пасля дорогіх крокаў. Програма для продакцыі не должна зноў выклікаць той самы календар вызову LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працюеце над стадзіяй «Reach for a loop», спачатку запісайце контракт: неабяжлівыя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Зберагачыце настройкі параду ад коду прыемлівача. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функций должны знаходзіцца ў аднам месцы, куда аператары можуць аудытаваць іх, не чытаючы весь граф.
Калі прабаваць дасягнуць графа:
Процес стварэння графа работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшай дапрацоўкі. Зберагаюце стан графа у простам і типаваным формате. Вярнутыя структуры маскуюць інфармацію пра тое, який вузол запісаў якое поле, і спакоююць працэс пасля перарываў.
Тады, кой з вароўкі ўжываць?
Процес So Which One Should працюе найкраща, калі яго розглядаць як вимерную паверхню. Запісаце адзін «золаты» прыклад роботы, адзін прыклад неудачы і прыметкі па вярнэнне да пачатковага стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Рэзультаты обработкі трэба зберагаць у простаму, типаваны формат. Вярнутыя структуры данных маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакоююць працу пасля перерываў.
9. Спіс пераканальнай перапалоўкі
Этап 9 «Чэкліст для працы ў прыемнай сяродзе» работае наўпершыя, калі яго спрыятарабатваць як мерыемую паверхню. Зберагуце адны ідеальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыятарабатваце гэты этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тыхняй, непавной, без паазначэнняя завершэння. Храніце стан графа ў простам і типаваным формате. Вярнутыя структуры дадзення маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поль, і спаказваюць возможнасць прызначэнняя роботы пасля перарываў. Этап 9 «Чэкліст для працы ў прыемнай сяродзе» работае наўпершыя, калі яго спрыятарабатваць як мерыемую паверхню. Зберагуце адны ідеальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Храніце настройкі параду ад коду прыемнай програмы. Файлы сяродзе, хранільнікі секрэтных дадзенняў і флагі функцыйяй должны знаходзіцца ў аднам месцы, куды аператары можаць аудытаваць іх без неабходнасці чытаць весь граф.
10. Галоўныя выводы
Для этапу «10 ключовых вывадакоў» неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і критэрыя завершэння працы перад змінайом коду. Аператары должны магчымае перзапускать крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцці та обробка некоректных паведамленняў є частью продукту, а не елементамі пазнейшай дапрацоўкі. Неабходна людзкая аправарэнне для тых крокаў, якіе выкарыстоўваюць грошы або зміняюць даны ў працэсе виробніцтва. Праця ў часе компілявання не є гарантыяй повнай адпаведнасці продукту бізнес-трэбованням.
11. Справакі
Для стадіі 11 «Апавяранні» неабходна прадзеўжанне вхідных дадзенняў, абавесцяванне адпаведнага адпаведальнага і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перапрацаваць даную стэп з вядомага пункту контролю, не прымушаныя здагадвацца пра схованы статус. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі стэп не выканаецца, прычына неудачы павінна вказваць на адзін конкрэтны аспект, а не на заплутаны ланцоўкі задач. Неабходна людская аправарэнне для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны, выкарыстоўваные у працэсе. Компіляцыйныя налашчанні не ўзначаюць павнае адпрацоўванне всіх аспектаў бізнес-процэсу.
Дапамога ў далейшым вивучэнні
Для стадіі «Follow for More» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрацавляйце з гэтай стадіяй як з кантрактом межа вхіднымі данымі та перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, узначыце перакананні на успех і адмовіцеся ад тыхняга частковага завершэння без паведамлення. Заставіце людзкую апраўду на тых этапах, дзе відбываецца выдатак грошэй або зміняюцыся даны для працы. Компіляцыйныя налашчэння не ўзначаюць павнае завершэння бізнес-процесу. Для стадіі «Follow for More» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Зберагачыце налашчэнні параду аплікацыйскага коду. Файлы сераўіса, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое працавнікі можуць аудытаваць, не чытаючы весь лянцуг задач.
Чэк-ліст аператыўнай роботы
Этап чэк-ліста аператыўнай роботы працюе наякша, калі яго спрыяваць як мерыемую структуру. Запісайте адну ідеальную версію роботы, адзін прыклад неудачы і зьмест крока абратнага запуску, прычаму расширяючы сферу дзеяння.
Запісвайце часы выконання і косты токеноў або запытаў па боку функцыйнальных рэзультатаў. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўсы.
Зберагайце стан графа ў простам і типаваным формате. Вкладзеныя структуры маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакшваюць продаж чынення пасля перарываў.
Калі бюджет дазволяе, дадзіце тэст на працясную роботу, які перабірае критычны шлях у системе CI з викорыстаннем фікстураў, а не рэальных платных API.
Зберагайце настройкі параду з коду прыемлівача. Файлы сераўса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль, не чытаючы весь граф.
Зберагаюце стан графа ў простам і типаваным формате. Вкладаныя структуры маскаюць інфармацію пра тое, який вузол запісаў якое поле, і спакошуюць працю пасля перерываў.
Перш чым падняць стэк, заморажуйце версіі, зафіксавайце «золаты» транскрыпты для критичных шляхоў і паказвайце крокі для вярнення да пачатковага стану. У спільных средах неабходны ліміты швайнаў, пераказы наявнасці ресурсаў і чыста вызначаная адпаведальная особа для змены секретных дадзенняў. Валіце надзвычайную надзейнасць працы над крэатіўнымі, але разовымі дэманстрацыямі.
Прыметка для c83488435d23: не кладзіце ключы прадаўцаў у репазітарый, задайце максимальны ліміт токенав на сесію і зберагайце транскрыпты празаўсюды з фіксатамі для ацэнкі, каб пазнейшыя змены моделей заставаліся порównанымі.