Система tools
Как работает мультитулзовая архитектура Friedrich
Система tools
Friedrich использует мультитулзовую архитектуру. LLM выступает «мозгом» и маршрутизирует запросы в нужный инструмент.
Как это работает
- Пользователь пишет сообщение
brain.pyотправляет его в LLM с описанием всех доступных tools- LLM возвращает либо обычный текст (чат), либо JSON с вызовом tool:
{
"action": "tool",
"method": "keitaro.create_flow",
"params": {"offer_id": 1234, "geo": "Ру", "weight": null}
}main.pyпроверяет есть ли все обязательные параметры- Если чего-то не хватает — создаёт сессию и спрашивает по очереди
- Когда все параметры собраны — вызывает метод 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 канала
Это позволяет логировать кто и откуда сделал запрос, а в будущем — авторизацию.