Главная / Статьи / Практические советы: Как использовать Gemini Managed Agents вместе с Google Apps

Практические советы: Как использовать Gemini Managed Agents вместе с Google Apps

Пошаговое руководство по практическим рекомендациям: использование управляемых агентов Gemini с Google Apps — контракты, проверки и слоты для вставки кода для команд, применяющих эту модель.

3415 слов

В следующих заметках описывается практический подход к решению задачи «Использование управляемых агентов Gemini с Google Apps Script». Основное внимание уделяется контрактам, проверкам и местам для вставки кода, а не мотивирующим формулировкам.

Аннотация

На этапе составления аннотации сначала запишите условия работы: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Лучше использовать небольшие, тестируемые блоки кода вместо обширных скриптов. При сбое какого-либо шага причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций. Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без этих данных периодические ошибки поставщика будут выглядеть как баги приложения.

Введение

На этапе введения сначала запишите условия контракта: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия элементам, определите критерии успешности и не допускайте молчаливого частичного выполнения задачи. Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика будут выглядеть как баги приложения.

Архитектурный парадигм: почему прямая трансляция из облака в облако?

При работе над этапом «Почему прямой подход?» в рамках архитектурной парадигмы сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет избежать ошибок при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отслеживание затрат с самого начала предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды. Ведите журнал с информацией об идентификаторе запроса, идентификаторе модели и времени задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика могут быть приняты за баги приложения.

Значительная экономия токенов за счет двунаправленной передачи данных

При работе над этапом значительной экономии токенов входных данных сначала запишите контракт: необходимые параметры входных данных, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Записывайте ID запроса, ID модели и время задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика будут выглядеть как баги приложения.

Снижение затрат за счет общих постоянных песочниц

При работе над снижением затрат на обработку поэтапно сначала запишите условия соглашения: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Задокументируйте как успешный, так и восстановительный пути выполнения. Повторные попытки, проверки со стороны оператора и обработка некорректных сообщений являются частью продукта, а не элементами последующей доработки. Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика могут выглядеть как баги приложения. При работе над снижением затрат на обработку поэтапно сначала запишите условия соглашения: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как соглашение между входными данными и проверенными выходными результатами. Дайте названия всем элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задач.

Рабочий процесс

Этап рабочего процесса работает наилучшим образом, когда его рассматривают как измеримую основу. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Закрепите интерпретатор и файл блокировки зависимостей перед тем, как объяснять логику циклов. Различия в работе на ноутбуке и в средах CI являются наиболее частой причиной скрытых сбоев в демонстрациях API.

Хранилище

Этап хранилища работает наилучшим образом, когда его рассматривают как измеримую среду. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Закрепите интерпретатор и файл с информацией о зависимостях до того, как начнёте использовать циклы. Различия между ноутбуком и средой CI являются наиболее распространённой причиной скрытых сбоев в демонстрациях API.

Использование

Этап использования работает наилучшим образом, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма работ. Документируйте одновременно успешный и восстановительный пути работы. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки. Заблокируйте интерпретатор и файлы зависимостей перед тем, как рассматривать логику циклов. Различия между работой на ноутбуке и в среде CI являются наиболее распространённой причиной скрытых сбоев при демонстрации API.

1. Получение ключа Gemini API

Этап 1: получение API Gemini работает наилучшим образом, если рассматривать его как измеримую структуру. Соберите один успешный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма задачи. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое какого-либо шага причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций. Закрепите версию интерпретатора и файл с информацией о зависимостях до того, как начнёте использовать циклы. Различия в версиях программного обеспечения на ноутбуке и в среде CI являются наиболее распространённой причиной скрытых сбоев в демонстрациях API.

2. Создание проекта Google Apps Script

Этап «Создание Google Apps» работает наилучшим образом, если рассматривать его как объект с измеримыми показателями. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия создаваемым элементам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задач. Заблокируйте интерпретатор и файлы зависимостей перед тем, как объяснять логику циклов. Различия в работе на ноутбуке и в среде CI являются наиболее частой причиной скрытых сбоев при демонстрации API.

3. Развертывание клиентских скриптов и настройка их свойств

Этап 3 «Развертывание клиентских скриптов» работает наилучшим образом, если рассматривать его как измеримую основу. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте время выполнения и стоимость токенов или запросов вместе с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счёты при переходе от демо-среды к общедоступным средам. Заблокируйте интерпретатор и файлы зависимостей перед тем, как объяснять логику циклов. Различия в работе на ноутбуке и в средах CI являются наиболее частой причиной скрытых сбоев в демонстрациях API.

4. Требуемые диапазоны авторизации

Этап 4 «Необходимые диапазоны авторизации» работает наилучшим образом, если рассматривать его как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением диапазона. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Закрепите интерпретатор и файл с информацией о зависимостях до того, как начнете использовать циклы. Различия между ноутбуком и средой CI являются наиболее распространенной причиной скрытых сбоев в демонстрациях API.

Тестирование в облаке (Google Apps Script)

Среда тестирования в Google Cloud работает наилучшим образом, когда с ней обращаются как с измеримой площадкой. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема тестирования. Документируйте как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки. Заблокируйте интерпретатор и файлы зависимостей перед запуском циклов тестирования. Различия в работе на ноутбуке и в среде CI являются наиболее распространенной причиной скрытых сбоев при демонстрации API. Среда тестирования в Google Cloud работает наилучшим образом, когда с ней обращаются как с измеримой площадкой. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема тестирования. Рассматривайте эту среду как контракт между входными данными и проверенными результатами. Дайте названия всем элементам, определите критерии успеха и не допускайте скрытого частичного выполнения задач.

1. Подготовка единой среды Linux Sandbox

Для этапа 1 «Подготовка единой среды» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний диалога.

2. Тест 1: Настройка User-Agent и проверка POSIX-сокетов (runTest1_UserAgentComparison)

На этапе 2 Теста 1 с использованием User-Agent необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг, исходя из известной точки контроля, без необходимости угадывания скрытого состояния. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код приложения. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний диалога.

3. Тест 2: Развертывание ggsrun и проверка прямого доступа (runTest2_GgsrunDirectDeployment)

На этапе 3 Test 2 ggsrun необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо одновременно задокументировать успешный сценарий выполнения и сценарий восстановления. Повторные попытки, проверки со стороны человека и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний обмена сообщениями. На этапе 3 Test 2 ggsrun необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Считайте этот этап договором между входными данными и проверенными выходными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответных частичных завершений работы.

4. Тест 3: Сбор данных с использованием Playwright в режиме без графического интерфейса для загрузки непосредственно на диск (runTest3_PlaywrightDirectUpload)

При работе над этапом Тест 3 с Playwright сначала запишите условия выполнения: необходимые входные данные, сигнал о успешном завершении и последствия частичной неудачи. Такой список поможет избежать ошибок при последующих изменениях кода. Записывайте время выполнения и стоимость токена или запроса рядом с результатами работы. Отслеживание затрат заранее предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. Ведите журнал запросов, идентификаторов моделей и времени задержки для каждого вызова. Без такой отчетности периодические ошибки поставщика могут быть приняты за баги приложения.

5. Тест 4: Синтез и кодирование аудио с использованием FFmpeg для загрузки непосредственно на диск (runTest4_FFmpegAudioDirectUpload)

При работе над этапом 5 Test 4 FFmpeg сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Фиксируйте ID запроса, ID модели и время задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика будут выглядеть как баги приложения.

6. Тест 5: Извлечение AST на TypeScript и сборка с помощью esbuild для прямой загрузки на диск (runTest5_TypeScriptASTDirectUpload)

При работе над этапом 6 Test 5 TypeScript сначала запишите контракт: необходимые входные данные, сигнал о успехе и то, что происходит при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Документируйте одновременно успешный сценарий и сценарий восстановления. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Записывайте идентификатор запроса, идентификатор модели и время задержки при каждом вызове. Без такой отчетности периодические ошибки поставщика кажутся багами приложения. При работе над этапом 6 Test 5 TypeScript сначала запишите контракт: необходимые входные данные, сигнал о успехе и то, что происходит при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными данными. Дайте названия результатам обработки, определите критерии успеха и не допускайте безусловного частичного завершения операции.

7. Тест 6: Критерии оценки производительности: прямая загрузка с помощью ggsrun по сравнению с использованием Base64 через GAS (runTest6_DriveUploadPerformanceComparison)

Этап оценки производительности в рамках Теста 6 работает наилучшим образом, если рассматривать его как измеримую основу. Сначала зафиксируйте один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию, прежде чем расширять объем тестирования. Записывайте временные показатели, а также стоимость токена или запроса рядом с функциональными результатами. Отслеживание затрат на раннем этапе помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. Заблокируйте интерпретатор и файлы зависимостей до того, как начнете использовать циклы. Различия в работе на ноутбуке и в средах CI являются наиболее частой причиной скрытых сбоев в демонстрациях API.

================================================================================
PERFORMANCE BENCHMARK REPORT: 10,000 BYTES FILE TRANSFER TO GOOGLE DRIVE
================================================================================
| Metric                       | Approach A: Direct ggsrun Upload | Approach B: Base64 via Gemini API -> GAS |
| :--------------------------- | :------------------------------- | :--------------------------------------- |
| Transfer Method              | Direct Sandbox-to-Drive (Go CLI) | Base64 Stream -> GAS -> Drive            |
| Drive File Name              | benchmark_10kb_ggsrun.bin        | benchmark_10kb_gas.bin                   |
| Verified File Size           | 10,000 bytes (9.77 KB)           | 10,000 bytes (9.77 KB)                   |
| API Turns Required           | 1 Turn (Direct Offload)          | 1 Turn (Base64 Retrieval)                |
| Local GAS Processing Time    | 0.00 s (Zero CPU overhead)       | 1.23 s (Base64 Decode & Blob Creation)   |
| Total End-to-End Duration    | 16.20 s                          | 32.13 s                                  |
| Effective Throughput         | 0.60 KB/s                        | 0.30 KB/s                                |
| Performance Multiplier       | 1.98x FASTER                     | Baseline (Higher Latency & Token Usage)  |
================================================================================

Тестирование на локальных рабочих станциях (Node.js Stream Runner)

Этап тестирования на локальных рабочих станциях работает наилучшим образом, если рассматривать его как измеримую среду. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема тестирования. Храните конфигурацию отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь кодовый базис. Закрепите версию интерпретатора и файлы с информацией о зависимостях до начала тестирования циклов. Различия между ноутбуком и средой CI являются наиболее распространенной причиной скрытых сбоев в демонстрациях API.

1. Цель и преимущества локального запуска тестов

Этап «1. Цель и преимущества» работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объёма работ. Документируйте одновременно успешный и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки. Заблокируйте интерпретатор и файлы зависимостей до того, как начнёте использовать циклы. Различия в работе на ноутбуке и в среде CI являются наиболее распространённой причиной скрытых сбоев при демонстрации API. Этап «1. Цель и преимущества» работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию до расширения объёма работ. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия всем элементам, определите критерии успеха и не допускайте скрытого частичного завершения работы.

2. Локальная настройка и выполнение тестов

Для локальной настройки и этапа выполнения необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение стоимости заранее предотвращает неожиданные счета при переходе с демо-среды в общедоступные среды. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний диалога.

Приложение: шаблоны использования API Gemini Managed Agents

Для этапа Gemini Managed Agents в Приложении должны быть определены входные данные, ответственный за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания автоматы состояния общения.

Базовый конечный пункт

На этапе базового конечного пункта подключения необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо одновременно задокументировать успешный сценарий работы и сценарий восстановления. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания автоматы состояний обмена сообщениями.

POST https://generativelanguage.googleapis.com/v1beta/interactions?key=${API_KEY}
Content-Type: application/json

Сценарий 1: Общее использование одной постоянной среды исполнения между несколькими клиентами

Для сценария 1 «Общее использование сцены» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не пытаясь угадать скрытое состояние. Предпочтительнее использовать небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага причина должна быть связана с конкретной функцией, а не с запутанной структурой обработки данных. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщики услуг без переписывания машины состояний диалога.

{
  "agent": "antigravity-preview-05-2026",
  "input": "Run task in shared container...",
  "environment": "environments/env-12345"
}

Сценарий 2: Использование изолированных песочниц для каждой экзекуции

Для сценария 2 с использованием изолированной стадии необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте эту стадию как контракт между входными данными и проверенными выходными результатами. Укажите названия элементов, определите критерии успеха и не допускайте безответственного частичного завершения задачи. Отделите процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машинного состояния диалога.

{
  "agent": "antigravity-preview-05-2026",
  "input": "Execute client-specific isolated task...",
  "environment": {
    "type": "remote"
  }
}

Сценарий 3: Сохранение контекста многократных диалогов

Для этапа «Сохранение многократных обменов» в сценарии 3 необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рядом с функциональными результатами следует записывать время выполнения и стоимость токенов или запросов. Отображение стоимости заранее предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний разговора.

{
  "agent": "antigravity-preview-05-2026",
  "input": "Based on the previous output, proceed to step 2...",
  "environment": "environments/env-12345",
  "previous_interaction_id": "interaction-prev-67890"
}

Сценарий 4: Повторное использование песочницы с новым контекстом (freshInteraction)

Для этапа повторного использования среды песочницы в сценарии 4 необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища конфиденциальных данных и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания автоматы состояния разговора.

{
  "agent": "antigravity-preview-05-2026",
  "input": "Execute a completely new task in the existing sandbox...",
  "environment": "environments/env-12345"
}

Матрица краткого обзора

На этапе матрицы краткого обзора необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный пути работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний диалога.

Краткое резюме

На этапе подготовки ктезиса необходимо определить входные данные, ответственного за шаг и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Лучше использовать небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага он должен указывать на конкретную причину, а не на сложную структуру обработки данных. Необходимо разделить процесс создания клиента от цикла обработки сообщений, чтобы можно было заменять поставщиков без переписывания машины состояний диалога.

Чек-лист операционной деятельности

На этапе чек-листа операционной деятельности также требуется определить входные данные, ответственного за шаг и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии.

Лучше использовать небольшие, тестируемые единицы вместо обширных скриптов. Когда какой-то шаг терпит неудачу, ошибка должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

Разделяйте создание клиента от цикла обработки сообщений, чтобы можно было заменять поставщики без переписывания машины состояний диалога.

Создавайте контрольные точки после дорогостоящих шагов. Механизм возобновления не должен снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить последующий узел.

Фиксируйте версии зависимостей и сохраняйте хэш изображения, использованного для демонстрации. Воспроизводимость важнее коллективных знаний.

Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, которое операторы могут проверять, не читая весь граф составляющих.

Перед тем как запускать стек в продакшн, заморозьте версии, сделайте копию «золотого» отчета для критической цепочки задач и уточните шаги возврата к предыдущей версии. В совместных средах необходимо вводить ограничения на частоту запросов, проверять принадлежность ресурсов и определять четкого ответственного за обновление секретов. Лучше добиваться простой надежности, чем создавать креативные одноразовые демонстрации.

Примечание для задачи 19215ab8c61f: не храните ключи поставщика в репозитории, установите лимит токенов на сессию и сохраняйте отчеты рядом с фикстурами для оценки, чтобы последующие замены моделей оставались сопоставимыми.