📈 Deeper Research Bot (с TODO-листом и ветками рассуждений)
Давно чесались руки попробовать ToT (Tree of Thoughts — древовидная генерализация Chain of Thoughts, о котором рассказывал ранее), а тут ещё задумался, так ли просто запилить своего ресерч-агента, как утверждал в предыдущем посте... в общем, всё одно к одному сошлось 🤦♂️
Вообще, оно задумывалось, как очередной игрушечный агент на пару сотен строк, но в какой-то момент, что-то пошло не так, и получилось то, что получилось 🙈 Telegram-бот для глубоких исследований, на базе ToT, с возможностью добавления в контекст документов (любые текстовые форматы, .pdf, .docx, .xlsx и .pptx) a-la «NotebookLM для бедных», и ReAct-циклом с обновляемым TODO-списком и инструментами для обшаривания сети.
TODO-список, причем, я делал исключительно ради того, чтобы можно было отслеживать прогресс исследования из чата телеги. Но внезапно, его добавление ощутимо улучшило результаты ризонинга. Да так, что Plan&Execute, на основе которого сейчас делаю c0wrk (своего кодинг-агента — спойлер), местами ему даже проигрывает на одних и тех же задачах. В том числе и за счет ToT, скорее всего, но тем не менее — результаты прям приятно удивляют. Есть над чем задуматься.
Реализация ToT, если кому будет интересно, вся уложена в системный промпт, в prompts.py. Сжатие контекста сделал максимально примитивно: все ранее суммаризованные сообщения удаляются, все не суммаризованные, кроме относящихся к текущей задаче, суммаризируются. Остальное — обвязки вокруг aiogram, litellm и стандартное агентское барахло.
LiteLLM — потому, что изначально предполагал, что под ToT ReAct-цикл нужно будет жестко тюнить. Но оказалось, что не нужно, а переписывать всё под какой-нибудь LangChain стало тупо лень, поскольку, учитывая простоту агента, особого смысла в этом нет.
Да, и на основе того промпта сделал ещё и агентский скилл для ресерча, реализующий ToT — если вдруг кому захочется его попробовать, но будет лень разворачивать для этого бота.
Давно чесались руки попробовать ToT (Tree of Thoughts — древовидная генерализация Chain of Thoughts, о котором рассказывал ранее), а тут ещё задумался, так ли просто запилить своего ресерч-агента, как утверждал в предыдущем посте... в общем, всё одно к одному сошлось 🤦♂️
Вообще, оно задумывалось, как очередной игрушечный агент на пару сотен строк, но в какой-то момент, что-то пошло не так, и получилось то, что получилось 🙈 Telegram-бот для глубоких исследований, на базе ToT, с возможностью добавления в контекст документов (любые текстовые форматы, .pdf, .docx, .xlsx и .pptx) a-la «NotebookLM для бедных», и ReAct-циклом с обновляемым TODO-списком и инструментами для обшаривания сети.
TODO-список, причем, я делал исключительно ради того, чтобы можно было отслеживать прогресс исследования из чата телеги. Но внезапно, его добавление ощутимо улучшило результаты ризонинга. Да так, что Plan&Execute, на основе которого сейчас делаю c0wrk (своего кодинг-агента — спойлер), местами ему даже проигрывает на одних и тех же задачах. В том числе и за счет ToT, скорее всего, но тем не менее — результаты прям приятно удивляют. Есть над чем задуматься.
Реализация ToT, если кому будет интересно, вся уложена в системный промпт, в prompts.py. Сжатие контекста сделал максимально примитивно: все ранее суммаризованные сообщения удаляются, все не суммаризованные, кроме относящихся к текущей задаче, суммаризируются. Остальное — обвязки вокруг aiogram, litellm и стандартное агентское барахло.
LiteLLM — потому, что изначально предполагал, что под ToT ReAct-цикл нужно будет жестко тюнить. Но оказалось, что не нужно, а переписывать всё под какой-нибудь LangChain стало тупо лень, поскольку, учитывая простоту агента, особого смысла в этом нет.
Да, и на основе того промпта сделал ещё и агентский скилл для ресерча, реализующий ToT — если вдруг кому захочется его попробовать, но будет лень разворачивать для этого бота.