Claude Deep Research, или как я перестал беспокоиться и полюбил мультиагентные системы
Обычно я стараюсь подходить ко всяким новым блестящим штучкам с определенной долей скептицизма. Именно таким, до недавнего времени, было мое отношение к мультиагентным системам. Я бы сказал, что это неудивительно, так как вокруг них сейчас очень много шума, а по-настоящему успешных примеров такого подхода я не видел. Большинство реализаций, которые действительно работали, относились к одному из следующих видов: Агентные системы, действующие по определенному плану. То есть LLM с инструментами, натасканные на автоматизацию вполне конкретного процесса. Благодаря этому, каждый шаг можно тестировать по отдельности и верифицировать его результаты. Описываются такие системы, как правило, в виде направленного ациклического графа (DAG), иногда динамического, и разрабатываются с помощью уже стандартных примитивов из фреймворков типа LangChain и Griptape1. Так функционировала ранняя реализация Gemini Deep Research, в которой сначала составлялся план поиска, затем выполнялся сам поиск, и в конце собирался результат. Решения, работающие в системах с обратной связью. Различные Claude Code, Cursor и прочие агенты, имеющие дело с кодом. Причем чем сильнее обратная связь, читай, чем лучше тулинг и строже проверка типов, тем больше шансов, что они окончательно не испортят вам кодовую базу2. Модели, обученные с помощью Reinforcement Learning, такие как модели с interleaved thinking, вроде OpenAI o3. Это отдельный разговор, и очень интересный, но даже такие модели имеют какой-то modus operandi, определенный особенностями их обучения. При этом мультиагентные системы открытого типа ввиду их общей ненадежности до сих пор существовали в большей части в виде proof of concept. В сообществе не было понимания, где их применять и как именно их реализовывать. Пока не появилась глубокая инженерная статья от Anthropic о том, как они разрабатывали свой Deep Research. В ней был определен достаточно четкий фреймворк для построения таких систем, и именно его мы сегодня и рассмотрим. ...
Июньское обновление MCP: Безопаснее, умнее, проще?
Model Context Protocol, несмотря на агрессивное его внедрение (а возможно, и благодаря), продолжает развиваться. Недавно Anthropic обновил спецификацию MCP, и ниже мы рассмотрим основные изменения. Усиление безопасности MCP-сервер теперь всегда классифицируется как OAuth Resource Server, а клиенты обязаны реализовывать Resource Indicators (RFC 8707). Нужно это для защиты от атак типа Confused Deputy. Раньше токены, запрашиваемые клиентом у сервера авторизации были “обезличены”, то есть могли использоваться кем угодно. Это дает возможность злоумышленнику создать фишинговый MCP-сервер, обмануть клиента, украсть токен, и с помощью этого токена получить доступ к настоящему MCP-серверу. ...
Блоги, в которые пишут люди
В то время, когда слова AI и хайп практически стали синонимами, очень важно грамотно подходить к выбору источников информации. Вокруг сейчас слишком много информационного шума, и отобрать что-то действительно стоящее из моря статей различных AI-евангелистов и сгенерированного мусора невероятно сложно. В этом посте я расскажу, какие материалы читаю я, чтобы быть в курсе последних событий. Блоги Хороший блог — это слиток золота. Отношение сигнал/шум в нем стремится к бесконечности. Именно поэтому начну со списка блогов, которые я считаю полезными. ...
Отравленный контекст: скрытая угроза при использовании нескольких GPT
Лето. Пришла пора куда-то выбраться в отпуск. Открываем ChatGPT, выбираем активно набирающий популярность GPT “Travel Advisor”, обсуждаем варианты. Советник дает отличные советы и очень интересно рассказывает про местные достопримечательности, генерирует весьма неплохие планы, и в целом оставляет хорошее впечатление. Местами, конечно, проскакивают странности, но мы их пропускаем как безобидные галлюцинации. Отлично, останавливаемся на Барселоне. В том же чате переключаемся на другой, не менее знакомый и популярный GPT “Booking Agent”, который нас никогда не подводил, и бронируем жилье. ...
Griptape, часть 2: Строим графы
В прошлом посте я провел разбор базовых концептов AI-фреймворка Griptape, и сейчас самое время применить их к делу. Попробуем их использовать для разработки небольшого приложения, которое помогает вести линк-блог в телеграме. Приложение будет получать URL, скачивать его, прогонять через LLM для генерации сокращенного содержания, переводить это содержимое еще на несколько языков, собирать все вместе и публиковать в телеграме через бота. Общий флоу можно увидеть на схеме ниже: flowchart LR A["URL"] A --> Parser["Парсер"] --> LLM1["Суммаризатор"] LLM1 --> Translator1["Перевод на язык 1"] LLM1 --> Translator2["Перевод на язык 2"] Translator1 --> Combiner["Сборщик"] Translator2 --> Combiner LLM1 --> Combiner Combiner --> Telegram["Телеграм-бот"] Для простоты картины я опущу имплементацию телеграм-бота, а также оставлю в покое мой любимый Human-in-the-loop, который, по моему мнению, обязательно должен присутствовать как минимум где-то в районе сборщика 1. ...
OpenAI Codex получил доступ в интернет: первые впечатления
Что еще за Codex? Хороший вопрос, правда. Дело в том, что до недавнего времени у OpenAI была модель Codex, которая использовалась как основа для автодополнения в GitHub Copilot. Затем OpenAI выпустили консольного агента для разработки, которого они назвали, чтобы никто не перепутал, Codex. 1 Все посмеялись над умением OpenAI подбирать имена 2, и продолжили жить дальше. Пока не настал знаменательный день, в который в твиттере появился вот такой пост от Сэма Альтмана: Я был заинтригован. Во-первых, нагнетанием хайпа, используя фразу “low-key research preview” 3, а во-вторых, этим самым именем. Впрочем, я не был разочарован: ...
Griptape: Фреймворк для AI приложений, часть 1: Введение
Итак, Griptape. Фреймворк для построения AI приложений, предлагающий чистый питонячий API для тех, кто устал от уровней абстракции LangChain. Предлагает примитивы для построения ассистентов, RAG-систем, и интеграции с внешними инструментами. Честно говоря, по моему опыту, большинство людей, уставших от langchain, уходит на самописные обертки над более низкоуровневыми библиотеками, вроде openai или litellm. Но кто, знает, может быть зря. Разберемся. Немного истории Лично я про Griptape слышу уже года полтора, и начинал он как этакий конкурент LangChain с довольно похожими примитивами, но постепенно их пути разошлись. На момент написания этого поста у него 2.3k звезд на гитхабе, что несколько меньше, чем 109k лангчейна, но все же достаточно, чтобы считать проект достаточно взрослым. Кроме открытого фреймворка, он обзавелся своим облаком, в котором можно запускать свои приложения, ETLки и RAGи, и графический конструктор Griptape Nodes, позволяющий непрофессионалам накликивать приложения мышкой за считанные минуты. 1 ...
Обзор Re:Camera, часть 1
Ну, начали Попала мне в руки Re:Camera от Seeed. По сути, маленькая коробочка (кубик сантиметра 4 ребром), опоясанная радиатором. Внутри двухъядерный MPU (updated: в системе видно только одно ядро, второе, похоже, зарезервировано под специальные операции) на основе RISC-V, древний микроконтроллер на 8051, сенсор камеры от OmniVision, диоды для подсветки, Wi-Fi, BT, ну и всякая периферия. Оперативной памяти маловато, всего 256 мегабайт, так что Greengrass поставить будет проблематично. Можно подключить Ethernet через специальный шнурок-переходник, который еле держится, но для разработки незачем, потому что камера раздает сеть по USB Type C, и работать проще через него. Кстати, включается этот переходник во что-то, подозрительно напоминающее grove plug от того же Seeed, что, вкупе с документацией, намекает на возможность подключения внешних сенсоров. Если мало памяти (а поставляется устройство в вариантах с 8 и 64 ГБ встроенной памяти), можно воткнуть MicroSD. Еще коробку можно прицепить к чему-нибудь металлическому, потому что есть магнитики на одной из сторон. ...