reasoning как отдельный тул, который определяет, что делать дальше и что вызывать.Он точно у нас должен вызываться принудительно всегда после юзерского сообщения, а достигнуть этого можно через контроль поля
tool_choice, которое буквально заставит llm вызвать этот тул!А потом следующее решение и тд -> можно спокойно дальше делать через LLM!
Так делают, например, ребята из Manus (которые сделали ставку, как почти все бигтехи РФ: разрабатываем агентов как подбор промптов и тулов, лишь бы работало)))
Управление tool_choice - не баг, а фича, это есть и в официальной доке OpenAI, и в Anthropic
И овцы целы, и волки сыты
P.S.
А в функции def reason_before_answer(), можно засунуть всеми любимый SGR!
типа она запускает reasoning_before_answer() с пустыми аргументами после юзерской реплики с помощью tool_choice, а под капотом вызывается LLM с SO, а результат -> подгружается в chat_history. Бинго!
P.P.S.
Введение в проблематику, SGR vs Tools находится тут
