Коли агент отримує доступ до інструментів, він отримує можливість діяти.
Він може:
- Читати дані
- Викликати API
- Запускати процеси
- Змінювати стан системи
І саме тут з'являється новий ризик.
Бо агент не знає, що:
- Цей API коштує грошей
- Цей процес може зламати систему
- Ці дані не можна змінювати
Він бачить лише мету.
І якщо для її досягнення потрібно виконати дію — він спробує її виконати.
Навіть якщо ця дія:
- Дорога
- Небезпечна
- Або незворотна
Саме тому в реальних системах агенту не дають повний доступ до всього.
Йому обмежують:
- Які інструменти доступні
- Які дії дозволені
- І коли він має зупинитися
Без цих обмежень агент — це не виконавець.
Це процес, який може зайти занадто далеко.
Що означає "дозволений інструмент"

Не кожен інструмент, який існує в системі, має бути доступний агенту.
Перед початком роботи йому передають лише ті інструменти, які він має право використовувати.
Але доступ до інструменту — це ще не все.
Навіть якщо агент отримав інструмент, це не означає, що він може робити з ним усе.
Існує два рівні доступу:
Два рівні доступу
Коли ми говоримо, що агенту «дозволений інструмент», це може означати дві різні речі:
- Чи має агент доступ до інструменту взагалі
- Що саме він може робити всередині цього інструменту
1️⃣ Доступ до інструменту
Спочатку система вирішує:
Які інструменти агент взагалі бачить
| Інструмент передано агенту | Інструмент приховано від агента |
|---|---|
✅ База даних | ❌ Платіжна система |
✅ Пошта | ❌ Адмін-панель |
✅ Файлове сховище | ❌ Системні налаштування |
Якщо інструмент не передано — агент не знає про його існування.
Він не може:
- Викликати його
- Попросити його
- Використати його випадково
2️⃣ Дії всередині інструменту
Але навіть якщо інструмент доступний — це не означає повний контроль.
Один інструмент може підтримувати кілька дій.
Наприклад: База даних
| Дозволено в базі даних | Заборонено в базі даних |
|---|---|
| ✅ Переглядати записи | ❌ Змінювати існуючі |
| ✅ Створювати нові | ❌ Видаляти записи |
Як це виглядає разом
Тобто він бачить інструмент — але може використовувати лише частину його можливостей.
Якщо він спробує виконати заборонену дію, система просто не дозволить це зробити.
Запит буде відхилено.
І агент отримає результат:
{
"error": "Дія не дозволена"
}
Після цього він має обрати інший крок.
Як встановлюються ці обмеження
У реальній системі обмеження задаються до того, як агент починає працювати.
Йому визначають:
- Які інструменти доступні
- Які дії дозволені
- Які параметри можна передавати
Наприклад:
- Дозволити читати дані лише з певної таблиці
- Надсилати листи тільки всередині компанії
- Працювати лише з файлами у конкретній папці
Тобто агент отримує не просто інструменти, а чіткі правила їх використання.
Коли він просить виконати дію, система перевіряє:
- Чи інструмент дозволений
- Чи дія дозволена
- Чи параметри відповідають правилам
І лише після цього виконує її.
Якщо хоча б одна умова не виконана — запит блокується.
У коді це виглядає так
Нижче той самий принцип у простому форматі (як у tool-calling-basics).
Спочатку в нас є інструменти:
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,
}
}
Тут ми дозволяємо, що саме можна використовувати:
ALLOWED_TOOLS = {"database"}
ALLOWED_ACTIONS = {
"database": {"read_user"} # delete_user заборонено
}
Тепер модель формує запит (що саме вона хоче зробити):
model_output = {
"tool": "database",
"action": "read_user",
"parameters": {"user_id": 123}
}
Система отримує цей запит і перевіряє правила перед виконанням:
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)
Якщо все ок — отримуємо результат:
result = run_tool_call(model_output)
# {"id": 123, "name": "Anna"}
Якщо модель попросить заборонену дію (delete_user), система поверне:
{
"error": "Дія не дозволена"
}
Повний приклад реалізації з підключеною LLM
Аналогія з життя
Уяви, що ти даєш помічнику банківську картку. Але з лімітом.
| Помічник може | Помічник не може |
|---|---|
| ✅ Оплатити підписку | ❌ Зняти готівку |
| ✅ Замовити таксі | ❌ Зробити переказ |
| ✅ Купити канцелярію | ❌ Витратити більше ніж $100 |
Карта — та сама.
Але правила використання — різні.
Те саме з інструментами.
Агент може мати доступ до бази даних. Але лише для читання.
Може надсилати листи. Але лише всередині компанії.
Може викликати API. Але лише з обмеженим бюджетом.
Він бачить інструмент — але не може використовувати його як завгодно.
Що стається, якщо агент виходить за межі
Агент може попросити виконати будь-яку дію.
Але це не означає, що вона буде виконана.
Якщо він:
- Викликає заборонений інструмент
- Передає недозволені параметри
- Або перевищує встановлений ліміт
Система просто блокує запит.
І повертає результат:
{
"error": "Дія не дозволена"
}
Для агента це виглядає як ще один результат його дії.
Він бачить, що цей шлях закритий — і має обрати інший.
Можливо:
- Використати інший інструмент
- Змінити параметри
- Або завершити задачу з тим, що є
Саме так обмеження не зупиняють агента повністю.
Вони лише визначають, де він може діяти — а де має зупинитися.
Коротко
Доступ до інструментів — це не просто "дозволено" або "заборонено".
Це набір правил, які визначають:
- Які інструменти агент може використовувати
- Які дії всередині них дозволені
- Які параметри можна передавати
Коли агент виходить за межі — система блокує запит.
Але це не зупиняє роботу. Це змушує обрати інший шлях.
Саме так обмеження перетворюють агента на контрольованого виконавця, а не неконтрольований процес.
FAQ
Q: Чи означає доступ до інструменту повний контроль над ним?
A: Ні. Агент може мати доступ до інструменту, але використовувати лише дозволені дії.
Q: Що відбувається, якщо агент просить заборонену дію?
A: Система перевіряє запит і блокує його, якщо він порушує встановлені правила.
Q: Чи зупиняється агент після блокування дії?
A: Ні. Він отримує результат і має обрати інший доступний крок.
Що далі
Тепер ти знаєш, як обмежити доступ агента до інструментів.
Але виникає інше питання:
Як агент вирішує, що робити взагалі?
Коли він отримує задачу — чи планує всі кроки наперед, як людина зі списком справ?
Чи реагує на ситуацію, обираючи наступний очевидний крок?
Це не просто різні підходи.
Це визначає, як агент поводиться під час роботи — і коли він може зайти не туди.