Inquir Compute logoInquir Compute
Паттерн · Inquir Compute

AI agent tools API: аутентифицированные эндпоинты для LLM-инструментов

Каждый инструмент агента — отдельный HTTP-маршрут на шлюзе с API-ключом. Секреты провайдера в переменных окружения функции, изолированный контейнер, тёплый пул для быстрых tool-вызовов.

Last updated: 2026-04-20

Direct answer

AI agent tools API: аутентифицированные эндпоинты для LLM-инструментов. Одна функция на инструмент: `/search-customer`, `/create-invoice`, `/check-inventory`. API-ключ на уровне маршрута — без auth-кода внутри хендлера.

When it fits

  • Инструмент работает с регулируемыми данными или секретами
  • Нужна изоляция зависимостей между инструментами

Tradeoffs

  • Если все инструменты в одной функции — зависимости конфликтуют, логи смешиваются, blame impossible.
  • Без gateway-аутентификации инструмент открыт любому, кто знает URL.

Почему инструменты агентов нужно изолировать

  • Authenticated HTTP endpoints — model cannot call open routes
  • Secrets off the model path — API keys never in prompts or context windows
  • Isolated execution — one tool failure cannot contaminate another
  • Low latency on the warm path — tight tool loops need sub-100ms response
  • Observability — trace which tool failed and why, per model call

Один монолитный сервис для всех инструментов смешивает зависимости, секреты и логи. Один деплой ломает все инструменты разом.

Почему serverless-монолит не подходит для агентов

Если все инструменты в одной функции — зависимости конфликтуют, логи смешиваются, blame impossible.

Без gateway-аутентификации инструмент открыт любому, кто знает URL.

Как строить tool API на Inquir

Одна функция на инструмент: `/search-customer`, `/create-invoice`, `/check-inventory`. API-ключ на уровне маршрута — без auth-кода внутри хендлера.

Секреты провайдера (OpenAI, Stripe, DB) в переменных окружения функции; ротация без редеплоя. Тёплый пул для tool-loops с tight latency.

Что нужно для AI agent tools API

Одна функция на инструмент

Изолированные зависимости, отдельный деплой, attributable логи.

Gateway auth

API-ключ проверяется до хендлера. Инструмент не получает неаутентифицированный запрос.

Секреты на уровне функции

Разные ключи для разных инструментов; ротация без изменения промптов.

Тёплый пул

Hot containers для инструментов с высокой частотой вызовов в tool loops.

Как создать инструмент для AI-агента

1

Определить контракт

Входные поля, валидация, форма ответа — до написания кода.

2

Написать handler

Node.js, Python или Go: validate, call upstream, return JSON.

3

Настроить auth и секреты

API-ключ на маршруте, секреты провайдера в переменных окружения.

Multi-language tool API: lookup (Node.js) + classify (Python)

Same gateway, different runtimes. The model calls both with the same API key; secrets are scoped per function.

tools/lookup.mjs (Node.js — calls internal DB)
export async function handler(event) {
  // API key verified at gateway — handler assumes authenticated caller
  const { customerId } = JSON.parse(event.body || '{}');
  if (!customerId) return { statusCode: 400, body: JSON.stringify({ error: 'customerId required' }) };
  const record = await db.customers.findById(customerId); // DB_URL from workspace secrets
  if (!record) return { statusCode: 404, body: JSON.stringify({ error: 'not found' }) };
  return { statusCode: 200, body: JSON.stringify({ customer: record }) };
}
tools/classify.py (Python — calls OpenAI)
import json, os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])  # scoped to this tool only

def handler(event, context):
    body = json.loads(event.get("body") or "{}")
    text = body.get("text")
    if not text:
        return {"statusCode": 400, "body": json.dumps({"error": "text required"})}
    r = client.chat.completions.create(model="gpt-4o-mini",
        messages=[{"role": "user", "content": f"Classify intent: {text}"}])
    return {"statusCode": 200, "body": json.dumps({"intent": r.choices[0].message.content})}

Когда нужен отдельный tool endpoint

Когда это уместно

  • Инструмент работает с регулируемыми данными или секретами
  • Нужна изоляция зависимостей между инструментами

Когда лучше не трогать

  • Инструмент только форматирует строку без side-effects — lambda inline достаточно

Вопросы и ответы

Как передать tool URL в промпт?

URL шлюза + маршрут: `https://gateway.../tool-name`. API-ключ — в заголовке Authorization, не в промпте.

Как обрабатывать долгие tool-вызовы?

Вернуть `{ jobId }` немедленно; оркестратор опрашивает статус. Либо настроить hot containers для снижения latency.

Inquir Compute logoInquir Compute

Самый простой способ запускать AI-агентов и backend-джобы без инфраструктуры.

Связаться info@inquir.org

© 2025 Inquir Compute. Все права защищены.