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

Tool calling backend: serverless-эндпоинты для LLM function calling

OpenAI function calling, Anthropic tool use, Gemini tools — всё вызывает HTTP-эндпоинты. Inquir даёт каждому tool route отдельный контейнер, API-ключ и секреты вне промпта.

Last updated: 2026-04-20

Direct answer

Tool calling backend: serverless-эндпоинты для LLM function calling. Каждая tool function — отдельный HTTP-обработчик с API-ключом. Оркестратор (OpenAI, Anthropic) вызывает URL со структурированным JSON.

When it fits

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

Tradeoffs

  • Все tools в одном процессе — один баг в зависимости ломает все инструменты. Rollback затрагивает весь сервис.
  • Без изоляции контейнеров memory leak одного tool влияет на других.
  • Secrets in environment variables shared across all tools: rotating one breaks everything.

Где хранить логику tool calls

Если tool вызывает базу или внешний API, логика не должна жить на стороне клиента или в промпте — секреты окажутся в браузере.

Один монолитный сервис для всех tool functions — рискованный деплой и нечитаемые логи при инциденте.

Почему монолит под function calling не масштабируется

Все tools в одном процессе — один баг в зависимости ломает все инструменты. Rollback затрагивает весь сервис.

Без изоляции контейнеров memory leak одного tool влияет на других.

Secrets in environment variables shared across all tools: rotating one breaks everything.

Serverless-архитектура для function calling

Каждая tool function — отдельный HTTP-обработчик с API-ключом. Оркестратор (OpenAI, Anthropic) вызывает URL со структурированным JSON.

Секреты — в переменных окружения. Тёплый пул убирает cold start при частых tool-loops. Пайплайн продолжает работу, если tool занимает больше секунды.

Что нужно надёжному tool calling backend

Структурированный JSON ответ

Стабильный контракт ответа — оркестратор не ломается при эволюции схемы.

Auth перед хендлером

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

Async handoff

Долгий tool: вернуть `{ jobId }`, оркестратор опрашивает — или настроить горячий контейнер.

Observability

Каждый tool-вызов — строка в истории с телом запроса и ответом. Инцидент → нашёл причину за минуту.

Как добавить tool backend к LLM

1

Описать tool schema

JSON Schema в system prompt; каждый инструмент — URL шлюза Inquir + маршрут.

2

Написать handler

Получить структурированный JSON из `event.body`, вызвать upstream, вернуть JSON.

3

Настроить auth и latency

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

Tool calling flow: schema to handler

The model sees a function definition; your orchestrator maps it to a gateway route; the gateway enforces auth; the handler runs in isolation.

tool-definition.json (passed to LLM)
{
  "type": "function",
  "function": {
    "name": "search_customer",
    "description": "Look up a customer by ID or email",
    "parameters": {
      "type": "object",
      "properties": {
        "query": { "type": "string", "description": "Customer ID or email" }
      },
      "required": ["query"]
    }
  }
}
tools/search-customer.mjs (gateway function)
export async function handler(event) {
  // Auth enforced at gateway — API key checked before this code runs
  const { query } = JSON.parse(event.body || '{}');
  if (!query) return { statusCode: 400, body: JSON.stringify({ error: 'query required' }) };
  const results = await db.customers.search(query); // DB_URL from workspace secrets
  return { statusCode: 200, body: JSON.stringify({ customers: results }) };
}

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

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

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

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

  • Tool только форматирует строку без side-effects

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

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

В определении функции: `{ "type": "function", "function": { "name": "...", "url": "https://gateway.inquir.org/..." } }` — вместе с JSON Schema параметров.

Поддерживается параллельный tool use?

Да. Каждый параллельный вызов — отдельный HTTP-запрос к своему маршруту; Inquir масштабирует независимо.

Inquir Compute logoInquir Compute

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

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

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