первыйБитБИТ.АГЕНТЫ/туториал

Tool Use (Function Calling)

Агент с инструментами

Одно из ключевых отличий LLM-агента от просто модели — способность вызывать инструменты. Агент описывает инструменты, LLM решает, какой и когда вызвать, а код исполняет вызов.

Как это работает

  1. Разработчик описывает инструменты в JSON Schema
  2. LLM получает описание инструментов вместе с запросом пользователя
  3. LLM решает, что нужно вызвать инструмент, и возвращает tool_calls
  4. Бэкенд исполняет инструмент и возвращает результат LLM
  5. LLM формирует итоговый ответ с учётом результата

Код

tool-agent.ts
// Tool Use через Function Calling
const tools = [
  {
    type: "function",
    function: {
      name: "calculator",
      description: "Выполняет вычисления",
      parameters: {
        type: "object",
        properties: {
          expression: { type: "string" }
        },
        required: ["expression"]
      }
    }
  }
]

// LLM решает, какой инструмент вызвать
const response = await llm.chat(messages, tools)
const toolCall = response.tool_calls[0]

// Исполняем инструмент
const result = executeTool(toolCall.function.name,
  JSON.parse(toolCall.function.arguments))

// Отправляем результат обратно LLM
messages.push({ role: "tool", content: result })
const final = await llm.chat(messages)

Чат с инструментами

Спросите что-то вроде "Сколько часов в году?" или "Сколько будет 2^10?" — агент вызовет калькулятор, получит результат и ответит.

Агент с инструментами