Інструменти REST API
Агенти Sinaptic® DROID+ можуть викликати зовнішні HTTP-ендпоінти як інструменти. Це дозволяє агентам взаємодіяти з будь-яким REST API — внутрішніми сервісами, сторонніми API, вебхуками — без написання кастомного коду.
Конфігурація
Додайте інструменти REST API безпосередньо у YAML-конфігурацію вашого агента:
# configs/agents/my-agent.yaml
name: "my-agent"
tools:
- name: "get-weather"
type: "rest_api"
description: "Отримати поточну погоду для міста"
url: "https://api.weather.example.com/current?city=${city}"
method: "GET"
headers:
Authorization: "Bearer ${WEATHER_API_KEY}"
timeout: "10s"
- name: "create-ticket"
type: "rest_api"
description: "Створити тікет служби підтримки"
url: "https://api.example.com/tickets"
method: "POST"
headers:
Content-Type: "application/json"
Authorization: "Bearer ${INTERNAL_API_KEY}"
timeout: "15s"
Поля
| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
name | string | так | Ідентифікатор інструменту (використовується LLM) |
type | string | так | Має бути rest_api |
description | string | рекомендовано | Опис, що відображається для LLM, щоб допомогти обрати цей інструмент |
url | string | так | URL ендпоінту (підтримує ${VAR} для змінних середовища) |
method | string | так | Метод HTTP: GET, POST, PUT, DELETE |
headers | map | ні | Заголовки HTTP, які потрібно включити в запит |
timeout | string | ні | Таймаут запиту (за замовчуванням: 30s) |
Як це працює
- LLM вирішує викликати інструмент REST API на основі його
nameтаdescription. - Sinaptic® DROID+ виконує HTTP-запит із налаштованим методом, URL, заголовками та тілом запиту (якщо воно надане LLM).
- Відповідь повертається до LLM як результат роботи інструменту.
- LLM включає цей результат у свою відповідь користувачеві.
Безпека
- Інструменти REST API враховують налаштування SinapticAI — вхідні та вихідні дані інструмента скануються на наявність PII (персональних даних) та спроб ін'єкцій.
- Використовуйте змінні середовища (
${VAR}) для ключів API та секретів у заголовках — ніколи не прописуйте їх у коді. - Поле
timeoutзапобігає нескінченному зависанню інструментів на повільних ендпоінтах.
Приклади
Виклик внутрішнього мікросервісу
tools:
- name: "lookup-order"
type: "rest_api"
description: "Знайти статус замовлення за ID замовлення"
url: "https://internal-api.example.com/orders/${order_id}"
method: "GET"
headers:
X-Service-Token: "${INTERNAL_TOKEN}"
timeout: "5s"
Надсилання вебхуку
tools:
- name: "notify-slack"
type: "rest_api"
description: "Надіслати сповіщення в канал Slack"
url: "${SLACK_WEBHOOK_URL}"
method: "POST"
headers:
Content-Type: "application/json"
timeout: "10s"