Friedrich the Great!

Система tools

Как работает мультитулзовая архитектура Friedrich

Система tools

Friedrich использует мультитулзовую архитектуру. LLM выступает «мозгом» и маршрутизирует запросы в нужный инструмент.

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

  1. Пользователь пишет сообщение
  2. brain.py отправляет его в LLM с описанием всех доступных tools
  3. LLM возвращает либо обычный текст (чат), либо JSON с вызовом tool:
{
  "action": "tool",
  "method": "keitaro.create_flow",
  "params": {"offer_id": 1234, "geo": "Ру", "weight": null}
}
  1. main.py проверяет есть ли все обязательные параметры
  2. Если чего-то не хватает — создаёт сессию и спрашивает по очереди
  3. Когда все параметры собраны — вызывает метод tool'а

Регистрация tools

Каждый tool — это Python-модуль в agent/tools/ который экспортирует:

  • TOOL_DESCRIPTION — текстовое описание для LLM (вставляется в system prompt)
  • METHOD_FIELDS — словарь метод → список обязательных полей
  • FIELD_PROMPTS — промпты и ошибки для каждого поля
  • METHODS — словарь метод → async-функция
  • execute(method, params, user_id, channel_id) — диспетчер

Метаданные запроса

Каждый вызов tool'а получает:

  • user_id — Slack User ID отправителя
  • channel_id — Slack Channel ID канала

Это позволяет логировать кто и откуда сделал запрос, а в будущем — авторизацию.

On this page