mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-18 22:59:02 +03:00
ChatMessage и ChatResult несут tool_calls, у сообщения есть роль tool с tool_call_id; провайдеры принимают список ToolSpec. Формат OpenAI — в provider/openai_tools.py: chat_completions передаёт tools, разбирает tool_calls из ответа и отправляет раунд обратно модели (SPEC-0023 R-11). Признак «модель вызывает инструменты» отдаёт провайдер: OpenRouter — из supported_parameters каталога, свой endpoint — из проверочного вызова с обязательным инструментом. ai/tool_support.py кеширует ответ на пару «интеграция — модель»; карточка агента отдаёт его полем modelSupportsTools, список агентов читает только кеш (R-10). Демо-провайдер детерминированно вызывает инструменты, подходящие к вопросу, и отвечает по их результатам без сети и ключей (R-14).