369 чтения
369 чтения

Создайте агента ИИ, который исследует ваших конкурентов

к aifa27m2025/07/02
Read on Terminal Reader

Слишком долго; Читать

Это всеобъемлющее руководство учит разработчиков, как создать глубокий исследовательский агент ИИ, похожий на функцию «Глубокие исследования» Perplexity. Вы узнаете рекурсивную архитектуру поиска, интеграцию ИИ-родного поиска и как объединить внешние веб-данные с внутренними базами знаний. Статья предоставляет готовый к производству код TypeScript с использованием Next.js 15, OpenAI и exa.ai, а также архитектурные принципы для создания ИИ-систем, которые проводят исследования, как аналитики человека, но в масштабе машины.
featured image - Создайте агента ИИ, который исследует ваших конкурентов
aifa HackerNoon profile picture

Создание собственного недоумения: архитектура за глубокими исследованиями на основе ИИ

☀️ Пробуждение для разработчиков

Многие программисты потеряют работу для ИИ в ближайшие годы, но не те, кто научится строить его.Ваша миссия заключается не только в том, чтобы узнать, как использовать ChatGPT или Claude — это стать создателем таких систем, чтобы построить следующий Perplexity, а не просто использовать его.

☀️ Пробуждение для разработчиков

Многие программисты потеряют работу для ИИ в ближайшие годы, но не те, кто научится строить его.Ваша миссия заключается не только в том, чтобы узнать, как использовать ChatGPT или Claude — это стать создателем таких систем, чтобы построить следующий Perplexity, а не просто использовать его.

AIFA for deep researching starter


Открытый источник :https://github.com/aifa-agi/aifa-deep-researcer-starter/

1. What You'll Master by Reading This Article

Что вы овладеете, прочитав эту статью

Эта статья предоставляет полный архитектурный план построения вашего собственного глубокого исследовательского агента ИИ, похожего на функцию «Глубокие исследования» Perplexity.

Technical ArchitectureКак разработать рекурсивную систему поиска с использованием Next.js 15, OpenAI и exa.ai, которая фактически работает в производстве

Mental ModelsПочему глубокое поиск является деревянной структурой, а не линейным процессом — и как это меняет все о исследованиях в области ИИ

Practical SolutionsКак интегрировать внешний веб-поиск с внутренними векторными базами знаний, чтобы создать действительно уникальный контент, который ваши конкуренты не могут воспроизвести

Performance OptimizationКак управлять ресурсами сервера и пользовательским опытом во время длительных операций с ИИ, не нарушая банка

Production-Ready CodeБетонные имплементации TypeScript с использованием современного технологического стека, который вы можете развернуть сегодня

К концу этой статьи у вас будет четкое понимание того, как создать самохостинговую SaaS для глубоких исследований, которые могут быть интегрированы в любой продукт — предоставляя вам конкурентное преимущество, которое действительно трудно воспроизвести.

1.1. The Technology Stack That Powers Intelligence

Для реализации нашего глубокого исследовательского агента ИИ мы используем современный технологический стек, оптимизированный для готовых к производству приложений с интенсивным использованием ИИ.

1.1.1. Frontend and Framework

React 19Последняя версия с улучшенной производительностью и новыми возможностями одновременного рендеринга, которые плавно справляются со сложными взаимодействиями с ИИ

Next.js 15Полная структура React с App Router, включая поддержку параллельных и перехватных маршрутов (идеально подходит для сложных рабочих процессов ИИ)

TypeScript 5Строгое введение для надежности кода и превосходного опыта разработчиков при создании сложных систем ИИ

1.1.2. AI and Integrations

OpenAI SDK (v4.96.2)Официальный SDK для интеграции с GPT-4 и другими моделями OpenAI, с полной потоковой поддержкой

AI SDK (v4.1.45)Универсальная библиотека для работы с различными поставщиками ИИ, предоставляя вам гибкость при переключении моделей

Exa.js (v1.4.10)Специализированная поисковая система, ориентированная на ИИ для семантического поиска, которая действительно понимает контекст

1.1.3. UI and Styling

Tailwind CSS 4Фреймворк CSS для быстрой разработки без ущерба для качества дизайна

Radix UIБезголовые компоненты для создания доступных интерфейсов, которые работают на всех устройствах

Lucide React— Современная библиотека икон с последовательным языком дизайна

shadcn/uiКомпонентная система, построенная на Radix UI и Tailwind CSS для профессиональных интерфейсов

1.1.4. Forms and Validation

React Hook FormВысокопроизводительная библиотека для обработки форм, которая не замедляет интерфейсы ИИ

ZodСхема подтверждения TypeScript с статическим вводом, которая улавливает ошибки до того, как они достигнут производства

Hookform ResolversБесшовная интеграция между Zod и React Hook Form

1.1.5. Content Processing

React MarkdownМаркировка контента с поддержкой компонентов для богатых отчетов, генерируемых ИИ

date-fns— Современная библиотека для обработки дат в научно-исследовательских сроках ИИ

Why This Stack Matters

Эта технология Stack обеспечиваетhigh performance,type safety, иscalabilityКаждый выбор здесь намеренный — от параллельных маршрутов Next.js 15 для обработки сложных рабочих процессов ИИ до Exa.js, предоставляющих семантические возможности поиска, которые делают глубокие исследования возможными.

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Если первый поиск не дает всеобъемлющих результатов, система не задает последующие вопросы или не исследует альтернативные углы.

Garbage Data QualityТрадиционные поисковые системы возвращают HTML-страницы, запутанные рекламными объявлениями, элементами навигации и несущественным контентом.

Context IsolationСистема не может соединить найденную информацию с вашими внутренними данными, корпоративными документами или доменными базами знаний.

2.2. The Gold Standard: Perplexity's Deep Research Revolution

Perplexity была первой компанией, которая показала нам, как должна работать поисковая интеграция LLM. Их подход принципиально отличается от этих решений:

AI-Optimized Search EnginesВместо общих запросов Google API, они используют специализированные поисковые системы, которые возвращают чистый, структурированный контент, предназначенный для потребления ИИ.

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)
  • Интегрировать решение в любой существующий продукт
  • Скалирование и оптимизация системы для ваших потребностей

К концу этой статьи у вас будет полный архитектурный план и готовые к производству примеры кода для создания собственного «Заблуждения» — агента ИИ, который может стать секретным оружием вашего продукта.

Important: Мы будем изучать не только техническую реализацию, но и бизнес-логику.Почему рекурсивный поиск более эффективен, чем линейный?Как правильно сочетать внешние и внутренние источники?Какие модели UX работают для длительных операций ИИ?Эти вопросы так же важны, как и код.

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

Лично я не могу выдержать статьи, которые дают вам много слов и мало субстанции.Не стесняйтесь клонировать репо и запустить его в режиме разработки прямо сейчас.

Pro tip: Вы столкнетесь с ограничениями времени (403 ошибки) на уровне бесплатного хостинга Vercel в производстве, но на localhost вы можете полностью экспериментировать и изучать журналы к контенту своего сердца.

Давайте начнем с понимания, почему 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

Качество ваших входных данных напрямую определяет качество вашего конечного результата исследований.

Data ReliabilityСтруктурированный контент без необходимости хрупкого анализирования HTML
ScalabilityСтабильные API, предназначенные для автоматизированного использования с большим объемом
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

Искусственный интеллект — это не просто техническая деталь.they're the architectural foundationБез правильной «путеводительской собаки», даже самый сложный LLM будет бороться, чтобы создать глубокий, точный анализ текущей информации.

Подумайте об этом так: вы бы не отправили блестящего исследователя в библиотеку, где все книги написаны в коде, а половина страниц - это реклама.

The solution?Дайте вашему ИИ правильные инструменты для работы.В следующем разделе мы погрузимся в конкретные архитектурные паттерны, которые делают возможными рекурсивные, глубокие исследования.

Давайте исследуем системный дизайн, который обеспечивает поистине интеллектуальные исследовательские агенты ИИ.

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

First-level branchesявляются основными аспектами темы, которые LLM генерирует на основе анализа первоначального запроса. В нашем примере это производительность, стоимость и SEO. Эти субтемы не формируются случайно - LLM анализирует семантическое пространство запроса и определяет ключевые направления исследований.

Tree leaves are specific sources (articles, documents, studies) found for each sub-query. Each leaf contains factual information that will be included in the final report.

Recursive branchesКогда система анализирует найденные источники, она может обнаружить новые аспекты темы, которые требуют дополнительного исследования.

4.3. Practical Advantages of Tree Architecture

Research CompletenessВместо случайного набора фактов система строит логически связанную карту знаний, где каждый элемент имеет свое место в общей структуре.

Adaptive Depth: Система автоматически определяет, какие направления требуют более глубокого расследования.Если одна ветвь дает много соответствующих источников, система может пойти глубже.Если направление оказывается неинформативным, поиск прекращается раньше.

Contextual ConnectivityКаждый новый поисковый запрос формируется с учетом уже найденной информации, что позволяет задавать более точные и конкретные вопросы, чем изолированные поисковые запросы.

Quality AssessmentНа каждом уровне дерева система может оценивать актуальность и качество найденных источников, фильтруя шум и концентрируя внимание на самой ценной информации.

4.4. Managing Tree Parameters

Search Depthопределяет, сколько уровней рекурсии может выполнить система. Глубина 1 означает только основные подзапросы без дальнейшего бурения. Глубина 3-4 позволяет провести поистине детальное исследование.

Search WidthКонтролирует количество подзапросов на каждом уровне. Слишком большая ширина может привести к поверхностному исследованию многих направлений. Оптимальная ширина обычно составляет 3-5 основных направлений на уровень.

Branching FactorВ контексте поиска информации это соответствует количеству новых подзапросов, генерируемых на основе каждого найденного источника.

4.5. Optimization and Problem Prevention

Cycle PreventionСистема должна отслеживать уже исследованные направления, чтобы избежать бесконечных циклов рекурсии.

Dynamic PrioritizationБолее перспективные отрасли следует исследовать с большей глубиной, в то время как менее информативные направления могут быть прекращены раньше.

Parallel InvestigationРазличные ветви деревьев можно исследовать параллельно, значительно ускоряя процесс, когда имеются достаточные вычислительные ресурсы.

Memory and CachingРезультаты поиска должны быть кешированы, чтобы избежать повторных запросов на внешние API, когда темы перекрываются.

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;
};

Key insight• Thebreadthпараметр контролирует ширину исследования — количество различных аспектов темы, которые будут исследовать параллельно.В этом месте происходит магия: вместо линейного поиска вы получаете экспоненциальное покрытие.

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:

  1. Исполнительный резюме
  2. Ключевые находки
  3. Рыночные последствия
  4. Рекомендации
  5. Risk Assessment

Use data-driven insights and provide specific examples from the research.`;

6.5. The Intelligence Multiplier Effect

Here's what makes this approach revolutionaryСистема не просто агрегирует информацию — она синтезирует знания, которые возникают из связей между различными источниками.Человеческий исследователь может потратить 8-12 часов на проведение этого уровня исследований.Наша система делает это за 10-60 минут, часто раскрывая связи, которые люди пропускают.

6.6. Production Considerations

Memory Management: При глубоких исследованиях (глубина 3-4), накопленный контекст может стать массивным.

Token Optimization: The final synthesis prompt can easily exceed token limits. Production implementations need smart truncation strategies that preserve the most valuable insights.

Quality AssuranceНе все генерируемые отчеты одинаковы.Подумайте о внедрении механизмов оценки для оценки полноты и согласованности отчета.

6.7. Real-World Impact

Time Compression: Часы человеческих исследований → Минуты анализа ИИ
Depth EnhancementИИ может обрабатывать и подключать больше источников, чем человечески возможно
ConsistencyКаждый отчет следует одной и той же строгой методологии
Scalability: Generate dozens of reports simultaneously

7. Conclusion: Building the Future of AI Research

Заключение: Создание будущего исследований в области ИИ

Создание глубокого исследовательского агента ИИ – это не просто техническая задача – это архитектурное решение, которое может стать конкурентным преимуществом для любого продукта.Мы охватывали весь цикл от концепции до реализации, показывая, как трансформировать хаотичный процесс поиска информации в систематическое, экспертное исследование.

7.1. Key Architectural Principles

Think in Trees, Not LinesГлубокое поиск — это изучение структурированных деревьями информационных сетей, где каждое открытие порождает новые вопросы и направления исследований.

Use AI-Native ToolsСпециализированные поисковые системы, такие как exa.ai, не являются дополнительными — они необходимы для качественных исследований.

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

Server TimeoutsИсследования с глубиной более 2 уровней могут занимать часы, требуя специальных решений для производственных сред.

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

В отличие от типичных веб-приложений, где операции занимают секунды, глубокие исследовательские агенты ИИ могут молчать в течение нескольких минут.

  • Ожидание тревоги: пользователи не знают, работает ли система или заморожена
  • Потеря контроля: нет способа понять, как долго ждать
  • Declining Trust: It seems like the application is broken or "ate" the request
  • Высокая скорость отмены: пользователи закрывают вкладку, не дожидаясь результатов

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. Что вы можете взять из игровых экранов загрузки, которые удерживают внимание в течение нескольких минут?

RememberВ эпоху мгновенных ответов ChatGPT качество ожидания может стать конкурентным преимуществом.Пользователи готовы ждать, если они понимают ценность процесса и чувствуют, что система работает для них.

9. About the Author and AIFA Project

О авторе и проекте AIFA

Для автора,Роман Большианов, в своей недавней серии публикаций, подробно описывает инструменты и архитектурные решения, которые он реализует в своем амбициозном проекте с открытым исходным кодомАИФА(Агенты ИИ в эволюционирующей и самореплицирующейся архитектуре).

В своей нынешней реализации AIFA уже представляет собой впечатляющий шаблон для создания первых приложений AI с уникальным пользовательским интерфейсом, где искусственный интеллект становится основным методом взаимодействия, в то время как традиционный веб-интерфейс служит вспомогательной визуализацией.

Долгосрочная цель проекта - эволюция в полноценную систему AGI, где агенты ИИ будут обладать возможностями для:

  • Автономная эволюция и улучшение их алгоритмов
  • Саморепликация и создание новых специализированных агентов
  • Конкуренция и сотрудничество в распределенной среде
  • Автономная работа в веб-пространствах и блокчейн-сетях

Глубокий поиск, охваченный этой статьей, является лишь одним из базовых навыков будущих агентов AGI, которые смогут не только исследовать информацию, но и принимать решения, создавать продукты и взаимодействовать с реальным миром.

Если вы заинтересованы в наблюдении за развитием проекта и экспериментах с передовыми технологиями искусственного интеллекта, не стесняйтесь перевернутьРепозиторий AIFAКаждый проект приближает нас к созданию по-настоящему автономного искусственного интеллекта.

Ready to build the future?Код открыт, архитектура доказана, а возможности безграничны.Ваш следующий прорыв в исследованиях на основе ИИ находится всего в одном клоне.


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks