Галоўная / Артыкулы / Практычныя прытамулкі: Чаго я навучыўся падчас адправкі AI-агента для працы з Google

Практычныя прытамулкі: Чаго я навучыўся падчас адправкі AI-агента для працы з Google

Практычныя прыказкі: Чаго я навучыўся пад час адправкі AI-агента для працы з Google – дакументы, перакананні та месца для вставкі коду для команд, якія выкарыстоўваюць гэты патэрн.

1976 слоў

Існавайце гэта як перапрацоўаны варыянт ідэй з артыкула «Што я навучыўся пад час адправкі продакшн-агента 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: не кладзіце ключы прадаўцаў у репазітарый, задаце ліміт токена на кожную сесію і зберагачыце транскрыпты празаўседліва з фікстурамі для ацэнкі, каб пазнейшыя замены модэляў заставаліся порупачнымі.