Создание собственного недоумения: архитектура за глубокими исследованиями на основе ИИ ☀️ Пробуждение для разработчиков Многие программисты потеряют работу для ИИ в ближайшие годы, но не те, кто научится строить его.Ваша миссия заключается не только в том, чтобы узнать, как использовать ChatGPT или Claude — это стать создателем таких систем, чтобы построить следующий Perplexity, а не просто использовать его. ☀️ Пробуждение для разработчиков Многие программисты потеряют работу для ИИ в ближайшие годы, но не те, кто научится строить его.Ваша миссия заключается не только в том, чтобы узнать, как использовать ChatGPT или Claude — это стать создателем таких систем, чтобы построить следующий Perplexity, а не просто использовать его. Открытый источник : https://github.com/aifa-agi/aifa-deep-researcer-starter/ 1. What You'll Master by Reading This Article Что вы овладеете, прочитав эту статью Эта статья предоставляет полный архитектурный план построения вашего собственного глубокого исследовательского агента ИИ, похожего на функцию «Глубокие исследования» Perplexity. Как разработать рекурсивную систему поиска с использованием Next.js 15, OpenAI и exa.ai, которая фактически работает в производстве Technical Architecture Почему глубокое поиск является деревянной структурой, а не линейным процессом — и как это меняет все о исследованиях в области ИИ Mental Models Как интегрировать внешний веб-поиск с внутренними векторными базами знаний, чтобы создать действительно уникальный контент, который ваши конкуренты не могут воспроизвести Practical Solutions Как управлять ресурсами сервера и пользовательским опытом во время длительных операций с ИИ, не нарушая банка Performance Optimization Бетонные имплементации TypeScript с использованием современного технологического стека, который вы можете развернуть сегодня Production-Ready Code К концу этой статьи у вас будет четкое понимание того, как создать самохостинговую SaaS для глубоких исследований, которые могут быть интегрированы в любой продукт — предоставляя вам конкурентное преимущество, которое действительно трудно воспроизвести. 1.1. The Technology Stack That Powers Intelligence Для реализации нашего глубокого исследовательского агента ИИ мы используем современный технологический стек, оптимизированный для готовых к производству приложений с интенсивным использованием ИИ. 1.1.1. Frontend and Framework Последняя версия с улучшенной производительностью и новыми возможностями одновременного рендеринга, которые плавно справляются со сложными взаимодействиями с ИИ React 19 Полная структура React с App Router, включая поддержку параллельных и перехватных маршрутов (идеально подходит для сложных рабочих процессов ИИ) Next.js 15 Строгое введение для надежности кода и превосходного опыта разработчиков при создании сложных систем ИИ TypeScript 5 1.1.2. AI and Integrations Официальный SDK для интеграции с GPT-4 и другими моделями OpenAI, с полной потоковой поддержкой OpenAI SDK (v4.96.2) Универсальная библиотека для работы с различными поставщиками ИИ, предоставляя вам гибкость при переключении моделей AI SDK (v4.1.45) Специализированная поисковая система, ориентированная на ИИ для семантического поиска, которая действительно понимает контекст Exa.js (v1.4.10) 1.1.3. UI and Styling Фреймворк CSS для быстрой разработки без ущерба для качества дизайна Tailwind CSS 4 Безголовые компоненты для создания доступных интерфейсов, которые работают на всех устройствах Radix UI — Современная библиотека икон с последовательным языком дизайна Lucide React Компонентная система, построенная на Radix UI и Tailwind CSS для профессиональных интерфейсов shadcn/ui 1.1.4. Forms and Validation Высокопроизводительная библиотека для обработки форм, которая не замедляет интерфейсы ИИ React Hook Form Схема подтверждения TypeScript с статическим вводом, которая улавливает ошибки до того, как они достигнут производства Zod Бесшовная интеграция между Zod и React Hook Form Hookform Resolvers 1.1.5. Content Processing Маркировка контента с поддержкой компонентов для богатых отчетов, генерируемых ИИ React Markdown — Современная библиотека для обработки дат в научно-исследовательских сроках ИИ date-fns Why This Stack Matters Эта технология Stack обеспечивает , , и Каждый выбор здесь намеренный — от параллельных маршрутов Next.js 15 для обработки сложных рабочих процессов ИИ до Exa.js, предоставляющих семантические возможности поиска, которые делают глубокие исследования возможными. high performance type safety scalability Система, которая может справиться с вычислительной сложностью рекурсивных исследований ИИ при сохранении стандартов пользовательского опыта, которые требуют современные приложения. The result? Готовы увидеть, как эти кусочки вписываются вместе, чтобы создать что-то действительно мощное? давайте погрузимся в архитектуру, которая делает все работать. Революция искусственного интеллекта не наступает — она здесь.И она создает резкий разрыв в сообществе разработчиков.С одной стороны, есть те, кто видит ИИ как еще один инструмент для повышения производительности, используя ChatGPT для написания функций и дебаг кода.С другой стороны, есть разработчики, которые понимают фундаментальную истину: . the real opportunity isn't in using AI—it's in building it В то время как большинство разработчиков учатся стимулировать ChatGPT более эффективно, меньшая группа овладевает архитектурой систем, таких как Perplexity, Claude и персонализированные агенты ИИ. Это не только о том, чтобы оставаться актуальным; это о том, чтобы позиционировать себя на правой стороне самого значительного технологического сдвига с момента появления Интернета. Компании не нуждаются в разработчиках, которые могут использовать инструменты ИИ — им нужны разработчики, которые могут создавать системы ИИ.Разница между этими двумя навыками будет определять, кто процветает и кто становится устаревшим в следующем экономическом цикле. The harsh reality Эта статья предоставляет полный архитектурный план построения вашего собственного глубокого исследовательского агента, работающего на ИИ, похожий на функцию «Глубокие исследования» Perplexity. Вы узнаете не только техническую реализацию, но и ментальные модели и принципы дизайна, которые отделяют интеграции любительского ИИ от готовых к производству систем, которые могут стать конкурентными преимуществами. : What you'll master by the end Рекурсивная поисковая архитектура: как проектировать системы, которые думают в деревьях, а не линиях AI-first data pipelines: интеграция внешнего веб-поиска с внутренними базами знаний Агентская оркестрация: создание систем ИИ, которые могут оценивать, повторять и улучшать свои собственные выходы Производственные соображения: управление ресурсами серверов, временными интервалами и пользовательским опытом для долгосрочных операций с ИИ Цель не в том, чтобы дать вам код для копирования, а в том, чтобы передать архитектурное мышление, которое позволит вам проектировать системы ИИ для любого домена, любого случая использования и любого масштаба. Готовы перейти от потребителя искусственного интеллекта к архитектору искусственного интеллекта? Давайте погрузимся в то, почему традиционные LLM нуждаются в "путеводительской собаке", чтобы эффективно перемещаться по Интернету. 2. Introduction: Life After ChatGPT Changed Everything Введение: жизнь после ChatGPT изменила все ChatGPT и другие большие языковые модели (LLM) фундаментально революционизировали то, как мы взаимодействуем с информацией. но если вы создавали серьезные приложения с помощью этих инструментов, вы, вероятно, попали в ту же стену, что и я: . models only know the world up to their training cutoff date, and they hallucinate with alarming confidence 2.1. The Problem: Band-Aid Web Search in Modern LLMs Команды, стоящие за ChatGPT, Claude и другими моделями, пытались решить это с помощью встроенного веб-поиска.Это звучит хорошо в теории, но углубитесь глубже, и вы найдете некоторые серьезные архитектурные недостатки, которые делают его непригодным для производственных приложений: Система делает один или два поисковых запроса, захватывает первые несколько результатов и называет его днем. Surface-Level Search Если первый поиск не дает всеобъемлющих результатов, система не задает последующие вопросы или не исследует альтернативные углы. Zero Follow-Through Традиционные поисковые системы возвращают HTML-страницы, запутанные рекламными объявлениями, элементами навигации и несущественным контентом. Garbage Data Quality Система не может соединить найденную информацию с вашими внутренними данными, корпоративными документами или доменными базами знаний. Context Isolation 2.2. The Gold Standard: Perplexity's Deep Research Revolution Perplexity была первой компанией, которая показала нам, как должна работать поисковая интеграция LLM. Их подход принципиально отличается от этих решений: Вместо общих запросов Google API, они используют специализированные поисковые системы, которые возвращают чистый, структурированный контент, предназначенный для потребления ИИ. AI-Optimized Search Engines Система не останавливается на первоначальных результатах, анализирует результаты, формулирует новые вопросы и продолжает искать, пока не составит полную картину. Iterative Investigation Process Это автономный агент ИИ, который может работать в течение нескольких минут, рекурсивно буриться по темам и собирать информацию из десятков источников. Deep Research Mode This is exactly the kind of system we're going to build together. 2.3. Why This Matters for Every Developer В эру ИИ-первого, каждый продукт гоняется, чтобы стать «умнее».Но просто подключение в API ChatGPT сейчас просто стоят на столе. Изучение актуальной информации из интернета в реальном времени Соедините публичные данные с вашими собственными базами знаний Создайте уникальные идеи, которые невозможно получить от стандартных LLM Адаптируйтесь к вашему конкретному бизнесу и отраслевым нюансам 2.4. What You'll Walk Away With Моя цель не в том, чтобы дать вам код для копирования (хотя вы получите много этого). я хочу передать ментальные модели и архитектурные принципы, которые позволят вам: Понять философию глубоких исследований в области ИИ Дизайн архитектуры для вашего конкретного случая использования Реализация системы с использованием современного стека (Next.js 15, OpenAI, exa.ai) Интегрировать решение в любой существующий продукт Скалирование и оптимизация системы для ваших потребностей К концу этой статьи у вас будет полный архитектурный план и готовые к производству примеры кода для создания собственного «Заблуждения» — агента ИИ, который может стать секретным оружием вашего продукта. : Мы будем изучать не только техническую реализацию, но и бизнес-логику.Почему рекурсивный поиск более эффективен, чем линейный?Как правильно сочетать внешние и внутренние источники?Какие модели UX работают для длительных операций ИИ?Эти вопросы так же важны, как и код. Important 2.5. For the Impatient: Skip to the Code Для тех, кто уже получил концепции и хочет погрузиться прямо в имплементацию, вот решение с открытым исходным кодом, которое мы будем строить: https://github.com/aifa-agi/aifa-deep-researcer-starter https://github.com/aifa-agi/aifa-deep-researcer-starter Лично я не могу выдержать статьи, которые дают вам много слов и мало субстанции.Не стесняйтесь клонировать репо и запустить его в режиме разработки прямо сейчас. : Вы столкнетесь с ограничениями времени (403 ошибки) на уровне бесплатного хостинга Vercel в производстве, но на localhost вы можете полностью экспериментировать и изучать журналы к контенту своего сердца. Pro tip Давайте начнем с понимания, почему LLM нуждаются в "путеводительской собаке", чтобы эффективно перемещаться по Интернету. 3. Why LLMs Need a "Guide Dog": The Critical Role of External Search Systems Почему LLM нуждаются в "собаке-гиде": критическая роль внешних систем поиска Вот жесткая правда, которую многие разработчики учатся дорогостоящим способом: Это не ошибка — это фундаментальное архитектурное ограничение, которое требует сложного решения: интеграция со специализированными поисковыми системами, предназначенными для потребления ИИ. Large Language Models cannot independently access current information from the internet 3.1. Why Traditional Search Engines Are AI Poison Google, Bing и другие традиционные поисковые системы были построены для людей, которые просматривают веб-сайты, а не для машин, которые обрабатывают данные. Блоки объявлений и беспорядок в навигации, которые путают извлечение контента Нерелевантный контент (комментарии, боковые панели, футзалы, баннеры cookie) Неструктурированные данные, требующие сложного анализирования и часто неудачи javascript// The traditional approach - a nightmare for AI const htmlResponse = await fetch('https://api.bing.com/search?q=query'); const messyHtml = await htmlResponse.text(); // You get HTML soup with ads, scripts, and digital garbage // Good luck extracting meaningful insights from this mess Я видел, что команды тратят недели на создание HTML-апсеров, только чтобы заставить их разорвать каждый раз, когда крупный сайт обновляет свой макет. It's not scalable, and it's definitely not reliable. 3.2. Keyword Matching vs. Semantic Understanding: A World of Difference Традиционные поисковые системы ищут точные соответствия слов, полностью игнорируя контекст и значение. Запрос, такой как «Next.js оптимизация для электронной коммерции» может пропустить отличную статью о «повышении производительности приложений React в интернет-магазинах», даже если они являются семантически идентичными темами. Это похоже на то, что у вас есть исследовательский помощник, который может найти книги только путем сопоставления точных слов в названии, игнорируя все о реальном содержании. For AI agents doing deep research, this approach is fundamentally broken. 3.3. AI-Native Search Engines: The Game Changer Специализированные системы, такие как Exa.ai, Metaphor и Tavily, решают основные проблемы, которые делают традиционный поиск непригодным для ИИ: Семантическое понимание Они используют векторные представления для поиска по значению, а не только по ключевым словам. ваш ИИ может найти соответствующий контент даже тогда, когда точные термины не совпадают. Чистые, структурированные данные Они возвращают предварительно обработанный контент без HTML мусора. Контекстная осведомленность Они понимают предыдущие запросы и общий контекст исследований, позволяя поистине итеративное исследование. javascript// The AI-native approach - clean and powerful const cleanResults = await exa.search({ query: "Detailed analysis of Next.js performance optimization for high-traffic e-commerce platforms", type: "neural", contents: { text: true, summary: true } }); // You get clean, relevant content ready for AI processing // No parsing, no cleanup, no headaches 3.4. Why This Matters for Production Systems Качество ваших входных данных напрямую определяет качество вашего конечного результата исследований. Структурированный контент без необходимости хрупкого анализирования HTML Стабильные API, предназначенные для автоматизированного использования с большим объемом Сниженная вычислительная перегрузка для обработки данных Лучшая релевантность источников приводит к лучшему окончательному пониманию Data Reliability Scalability Cost Efficiency Accuracy javascript// Hybrid search: external + internal sources const [webResults, vectorResults] = await Promise.all([ exa.search(query), vectorStore.similaritySearch(query) ]); const combinedContext = [...webResults, ...vectorResults]; // Now your AI has both current web data AND your proprietary knowledge 3.5. The Bottom Line: Architecture Matters Искусственный интеллект — это не просто техническая деталь. Без правильной «путеводительской собаки», даже самый сложный LLM будет бороться, чтобы создать глубокий, точный анализ текущей информации. they're the architectural foundation Подумайте об этом так: вы бы не отправили блестящего исследователя в библиотеку, где все книги написаны в коде, а половина страниц - это реклама. Дайте вашему ИИ правильные инструменты для работы.В следующем разделе мы погрузимся в конкретные архитектурные паттерны, которые делают возможными рекурсивные, глубокие исследования. The solution? Давайте исследуем системный дизайн, который обеспечивает поистине интеллектуальные исследовательские агенты ИИ. 4. Think Like a Tree: The Architecture of Recursive Search 4. Think Like a Tree: The Architecture of Recursive Search Человеческий мозг естественным образом структурирует сложную информацию в виде иерархических сетей.Когда исследователь исследует новую тему, они не движутся в прямой линии — они развивают деревоподобную сеть знаний, где каждое новое открытие генерирует дополнительные вопросы и направления исследований. 4.1. The Fundamental Difference in Approaches Традиционные поисковые системы и встроенный веб-поиск в LLM работают линейно: получать запрос → выполнять поиск → возвращать результаты → генерировать ответы. Problems with the Linear Approach: Результаты на уровне поверхности: система останавливается при первых фактах, которые обнаруживает Нет непрерывности контекста: каждый поисковый запрос изолирован от предыдущего Отсутствие соединений: система не может видеть отношения между различными аспектами темы Случайное качество: результаты полностью зависят от удачи первоначального запроса Подход на основе дерева решает эти проблемы, моделируя естественный процесс человеческого исследования.Каждый обнаруженный источник может генерировать новые вопросы, которые становятся отдельными отраслями исследований. 4.2. Anatomy of a Search Tree Рассмотрим структуру глубокого поискового дерева с конкретным примером: textNext.js vs WordPress for AI Projects/ ├── Performance/ │ ├── Source 1 │ ├── Source 2 │ └── Impact of AI Libraries on Next.js Performance/ │ └── Source 7 ├── Development Costs/ │ ├── Source 3 │ └── Source 4 └── SEO and Indexing/ ├── Source 5 └── Source 6 являются основными аспектами темы, которые LLM генерирует на основе анализа первоначального запроса. В нашем примере это производительность, стоимость и SEO. Эти субтемы не формируются случайно - LLM анализирует семантическое пространство запроса и определяет ключевые направления исследований. First-level branches are specific sources (articles, documents, studies) found for each sub-query. Each leaf contains factual information that will be included in the final report. Tree leaves Когда система анализирует найденные источники, она может обнаружить новые аспекты темы, которые требуют дополнительного исследования. Recursive branches 4.3. Practical Advantages of Tree Architecture Вместо случайного набора фактов система строит логически связанную карту знаний, где каждый элемент имеет свое место в общей структуре. Research Completeness : Система автоматически определяет, какие направления требуют более глубокого расследования.Если одна ветвь дает много соответствующих источников, система может пойти глубже.Если направление оказывается неинформативным, поиск прекращается раньше. Adaptive Depth Каждый новый поисковый запрос формируется с учетом уже найденной информации, что позволяет задавать более точные и конкретные вопросы, чем изолированные поисковые запросы. Contextual Connectivity На каждом уровне дерева система может оценивать актуальность и качество найденных источников, фильтруя шум и концентрируя внимание на самой ценной информации. Quality Assessment 4.4. Managing Tree Parameters определяет, сколько уровней рекурсии может выполнить система. Глубина 1 означает только основные подзапросы без дальнейшего бурения. Глубина 3-4 позволяет провести поистине детальное исследование. Search Depth Контролирует количество подзапросов на каждом уровне. Слишком большая ширина может привести к поверхностному исследованию многих направлений. Оптимальная ширина обычно составляет 3-5 основных направлений на уровень. Search Width В контексте поиска информации это соответствует количеству новых подзапросов, генерируемых на основе каждого найденного источника. Branching Factor 4.5. Optimization and Problem Prevention Система должна отслеживать уже исследованные направления, чтобы избежать бесконечных циклов рекурсии. Cycle Prevention Более перспективные отрасли следует исследовать с большей глубиной, в то время как менее информативные направления могут быть прекращены раньше. Dynamic Prioritization Различные ветви деревьев можно исследовать параллельно, значительно ускоряя процесс, когда имеются достаточные вычислительные ресурсы. Parallel Investigation Результаты поиска должны быть кешированы, чтобы избежать повторных запросов на внешние API, когда темы перекрываются. Memory and Caching : Это еще одна проблема, которая часто проявляется при проведении глубоких исследований, особенно если глубина превышает два уровня. Вы можете сказать, что увеличение уровня экспоненциально увеличивает сложность исследований. Execution Time and Server Timeouts 4.6. The Bottom Line: From Chaos to System Архитектура дерева превращает хаотичный процесс поиска информации в систематическое расследование, где каждый элемент имеет свое место в общей структуре знаний.Это позволяет агенту ИИ работать как опытный исследователь — не только собирая факты, но и создавая всестороннее понимание исследуемой темы. Система ИИ, которая думает как человеческий исследователь, но работает в масштабе и скорости машин.В следующем разделе мы погрузимся в техническую реализацию, которая делает это архитектурное видение реальностью. The result? Готовы увидеть, как мы переводим эту концептуальную структуру в производственный код? давайте исследуем технический набор, который дает возможность рекурсивного интеллекта. 5. The "Search-Evaluate-Deepen" Cycle: Implementing True Recursion Цикл «поиск-оценка-глубина»: реализация истинной рекурсии Рекурсивный интернет-анализ — это не просто техническая особенность — это фундаментальная необходимость для создания действительно умных агентов ИИ. Первая страница любых результатов поиска показывает только верхушку айсберга информации. 5.1. Data Architecture for Deep Investigation В производственных реализациях система работает с структурированными типами данных, которые накапливают знания на каждом уровне рекурсии: typescripttype Learning = { learning: string; followUpQuestions: string[]; }; type SearchResult = { title: string; url: string; content: string; publishedDate: string; }; type Research = { query: string | undefined; queries: string[]; searchResults: SearchResult[]; knowledgeBaseResults: string[]; // Vector database responses learnings: Learning[]; completedQueries: string[]; }; Эта структура данных накапливает знания на каждом уровне рекурсии, создавая единый контекст для всего расследования — именно то, что отделяет профессиональные исследования от случайного сбора фактов. 5.2. Stage 1: "Search" — Intelligent Query Generation Система не опирается на один поисковый запрос. Вместо этого она генерирует несколько целевых запросов с использованием интеллекта LLM: typescriptconst generateSearchQueries = async (query: string, breadth: number) => { const { object: { queries }, } = await generateObject({ model: mainModel, prompt: `Generate ${breadth} search queries for the following query: ${query}`, schema: z.object({ queries: z.array(z.string()).min(1).max(10), }), }); return queries; }; • The параметр контролирует ширину исследования — количество различных аспектов темы, которые будут исследовать параллельно.В этом месте происходит магия: вместо линейного поиска вы получаете экспоненциальное покрытие. Key insight breadth 5.3. Stage 2: "Evaluate" — AI-Driven Result Filtering Не все найденные источники одинаково ценны.Система использует агента ИИ с инструментами для интеллектуальной оценки каждого результата: typescriptconst searchAndProcess = async (/* parameters */) => { const pendingSearchResults: SearchResult[] = []; const finalSearchResults: SearchResult[] = []; await generateText({ model: mainModel, prompt: `Search the web for information about ${query}, For each item, where possible, collect detailed examples of use cases (news stories) with a detailed description.`, system: "You are a researcher. For each query, search the web and then evaluate if the results are relevant", maxSteps: 10, tools: { searchWeb: tool({ description: "Search the web for information about a given query", parameters: z.object({ query: z.string().min(1) }), async execute({ query }) { const results = await searchWeb(query, breadth, /* other params */); pendingSearchResults.push(...results); return results; }, }), evaluate: tool({ description: "Evaluate the search results", parameters: z.object({}), async execute() { const pendingResult = pendingSearchResults.pop(); if (!pendingResult) return "No search results available for evaluation."; const { object: evaluation } = await generateObject({ model: mainModel, prompt: `Evaluate whether the search results are relevant and will help answer the following query: ${query}. If the page already exists in the existing results, mark it as irrelevant.`, output: "enum", enum: ["relevant", "irrelevant"], }); if (evaluation === "relevant") { finalSearchResults.push(pendingResult); } return evaluation === "irrelevant" ? "Search results are irrelevant. Please search again with a more specific query." : "Search results are relevant. End research for this query."; }, }), }, }); return finalSearchResults; }; Система использует агента ИИ с инструментами, которые могут неоднократно искать и оценивать результаты, пока она не найдет достаточно соответствующей информации. Revolutionary approach 5.4. Vector Knowledge Base Integration Реальная мощность возникает из синергии между внешним и внутренним поиском.За каждый запрос система одновременно ищет интернет и свою собственную векторную базу знаний: typescriptasync function getKnowledgeItem(query: string, vectorStoreId: string) { const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const response = await client.responses.create({ model: "gpt-4o-mini", tools: [ { type: "file_search", vector_store_ids: [vectorStoreId], max_num_results: 5, }, ], input: [ { role: "developer", content: `Search the vector store for information. Output format language: ${process.env.NEXT_PUBLIC_APP_HTTP_LANG || "en"}`, }, { role: "user", content: query, }, ], }); return response.output_text; } 5.5. Practical Implementation В главном исследовательском цикле система спрашивает оба источника параллельно: typescriptfor (const query of queries) { const searchResults = await searchAndProcess(/* web search */); accumulatedResearch.searchResults.push(...searchResults); if (vectorStoreId && vectorStoreId !== "") { const kbResult = await getKnowledgeItem(query, vectorStoreId); accumulatedResearch.knowledgeBaseResults.push(kbResult); } } 5.6. Stage 3: "Deepen" — Generating Follow-Up Questions 5.6. Stage 3: "Deepen" — Generating Follow-Up Questions Самая мощная особенность: способность системы генерировать новые направления исследований на основе уже найденной информации: typescriptconst generateLearnings = async (query: string, searchResult: SearchResult) => { const { object } = await generateObject({ model: mainModel, prompt: `The user is researching "${query}". The following search result were deemed relevant. Generate a learning and a follow-up question from the following search result: <search_result> ${JSON.stringify(searchResult)} </search_result>`, schema: z.object({ learning: z.string(), followUpQuestions: z.array(z.string()), }), }); return object; }; 5.7. Recursive Deepening Each found source is analyzed to extract new questions that become the foundation for the next search level: typescriptfor (const searchResult of searchResults) { const learnings = await generateLearnings(query, searchResult); accumulatedResearch.learnings.push(learnings); accumulatedResearch.completedQueries.push(query); const newQuery = `Overall research goal: ${prompt} Previous search queries: ${accumulatedResearch.completedQueries.join(", ")} Follow-up questions: ${learnings.followUpQuestions.join(", ")}`; await deepResearch( /* search parameters */, newQuery, depth - 1, Math.ceil(breadth / 2), // Reduce width at each level vectorOfThought, accumulatedResearch, vectorStoreId ); } 5.8. Managing Depth and Complexity The production implementation shows how to manage exponential complexity growth: typescriptconst deepResearch = async ( /* multiple filtering parameters */, prompt: string, depth: number = 2, breadth: number = 5, vectorOfThought: string[] = [], accumulatedResearch: Research = { query: undefined, queries: [], searchResults: [], knowledgeBaseResults: [], learnings: [], completedQueries: [], }, vectorStoreId: string ): Promise<Research> => { if (depth === 0) { return accumulatedResearch; // Base case for recursion } // Adaptive query formation based on "thought vector" let updatedPrompt = ""; if (vectorOfThought.length === 0) { updatedPrompt = prompt; } else { const vectorOfThoughItem = vectorOfThought[vectorOfThought.length - depth]; updatedPrompt = `${prompt}, focus on these important branches of thought: ${vectorOfThoughItem}`; } // ... rest of implementation }; 5.9. Key Optimizations : → на каждом уровне предотвращает экспоненциальный рост : → позволяет направлять исследования в конкретные области Все результаты сохраняются в единой структуре данных Width Reduction Math.ceil(breadth / 2) Thought Vector vectorOfThought Context Accumulation 5.10. The Hybrid Advantage in Practice Сочетание публичных данных с внутренними знаниями позволяет создавать отчеты, которые никто другой не может воспроизвести.Ваши конкуренты могут получить доступ к тем же публичным источникам, но не к вашим внутренним случаям, статистике и экспертизе. Creating Unique Content Внешние данные обеспечивают валюту и ширину, внутренние данные обеспечивают глубину и специфику.Система может найти общие тенденции отрасли в Интернете, а затем дополнить их своими данными о том, как эти тенденции влияют на ваш бизнес. Context Enrichment Даже если веб-информация устарела или неточна, ваша внутренняя база знаний может предоставить свежие и проверенные данные. Maintaining Currency 6. From Chaos to Order: Generating Expert-Level Reports 6. From Chaos to Order: Generating Expert-Level Reports После завершения всех уровней рекурсивного поиска система накапливает огромное количество дифференцированной информации: результаты веб-поиска, данные векторной базы данных, генерируемые знания и последующие вопросы. 6.1. Context Accumulation: Building the Complete Picture Все собранные данные объединены в единый Структура, которая служит полным контекстом для окончательного синтеза: Research typescripttype Research = { query: string | undefined; // Original query queries: string[]; // All generated search queries searchResults: SearchResult[]; // Web search results knowledgeBaseResults: string[]; // Vector database responses learnings: Learning[]; // Extracted insights completedQueries: string[]; // History of completed queries }; — это всеобъемлющая графика знаний, которая запечатлевает все исследовательское путешествие.Каждое понимание, каждый источник, каждая связь сохраняется для окончательного синтеза. This isn't just data storage 6.2. The Master Prompt: Where Intelligence Meets Synthesis Качество окончательного отчета напрямую зависит от сложности проб генерации.Система использует для синтеза самую мощную модель OpenAI: typescriptconst generateReport = async ( research: Research, vectorOfThought: string[], systemPrompt: string ) => { const { text } = await generateText({ model: openai("o3-mini"), // Most powerful model for synthesis system: systemPrompt, prompt: "Use the following structured research data to generate a detailed expert report:\n\n" + JSON.stringify(research, null, 2), }); return text; }; : Мы не просто просим ИИ обобщить - мы предоставляем ему полный набор исследовательских данных и просим его думать как эксперт в области. Key insight 6.3. Structured Output: Beyond Simple Summaries The system doesn't just create a text summary — it generates structured documents with headers, tables, pro/con lists, and professional formatting, as shown in the result saving: typescriptconsole.log("Research completed!"); console.log("Generating report..."); const report = await generateReport(research, vectorOfThought, systemPrompt); console.log("Report generated! Saving to report.md"); fs.writeFileSync("report.md", report); // Save as Markdown Это идеальный формат для контента, генерируемого ИИ — достаточно структурированный для профессиональной презентации, достаточно гибкий для различных форматов вывода и читаемый в любом современном рабочем процессе разработки. Why Markdown? 6.4. Quality Control Through System Prompts ТЭ позволяет настроить стиль и структуру отчетов для конкретных потребностей: systemPrompt Академический стиль для исследовательских работ и научного анализа Бизнес-формат для корпоративных отчетов и резюме руководителей Техническая документация для контента, ориентированного на разработчиков Инвестиционный анализ для финансовых и стратегических отчетов // Example: Business-focused system prompt const businessSystemPrompt = `You are a senior business analyst creating an executive report. Structure your analysis with: Исполнительный резюме Ключевые находки Рыночные последствия Рекомендации Risk Assessment Use data-driven insights and provide specific examples from the research.`; 6.5. The Intelligence Multiplier Effect Система не просто агрегирует информацию — она синтезирует знания, которые возникают из связей между различными источниками.Человеческий исследователь может потратить 8-12 часов на проведение этого уровня исследований.Наша система делает это за 10-60 минут, часто раскрывая связи, которые люди пропускают. Here's what makes this approach revolutionary 6.6. Production Considerations : При глубоких исследованиях (глубина 3-4), накопленный контекст может стать массивным. Memory Management : The final synthesis prompt can easily exceed token limits. Production implementations need smart truncation strategies that preserve the most valuable insights. Token Optimization Не все генерируемые отчеты одинаковы.Подумайте о внедрении механизмов оценки для оценки полноты и согласованности отчета. Quality Assurance 6.7. Real-World Impact : Часы человеческих исследований → Минуты анализа ИИ ИИ может обрабатывать и подключать больше источников, чем человечески возможно Каждый отчет следует одной и той же строгой методологии : Generate dozens of reports simultaneously Time Compression Depth Enhancement Consistency Scalability 7. Conclusion: Building the Future of AI Research Заключение: Создание будущего исследований в области ИИ Создание глубокого исследовательского агента ИИ – это не просто техническая задача – это архитектурное решение, которое может стать конкурентным преимуществом для любого продукта.Мы охватывали весь цикл от концепции до реализации, показывая, как трансформировать хаотичный процесс поиска информации в систематическое, экспертное исследование. 7.1. Key Architectural Principles Глубокое поиск — это изучение структурированных деревьями информационных сетей, где каждое открытие порождает новые вопросы и направления исследований. Think in Trees, Not Lines Специализированные поисковые системы, такие как exa.ai, не являются дополнительными — они необходимы для качественных исследований. Use AI-Native Tools : Первая страница результатов - это лишь верхушка айсберга.Реальные представления заключаются в рекурсивном углублении через цикл «Поиск-оценка-глубина». Apply Recursion for Depth Синергия между публичными интернет-данными и частными организационными знаниями создает уникальный контент, который невозможно получить любым другим способом. Combine External and Internal Sources Агенты ИИ с инструментами могут не только искать информацию, но и оценивать ее актуальность, генерировать новые вопросы и создавать структурированные отчеты. Use LLMs for Both Analysis and Synthesis 7.2. Production-Ready Results Реализация, основанная на Next.js 15, OpenAI и exa.ai, демонстрирует, что такая система может быть построена и развернута для производства. Выделяют все ключевые компоненты: https://github.com/aifa-agi/aifa-deep-researcer-starter Рекурсивная архитектура с управлением глубиной и шириной Интеграция веб-поиска с векторными базами знаний Агенты ИИ с инструментами для оценки результатов Генерация экспертных отчетов с возможностями сохранения файлов 7.3. Challenges and Limitations Исследования с глубиной более 2 уровней могут занимать часы, требуя специальных решений для производственных сред. Server Timeouts Каждый уровень глубины увеличивает количество запросов геометрически, требуя тщательного управления ресурсами. Exponential Complexity Growth Даже поисковые системы искусственного интеллекта могут возвращать неточную информацию, требуя дополнительной проверки и проверки фактов. Source Quality 7.4. Your Next Steps Теперь у вас есть полный архитектурный план и примеры реального кода. : Используйте базовую версию из этой статьи для прототипирования • клонирование Эксперименты на местном уровне Интегрировать эти принципы в существующие продукты и рабочие процессы Start with Minimal Implementation Explore the Ready Solution https://github.com/aifa-agi/aifa-deep-researcer-starter Adapt to Your Needs 8. Homework Challenge: Solving the Long-Wait UX Problem Домашние задания: решение долгожданной проблемы UX Мы охватывали техническую архитектуру глубоких исследований агентов ИИ, но остается критически важная проблема UX: что делать, когда система работает в течение нескольких минут, в то время как пользователь смотрит на пустой экран?Как показывает реальная реализация из aifa-deep-researcer-starter, исследования с глубиной более 2 уровней могут занять часа, в то время как пользователи видят только статический экран загрузки. 8.1. The Problem: Server Silence Kills Trust В отличие от типичных веб-приложений, где операции занимают секунды, глубокие исследовательские агенты ИИ могут молчать в течение нескольких минут. Ожидание тревоги: пользователи не знают, работает ли система или заморожена Потеря контроля: нет способа понять, как долго ждать : It seems like the application is broken or "ate" the request Declining Trust Высокая скорость отмены: пользователи закрывают вкладку, не дожидаясь результатов Perplexity, Claude и другие современные продукты ИИ решают это с помощью интерактивных анимаций, показателей прогресса и динамических подсказок. 8.2. The Developer Challenge Представьте себе это техническое ограничение: ваш маршрут Next.js API выполняет длительную операцию (глубокое исследование) и не может отправлять промежуточные данные до завершения. Фронт-энд получает ответ только в самом конце. Классические решения, такие как Server-Sent Events или WebSockets, могут быть недоступны из-за ограничений хостинга или архитектуры. How do you create engaging UX under these conditions that will retain users and reduce waiting anxiety? 8.3. Discussion Questions UX Patterns and Visualization: Какие шаблоны UX вы бы применили для визуализации процессов глубокого поиска, когда сервер «молчит»? Как можно симулировать «живой» прогресс даже без реальных обновлений статуса сервера? Следует ли использовать ложные строки прогресса, или это нарушает доверие пользователей? Какие анимации и микроинтеракции помогают создать ощущение «живой» системы? User Communication: Как вы объясняете пользователям, почему ожидание может быть длительным? Какие тексты/иллюстрации использовать? Следует ли указывать расчетные сроки ожидания, если они могут сильно варьироваться (от 2 до 60 минут)? Как вы визуализируете этапы процесса («Generating search queries...», «Analyzing sources...», «Forming expert report...»)? Какие метафоры помогают пользователям понять ценность ожидания? Technical Implementation: Какие оптимистичные подходы UI можно применить без обратной связи с сервером? Как реализовать «разговорный» интерфейс, который поддерживает пользователей во время ожидания? Можно ли использовать локальные вычисления (Web Workers, WASM) для симуляции прогресса? Как организовать грациозную деградацию, если пользователи закрывают вкладку во время исследования? 8.4. Learning from the Best Исследование решений, реализованных в Perplexity Deep Research, Bing Copilot, Google Search Generative Experience. Что вы можете взять из игровых экранов загрузки, которые удерживают внимание в течение нескольких минут? В эпоху мгновенных ответов ChatGPT качество ожидания может стать конкурентным преимуществом.Пользователи готовы ждать, если они понимают ценность процесса и чувствуют, что система работает для них. Remember 9. About the Author and AIFA Project О авторе и проекте AIFA Для автора, , в своей недавней серии публикаций, подробно описывает инструменты и архитектурные решения, которые он реализует в своем амбициозном проекте с открытым исходным кодом (Агенты ИИ в эволюционирующей и самореплицирующейся архитектуре). Роман Большианов АИФА В своей нынешней реализации AIFA уже представляет собой впечатляющий шаблон для создания первых приложений AI с уникальным пользовательским интерфейсом, где искусственный интеллект становится основным методом взаимодействия, в то время как традиционный веб-интерфейс служит вспомогательной визуализацией. Долгосрочная цель проекта - эволюция в полноценную систему AGI, где агенты ИИ будут обладать возможностями для: Автономная эволюция и улучшение их алгоритмов Саморепликация и создание новых специализированных агентов Конкуренция и сотрудничество в распределенной среде Автономная работа в веб-пространствах и блокчейн-сетях Глубокий поиск, охваченный этой статьей, является лишь одним из базовых навыков будущих агентов AGI, которые смогут не только исследовать информацию, но и принимать решения, создавать продукты и взаимодействовать с реальным миром. Если вы заинтересованы в наблюдении за развитием проекта и экспериментах с передовыми технологиями искусственного интеллекта, не стесняйтесь перевернуть Каждый проект приближает нас к созданию по-настоящему автономного искусственного интеллекта. Репозиторий AIFA Код открыт, архитектура доказана, а возможности безграничны.Ваш следующий прорыв в исследованиях на основе ИИ находится всего в одном клоне. Ready to build the future?