Идемпотентные инструменты с учётом побочных эффектов
Сделайте повторные вызовы безопасными и предсказуемыми.
«Идемпотентные инструменты с учётом побочных эффектов» — бесплатный урок MCP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.
Модели могут вызвать дважды
Клиент с ИИ может повторить вызов инструмента после истечения времени ожидания или разрыва соединения. Ваш инструмент может выполниться дважды, хотя пользователь подразумевал один вызов.
Что означает идемпотентность
Инструмент является идемпотентным, если повторный вызов с тем же входом больше ничего не изменяет. Второй вызов безопасно ничего не делает.
Операции чтения безопасны по природе
Чистые инструменты чтения, например получение записи, уже идемпотентны. Повторный вызов лишь возвращает тот же ответ без каких-либо последствий.
@mcp.tool()
def get_user(id: int) -> dict:
return db.find(id)Записи требуют осторожности
Инструмент, который создаёт данные или списывает деньги, опасно вызывать повторно. Слепой повтор может добавить дублирующую строку или списать плату дважды.
Используйте ключ, предоставленный клиентом
Попросите вызывающую сторону передать ключ идемпотентности. Если этот ключ уже обрабатывался, верните сохранённый результат вместо повторного выполнения действия.
if key in seen:
return seen[key]
seen[key] = do_work()Предпочитайте upsert операции insert
Upsert записывает или обновляет данные по стабильному идентификатору, поэтому после двукратного выполнения остаётся одна строка, а не две. Повторы сводятся к одному состоянию.
INSERT ... ON CONFLICT (id)
DO UPDATE SET ...Ясно объявляйте побочные эффекты
Указывайте в описании инструмента, изменяет ли он данные. Модель принимает более взвешенное решение, когда знает, что вызов разрушителен.
Разделяйте инструменты чтения и записи
Держите инструмент запросов и инструмент изменений раздельными, а не объединяйте их в один, который иногда записывает данные. Чёткие границы сокращают случайные изменения.
Делайте результаты детерминированными
По возможности возвращайте одинаковый результат для одинакового входа. Предсказуемые результаты помогают клиентам кэшировать данные и рассуждать о работе инструмента.
Проверяйте перед действием
Перед записью проверьте текущее состояние цели. Если изменение уже применено, сообщите об успехе, не выполняя его повторно.
if order.status == "shipped":
return "already shipped"Заключайте многоэтапную работу в транзакцию
Если инструмент затрагивает несколько строк, выполните их в одной транзакции. При повторе изменения либо применятся полностью, либо полностью откатятся — никогда частично.
Быстрая проверка
Почему идемпотентность важна для инструмента MCP, который создаёт записи?
Итоги: безопасные повторы
Делайте записи идемпотентными с помощью ключей или upsert, объявляйте побочные эффекты, разделяйте чтение и запись и используйте транзакции. Далее: управление версиями. ♻️
Часто задаваемые вопросы
Урок «Идемпотентные инструменты с учётом побочных эффектов» бесплатный?
Да — полный текст урока «Идемпотентные инструменты с учётом побочных эффектов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Идемпотентные инструменты с учётом побочных эффектов»?
Сделайте повторные вызовы безопасными и предсказуемыми. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать MCP Academy?
Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Идемпотентные инструменты с учётом побочных эффектов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке MCP Academy?
Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Многоуровневая архитектура сервера
- Конфигурация и секреты через окружение
- Идемпотентные инструменты с учётом побочных эффектов
- Версионирование инструментов и схем