Як обмежити доступ до інструментів

Tool calls — це місце, де агенти ламають продакшен: schema drift, ретраї, побічні ефекти, і той самий «oops» адмін‑токен. Ось як вижити.
На цій сторінці
  1. Що означає "дозволений інструмент"
  2. Два рівні доступу
  3. 1️⃣ Доступ до інструменту
  4. 2️⃣ Дії всередині інструменту
  5. Як це виглядає разом
  6. Як встановлюються ці обмеження
  7. У коді це виглядає так
  8. Аналогія з життя
  9. Що стається, якщо агент виходить за межі
  10. Коротко
  11. FAQ
  12. Що далі

Коли агент отримує доступ до інструментів, він отримує можливість діяти.

Він може:

  • Читати дані
  • Викликати API
  • Запускати процеси
  • Змінювати стан системи

І саме тут з'являється новий ризик.

Бо агент не знає, що:

  • Цей API коштує грошей
  • Цей процес може зламати систему
  • Ці дані не можна змінювати

Він бачить лише мету.

І якщо для її досягнення потрібно виконати дію — він спробує її виконати.

Навіть якщо ця дія:

  • Дорога
  • Небезпечна
  • Або незворотна

Саме тому в реальних системах агенту не дають повний доступ до всього.

Йому обмежують:

  • Які інструменти доступні
  • Які дії дозволені
  • І коли він має зупинитися

Без цих обмежень агент — це не виконавець.
Це процес, який може зайти занадто далеко.

Що означає "дозволений інструмент"

AI-агент: Що означає "дозволений інструмент"

Не кожен інструмент, який існує в системі, має бути доступний агенту.

Перед початком роботи йому передають лише ті інструменти, які він має право використовувати.

Але доступ до інструменту — це ще не все.

Навіть якщо агент отримав інструмент, це не означає, що він може робити з ним усе.

Існує два рівні доступу:

Два рівні доступу

Коли ми говоримо, що агенту «дозволений інструмент», це може означати дві різні речі:

  1. Чи має агент доступ до інструменту взагалі
  2. Що саме він може робити всередині цього інструменту

1️⃣ Доступ до інструменту

Спочатку система вирішує:

Які інструменти агент взагалі бачить

Інструмент передано агентуІнструмент приховано від агента
База данихПлатіжна система
ПоштаАдмін-панель
Файлове сховищеСистемні налаштування

Якщо інструмент не передано — агент не знає про його існування.

Він не може:

  • Викликати його
  • Попросити його
  • Використати його випадково

2️⃣ Дії всередині інструменту

Але навіть якщо інструмент доступний — це не означає повний контроль.

Один інструмент може підтримувати кілька дій.

Наприклад: База даних

Дозволено в базі данихЗаборонено в базі даних
✅ Переглядати записи❌ Змінювати існуючі
✅ Створювати нові❌ Видаляти записи

Як це виглядає разом

Diagram

Тобто він бачить інструмент — але може використовувати лише частину його можливостей.

Якщо він спробує виконати заборонену дію, система просто не дозволить це зробити.

Запит буде відхилено.

І агент отримає результат:

JSON
{
  "error": "Дія не дозволена"
}

Після цього він має обрати інший крок.

Як встановлюються ці обмеження

У реальній системі обмеження задаються до того, як агент починає працювати.

Йому визначають:

  • Які інструменти доступні
  • Які дії дозволені
  • Які параметри можна передавати

Наприклад:

  • Дозволити читати дані лише з певної таблиці
  • Надсилати листи тільки всередині компанії
  • Працювати лише з файлами у конкретній папці

Тобто агент отримує не просто інструменти, а чіткі правила їх використання.

Коли він просить виконати дію, система перевіряє:

  1. Чи інструмент дозволений
  2. Чи дія дозволена
  3. Чи параметри відповідають правилам

І лише після цього виконує її.

Якщо хоча б одна умова не виконана — запит блокується.

У коді це виглядає так

Нижче той самий принцип у простому форматі (як у tool-calling-basics).

Спочатку в нас є інструменти:

PYTHON
def read_user(user_id: int):
    return {"id": user_id, "name": "Anna"}


def delete_user(user_id: int):
    return {"deleted": user_id}


TOOLS = {
    "database": {
        "read_user": read_user,
        "delete_user": delete_user,
    }
}

Тут ми дозволяємо, що саме можна використовувати:

PYTHON
ALLOWED_TOOLS = {"database"}
ALLOWED_ACTIONS = {
    "database": {"read_user"}  # delete_user заборонено
}

Тепер модель формує запит (що саме вона хоче зробити):

PYTHON
model_output = {
    "tool": "database",
    "action": "read_user",
    "parameters": {"user_id": 123}
}

Система отримує цей запит і перевіряє правила перед виконанням:

PYTHON
def run_tool_call(call: dict):
    tool = call["tool"]
    action = call["action"]
    params = call["parameters"]

    if tool not in ALLOWED_TOOLS:
        return {"error": "Інструмент не дозволено"}

    if action not in ALLOWED_ACTIONS.get(tool, set()):
        return {"error": "Дія не дозволена"}

    if action == "read_user" and "user_id" not in params:
        return {"error": "Некоректні параметри"}

    return TOOLS[tool][action](**params)

Якщо все ок — отримуємо результат:

PYTHON
result = run_tool_call(model_output)
# {"id": 123, "name": "Anna"}

Якщо модель попросить заборонену дію (delete_user), система поверне:

JSON
{
  "error": "Дія не дозволена"
}

Повний приклад реалізації з підключеною LLM

PYPython
TSTypeScript · скоро

Аналогія з життя

Уяви, що ти даєш помічнику банківську картку. Але з лімітом.

Помічник можеПомічник не може
✅ Оплатити підписку❌ Зняти готівку
✅ Замовити таксі❌ Зробити переказ
✅ Купити канцелярію❌ Витратити більше ніж $100

Карта — та сама.
Але правила використання — різні.


Те саме з інструментами.

Агент може мати доступ до бази даних. Але лише для читання.

Може надсилати листи. Але лише всередині компанії.

Може викликати API. Але лише з обмеженим бюджетом.


Він бачить інструмент — але не може використовувати його як завгодно.

Що стається, якщо агент виходить за межі

Агент може попросити виконати будь-яку дію.

Але це не означає, що вона буде виконана.

Якщо він:

  • Викликає заборонений інструмент
  • Передає недозволені параметри
  • Або перевищує встановлений ліміт

Система просто блокує запит.

І повертає результат:

JSON
{
  "error": "Дія не дозволена"
}

Для агента це виглядає як ще один результат його дії.

Він бачить, що цей шлях закритий — і має обрати інший.

Можливо:

  • Використати інший інструмент
  • Змінити параметри
  • Або завершити задачу з тим, що є

Саме так обмеження не зупиняють агента повністю.

Вони лише визначають, де він може діяти — а де має зупинитися.

Коротко

Доступ до інструментів — це не просто "дозволено" або "заборонено".

Це набір правил, які визначають:

  • Які інструменти агент може використовувати
  • Які дії всередині них дозволені
  • Які параметри можна передавати

Коли агент виходить за межі — система блокує запит.
Але це не зупиняє роботу. Це змушує обрати інший шлях.

Саме так обмеження перетворюють агента на контрольованого виконавця, а не неконтрольований процес.

FAQ

Q: Чи означає доступ до інструменту повний контроль над ним?
A: Ні. Агент може мати доступ до інструменту, але використовувати лише дозволені дії.

Q: Що відбувається, якщо агент просить заборонену дію?
A: Система перевіряє запит і блокує його, якщо він порушує встановлені правила.

Q: Чи зупиняється агент після блокування дії?
A: Ні. Він отримує результат і має обрати інший доступний крок.

Що далі

Тепер ти знаєш, як обмежити доступ агента до інструментів.

Але виникає інше питання:

Як агент вирішує, що робити взагалі?

Коли він отримує задачу — чи планує всі кроки наперед, як людина зі списком справ?
Чи реагує на ситуацію, обираючи наступний очевидний крок?

Це не просто різні підходи.
Це визначає, як агент поводиться під час роботи — і коли він може зайти не туди.

⏱️ 7 хв читанняОновлено Бер, 2026Складність: ★★☆
Практичне продовження

Приклади реалізації патерна

Перейди до реалізації на готових прикладах.

Інтегровано: продакшен-контрольOnceOnly
Додай guardrails до агентів з tool-calling
Зашип цей патерн з governance:
  • Бюджетами (кроки / ліміти витрат)
  • Дозволами на інструменти (allowlist / blocklist)
  • Kill switch та аварійна зупинка
  • Ідемпотентність і dedupe
  • Audit logs та трасування
Інтегрована згадка: OnceOnly — контрольний шар для продакшен агент-систем.
Автор

Цю документацію курують і підтримують інженери, які запускають AI-агентів у продакшені.

Контент створено з допомогою AI, із людською редакторською відповідальністю за точність, ясність і продакшн-релевантність.

Патерни та рекомендації базуються на постмортемах, режимах відмов і операційних інцидентах у розгорнутих системах, зокрема під час розробки та експлуатації governance-інфраструктури для агентів у OnceOnly.