Практычныя прытамулкі: Чаго я навучыўся падчас адправкі AI-агента для працы з Google
Практычныя прыказкі: Чаго я навучыўся пад час адправкі AI-агента для працы з Google – дакументы, перакананні та месца для вставкі коду для команд, якія выкарыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з артыкула «Што я навучыўся пад час адправкі продакшн-агента AI з функцыяй вызыву Gemini ад Google» для працавікаў: чыстыя этапы, аранжаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы задання. Этап «Апглэйв» найкраща працюе, калі яго розглядаць як меркаваную плошчу. Запісаце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму расшырэння масштаба. Разглядайце гэты этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыкулам, задаце критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
1. Адказы на функціі: спрыяйце іх як кантракт API з модэлем
Для стадіі «Think» з адзыяванням 1 функцыі неабходна прадзеявленне вхідных дадзеных, адпаведнага адпаведальніка за крок і крэтарыяў выходу прычым перад зменай коду. Аператары должны магчымаць паўтарную рэалізацію кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выконання і кост токенаў або запытаў праза рэзультатамі функцыйнасці. Відразлівая видавальнасць костаў з самага пачатку запобегае неспакойным рашчыткам, калі траекторыя пераходзіць з дэмавай версіі ў спяльныя среды. Аддзельваць стварэнне кліента ад цыклу паведамленняў, каб было можна змяніць прадстаўніка без перапісвання машыны стану дыялогу.
// ❌ Vague — model won’t know when to use it
{ name: ‘get_data’, description: ‘Gets data about a location.’ }
// ✅ Trigger-specific — model knows exactly when this is relevant
{
name: ‘find_backup_spots’,
description: ‘Finds nearby indoor/covered alternatives within walking distance ‘
+ ‘if the venue is crowded or weather turns.’,
}
{
name: ‘calculate_transit_route’,
description: ‘Calculates precise walking/driving/transit travel times to the venue.’,
parameters: {
type: ‘OBJECT’,
properties: {}, // No parameters — dispatcher injects from context
},
}
2. Цыкл інструмента з калькамі: машына стана, а не адзін вызов
Для стадіі “The Multi-Turn Tool 2” неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць пазначанай ад коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных данных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Аддзельнай трэба выконванне канструкцыі кліента ад циклу паведамленняў, каб можна было змяніць прадаўцоў без перапісвання машыны стану размовы.
Turn 0: [user prompt + system instructions]
→ Model returns: functionCall { name: “tool_a”, args: {…} }
Turn 1: [user prompt, model’s functionCall, your functionResponse for tool_a]
→ Model returns: text response (synthesized from tool_a’s output)
Turn 0: [user prompt]
→ Model returns: functionCall { name: “tool_a”, args: {…} }
Turn 1: [user prompt, functionCall_a, functionResponse_a]
→ Model returns: functionCall { name: “tool_b”, args: {…} }
Turn 2: [user prompt, functionCall_a, functionResponse_a, functionCall_b, functionResponse_b]
→ Model returns: final text (synthesized from both tools)
3. Каскадаванне модэляў: Не прыкрепляйцеся да аднаго модэля
Для стадіі 3 Model Cascading Don неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перадзеяць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Аддзельнаюць стварэнне кліента ад цыклу паведамленняў, таким чынам дазволяючы змініць прадаўцаў без перапісвання машыны стану размовы. Для стадіі 3 Model Cascading Don неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перадзеяць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяць гэтай стадіі як кантракту межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, узначыць перакрыцці успеху і адмовіцца ад беззвучнага частковага завершэння.
Primary: gemini-3.5-flash-lite (fastest, cheapest, zero-thinking overhead)
Secondary: gemini-3.1-flash-lite (slightly older, same tier)
Tertiary: gemini-2.5-flash (thinking-capable, higher quality)
4. Архітектура API Key: шаблон проксі
Калі працуеце над 4 стадзямі архітектуры API Key, спачатку запісайце умовы вярбунка: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага няўспэху. Такі список дапамагае заліцьварыць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы ведабання костаў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайнага режыма ў спяльныя среды. Запісвайце ідэнтыфікатор запыту, ідэнтыфікатор моделі і час затрымкі праз кожны вызов. Без такога лёгасу перыядычныя памылкі прадаўцу выглядаюць як багі ў самай аплікацыі.
Рашэння: проксі з баку сервера
Калі працюеце над стадзіяй «The Solution A Server-Side», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі список контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Зберагайце настройкі параду ўнутры коду прыемліка. Файлы сераўіснага сэрвісу, хранілішчы секретных данных і флагі функцый належыць у аднам месца, куды аператары можаць адбавляць контроль без неабяжлівага чытання всей структуры. Зяўляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без такога следу періядычныя кантракты падрыхтавальніка выглядаюць як багі прыемліка.
const res = await Promise.race([
proxyCallable({ model: modelName, body: requestBody }),
new Promise((_, reject) =>
setTimeout(() => reject(new Error(‘AI proxy timeout’)), 15000)
),
]);
5. Складзенне контэксту: Тое, што вы даеце моделі, мае большое значэнне, чым тая модель, яку вы вжываеце
Калі працуеце над 5 стадзямі «Кампрэсіі контэкста», спачатку запішыце кантракт: неабяжлівыя данні, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў ёсць частью продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адліку за кожны вызов. Без такога следу періядычныя кантракты падрыхтавальніка выглядаюць як багі ў прыемніку. Калі працуеце над 5 стадзямі «Кампрэсіі контэкста», спачатку запішыце кантракт: неабяжлівыя данні, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівае ставленне да гэтай стадзіі як да кантракта межа даннімі і перакананымі выходамі. Дайце назвы артыфактам, задаць тэсты на успех і не падзеўляйцеся частковым завершэнням без паведамлення.
[CONTEXT]
Category: Coffee
Date: Saturday, Aug 30, 2026
Time: 10:00 AM — 11:30 AM (90 mins)
Group Size: 4/8 participants
User Role: Attendee
Country: AU
Currency: AUD
[END CONTEXT]
6. Дзеянне агента, які ў першую чаргу працюе афлайн: дэтэрміністычны варыянт
Этап 6 «Дзеянне агента, які ў першую чаргу працюе афлайн» даўа найкращыя рэзультаты, калі яго рассматрываць як меравальную плошчу. Запісайте адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па поверненню да пачатковага стану пры расширэнні масштаба. Запісвайце часы виконання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў з’являецца рана, што запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Зафіксавайце інтэрпретара і файл з правіламі залежнасцяў пры навчанні циклу. Разлік межаў між ноутбукам і системай CI ёсць найпашырэнейшым таямным перывам у дэмаверсіях API.
7. Налагоджэнне generationConfig
Этап налагоджэння configuration 7-й генерацыі дае найкращыя рэзультаты, калі яго спрыяваць як меравальную плошчу. Запісаўце адна ідеальная версія, адзін прыклад неудачы і прыметкі па адвярненню перад расшырэнням масштаба. Зберагаўце канфігурацыю паза кодам прыемліка. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без чытання всей структуры. Зафіксавайце інтэрпретара і файл з блокірацыяй залежнасцей пры практыкуванні циклаў. Разлікы межа лэптопам і средой CI ёсць найчастэйшым таямным бягам для дэманстрацый API.
{
“responseMimeType”: “application/json”,
“temperature”: 0.4,
“maxOutputTokens”: 600
}
{
“temperature”: 0.7,
“maxOutputTokens”: 700
}
8. Інжынерыя запрошэнняў системы для выкарыстоўвання інструментаў
8-й этап інжыніерыі прамптова системы працюе наяўнейша, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштаб. Дакументавайце як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Забезпечыце фіксацію інтэрпретара і файлу блокавання залежнасцяў пры навучэнні циклу. Разлік межаў між ноутбукам і CI ёсць найчастэйшым таямным нарушэнням пад час дэманстрацый API. 8-й этап інжыніерыі прамптова системы працюе наяўнейша, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштаб. Спрыявайце гэты этап як даговор межаў вхідных дадзенняў і перакананых выходных рэзультатаў. Назвайце артыфакты, задаць критэрыя успеху і адмовіцца ад таямнай частковай завершэння.
You have access to autonomous action tools. When users ask for rides,
ALWAYS call request_rideshare. When users ask to book a table,
ALWAYS call reserve_table. When users ask about cultural norms,
ALWAYS call get_cultural_etiquette.
NO RAW MARKDOWN HEADINGS: Never use ‘#’. Use **Bold Text** for headers.
NO ASTERISKS FOR BULLETS: Use clean unicode bullet points (• ).
CONCISE: Jump straight to the answer. No filler introductions.
9. Урокі, якія былі вывучаны
У стадії «9 урокаў, якія былі вывучаны» неабходна з’ясаваць параметры вхідных дадзеных, адпаведальную особу за кожны крок і критэрыі завершэння працы перад змянай коду. Аператары должны магчымае перазапускати крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Запісваюць час выконання і вартасць токеноў або запытак па боку функцыйнальных рэзультаатаў. Відразліва візуалізацыя вартасцей запобегае неспакою, калі процес пераходзіць з дэмовай среды ў спакульную. Раздзеляйце стварэнне кліента ад цыклу перадачы паведамленняў, ўжо тады, калі можна змяніць прадаўцаў, не перапісваючы машыну стана дыялогу.
Чэк-ліст для эксплуатацыі
Працюючы над чэк-лістам для эксплуатацыі, спачатку запісуйце умовы кантракту: неабходныя параметры вхідных дадзеных, сігнал успеху і тое, што выканаецца у разы частковага невялікога браку. Такі чэк-ліст дапамагае залишацца адкрытымі пад час пазнейшых змян у кодзе.
Лепшыя маленькія, тэставаныя елементы чым велікія скрыпты. Калі якісь крок не выйшае, адказка за гэтым нехацелым результатам должна быць спрямована на адзін конкрэтны элемент, а не на заплутаны ланцюг задач.
Запісвайце ідэнтыфікатор запиту, ідэнтыфікатор моделі і час адказу праз кожны вызов. Без такога лістынгу періядыяяі кантыкаты сервера выглядаюць як багі самай прыемлівасці.
Зберагаюце стан графа ў простаму і типаванаму формате. Вярнутыя структуры данных, якія знаходзяцца ў вёскапленні, маскуюць інфармацыю пра тое, який вузел запісаў кожны поль і спакоююць працэс пасля перерываў.
Калі бюджет дазволяе, дадзіце тэст на першыя адказы, які працюе з критычным ланцюгам у процесе інтеграцыйных тэстаў з викорыстаннем фіксатыв, а не з рэальнымі платнымі API.
Зберагаюце настройкі праза код прыемлівасці. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль, не чытаяўшы весь граф.
Перш чым запускать даную структуру, заморозьце версіі, зафіксавце «золаты» транскрыпты для критичных етапаў і паказвце спосабы вярнення да пачатковага стану. У спільных серавысках неабходны ліміты частоты запытоў, пераканання ў правільнасці належнасці ресурсаў і чысткі власнік для змены секретных даных. Валіце надзейнасць працы над красавіми, але разовымі дэманстрацыямі.
Прыметкі для 0ead08720324: не кладзіце ключы прадаўцаў у репазітарый, задаце ліміт токена на кожную сесію і зберагачыце транскрыпты празаўседліва з фікстурамі для ацэнкі, каб пазнейшыя замены модэляў заставаліся порупачнымі.