Budowa własnej niepewności: architektura za głębokimi badaniami opartymi na AI
✔️ Przebudzenie dla deweloperów
Wielu programistów straci pracę na AI w nadchodzących latach, ale nie tych, którzy uczą się go budować. Twoja misja to nie tylko nauczyć się używać ChatGPT lub Claude – to stać się twórcą takich systemów, budować następną Perplexity, a nie po prostu używać go.
✔️ Przebudzenie dla deweloperów
Wielu programistów straci pracę na AI w nadchodzących latach, ale nie tych, którzy uczą się go budować. Twoja misja to nie tylko nauczyć się używać ChatGPT lub Claude – to stać się twórcą takich systemów, budować następną Perplexity, a nie po prostu używać go.
Źródło otwarte :https://github.com/aifa-agi/aifa-deep-researcer-starter/
1. What You'll Master by Reading This Article
Co zdobędziesz czytając ten artykułTen artykuł zawiera kompletny projekt architektoniczny do budowania własnego głębokiego agenta badawczego AI, podobnego do funkcji "Głębokie badania" w Perplexity.
Technical ArchitectureJak zaprojektować system wyszukiwania nawrotnego z wykorzystaniem Next.js 15, OpenAI i exa.ai, które faktycznie działają w produkcji
Mental ModelsDlaczego wyszukiwanie głębokie jest strukturą drzewa, a nie procesem liniowym – i jak to zmienia wszystko na temat badań nad AI
Practical SolutionsJak zintegrować zewnętrzne wyszukiwanie internetowe z wewnętrznymi bazami wiedzy wektorowej, aby stworzyć naprawdę unikalną zawartość, której Twoi konkurenci nie mogą powtórzyć
Performance OptimizationJak zarządzać zasobami serwera i doświadczeniem użytkownika podczas długotrwałych operacji AI bez złamania banku
Production-Ready CodeWdrożenia typu TypeScript z wykorzystaniem nowoczesnych technologii, które można wdrożyć już dziś
Pod koniec tego artykułu będziesz miał jasne zrozumienie, jak zbudować samodzielnie hostowany SaaS do głębokich badań, które można zintegrować z dowolnym produktem - dając ci przewagę konkurencyjną, która jest naprawdę trudna do powtórzenia.
1.1. The Technology Stack That Powers Intelligence
W celu wdrożenia naszego głębokiego agenta badawczego AI używamy nowoczesnej technologii zoptymalizowanej do zastosowań gotowych do produkcji z intensywnym wykorzystaniem sztucznej inteligencji.
1.1.1. Frontend and Framework
React 19Najnowsza wersja z ulepszoną wydajnością i nowymi funkcjami równoczesnego renderowania, które płynnie radzą sobie ze złożonymi interakcjami AI
Next.js 15Pełne ramy React z routerem aplikacji, w tym wsparcie dla tras równoległych i przechwytywania (doskonałe dla złożonych przepływów pracy AI)
TypeScript 5- rygorystyczne pisanie dla niezawodności kodu i doskonałego doświadczenia dewelopera przy budowie złożonych systemów AI
1.1.2. AI and Integrations
OpenAI SDK (v4.96.2)— Oficjalny SDK do integracji z GPT-4 i innymi modelami OpenAI, z pełnym wsparciem dla strumieniowania
AI SDK (v4.1.45)Uniwersalna biblioteka do pracy z różnymi dostawcami AI, zapewniając elastyczność w przełączaniu modeli
Exa.js (v1.4.10)- wyspecjalizowana wyszukiwarka zorientowana na sztuczną inteligencję dla wyszukiwania semantycznego, które naprawdę rozumie kontekst
1.1.3. UI and Styling
Tailwind CSS 4Utility-first framework CSS dla szybkiego rozwoju bez poświęcania jakości projektowania
Radix UIKomponenty bezgłowne do tworzenia dostępnych interfejsów, które działają na wszystkich urządzeniach
Lucide ReactNowoczesna biblioteka ikon z spójnym językiem projektowania
shadcn/ui— System komponentów oparty na Radix UI i Tailwind CSS dla profesjonalnych interfejsów
1.1.4. Forms and Validation
React Hook FormWysokowydajna biblioteka do obsługi formularzy, która nie spowalnia interfejsów AI
ZodSchemat walidacji TypeScript-first z statycznym pisaniem, który łapie błędy, zanim dotrą do produkcji
Hookform ResolversŁatwa integracja z Zod i React Hook Form
1.1.5. Content Processing
React MarkdownRendering zawartości Markdown z obsługą komponentów dla bogatych raportów generowanych przez AI
date-fns— Nowoczesna biblioteka do przetwarzania dat w czasach badań AI
Why This Stack Matters
Ta technologia stack zapewniahigh performance,type safety, orazscalabilityKażdy wybór tutaj jest celowy – od równoległych tras Next.js 15 obsługujących złożone przepływy pracy AI, do Exa.js zapewniających możliwości wyszukiwania semantycznego, które umożliwiają głębokie badania.
The result?System, który może obsługiwać złożoność obliczeniową badań w zakresie rekursywnej sztucznej inteligencji przy jednoczesnym utrzymaniu standardów doświadczenia użytkownika, których wymagają nowoczesne aplikacje.
Gotowy, aby zobaczyć, jak te kawałki pasują do siebie, aby stworzyć coś naprawdę potężnego?
Rewolucja sztucznej inteligencji nie nadchodzi – jest tutaj. I stwarza silny podział w społeczności deweloperów. Z jednej strony są ci, którzy postrzegają sztuczną inteligencję jako tylko inne narzędzie do zwiększenia wydajności, używając ChatGPT do pisania funkcji i debugowania kodu. Z drugiej strony są deweloperzy, którzy rozumieją podstawową prawdę:the real opportunity isn't in using AI—it's in building it.
Podczas gdy większość programistów uczy się skuteczniej zachęcać do ChatGPT, mniejsza grupa opanowuje architekturę systemów takich jak Perplexity, Claude i niestandardowe agenci AI.
The harsh realityFirmy nie potrzebują deweloperów, którzy mogą korzystać z narzędzi sztucznej inteligencji – potrzebują deweloperów, którzy mogą budować systemy sztucznej inteligencji.Różnica między tymi dwoma umiejętnościami określi, kto rozwija się, a kto staje się przestarzały w następnym cyklu gospodarczym.
Ten artykuł zawiera kompletny plan architektoniczny na budowę własnego agenta badawczego zasilającego AI, podobnego do funkcji "Deep Research" firmy Perplexity.Uczysz się nie tylko implementacji technicznej, ale także mentalnych modeli i zasad projektowania, które oddzielają amatorskie integracje AI od gotowych do produkcji systemów, które mogą stać się przewagą konkurencyjną.
What you'll master by the end:
- Recursywna architektura wyszukiwania: jak zaprojektować systemy, które myślą w drzewach, a nie liniach
- AI-first data pipelines: integracja zewnętrznych wyszukiwań internetowych z wewnętrznymi bazami wiedzy
- Organizacja agentów: budowanie systemów sztucznej inteligencji, które mogą oceniać, iterować i ulepszać własne wyniki
- Uwagi dotyczące produkcji: Zarządzanie zasobami serwera, czasami i doświadczeniem użytkownika dla długotrwałych operacji AI
Celem nie jest dać ci kodu do kopiowania. Jest to przekazanie myślenia architektonicznego, które pozwoli ci zaprojektować systemy AI dla dowolnej domeny, dowolnego przypadku użytkowania i dowolnej skali.
Przygotowani do przejścia od konsumenta AI do architekta AI?Zastanówmy się, dlaczego tradycyjne LLM potrzebują "psa przewodnika", aby skutecznie poruszać się po Internecie.
2. Introduction: Life After ChatGPT Changed Everything
Wprowadzenie: Życie po ChatGPT zmieniło wszystkoŻyjemy w jednym z najbardziej transformacyjnych okresów w historii technologii. ChatGPT i inne duże modele językowe (LLM) zasadniczo zrewolucjonizowały sposób, w jaki współdziałamy z informacjami.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
Zespoły stojące za ChatGPT, Claude i innymi modelami próbowały to rozwiązać za pomocą wbudowanego wyszukiwania internetowego.To brzmi świetnie w teorii, ale wykopać głębiej i znajdziesz kilka poważnych wad architektonicznych, które sprawiają, że nie nadaje się do zastosowań produkcyjnych:
Surface-Level Search: System wykonuje jedno lub dwa zapytania wyszukiwania, przechwytuje pierwsze kilka wyników i nazywa to dniem.
Zero Follow-ThroughJeśli pierwsze wyszukiwanie nie przynosi kompleksowych wyników, system nie zadaje pytań następczych ani nie bada alternatywnych kątów.
Garbage Data QualityTradycyjne wyszukiwarki zwracają strony HTML zatłoczone reklamami, elementami nawigacji i nieistotnymi treściami.
Context IsolationSystem nie może połączyć znalezionych informacji z wewnętrznymi danymi, dokumentami firmy lub bazami wiedzy specyficznymi dla danej domeny.
2.2. The Gold Standard: Perplexity's Deep Research Revolution
Perplexity była pierwszą firmą, która pokazała nam, jak naprawdę powinna działać integracja z LLM.
AI-Optimized Search EnginesZamiast ogólnych połączeń Google API, używają wyspecjalizowanych systemów wyszukiwania, które zwracają czyste, ustrukturyzowane treści przeznaczone do konsumpcji AI.
Iterative Investigation ProcessSystem analizuje wyniki, formułuje nowe pytania i kontynuuje wyszukiwanie, aż zbuduje kompleksowy obraz.
Deep Research ModeJest to autonomiczny agent sztucznej inteligencji, który może pracować przez kilka minut, powtarzając się w tematy i zbierając informacje z kilkudziesięciu źródeł.
This is exactly the kind of system we're going to build together.
2.3. Why This Matters for Every Developer
W erze AI-first, każdy produkt jest wyścig, aby stać się "mądrzejszy." Ale po prostu podłączanie do API ChatGPT jest teraz tylko zakładami stołowymi.
- Badanie aktualnych informacji z Internetu w czasie rzeczywistym
- Łącz dane publiczne z własnymi bazami wiedzy
- Tworzenie unikalnych wglądów niemożliwych do uzyskania ze standardowych LLM
- Dostosowane do Twojej konkretnej branży i branżowych niuansów
2.4. What You'll Walk Away With
Moim celem nie jest dać ci kodu do kopiowania (chociaż dostaniesz dużo tego). chcę przenieść mentalne modele i zasady architektoniczne, które pozwolą ci:
- Zrozum filozofię za głębokim badaniem AI
- Zaprojektuj architekturę dla konkretnego przypadku użytkowania
- Wdrażanie systemu przy użyciu nowoczesnych stosów (Next.js 15, OpenAI, exa.ai)
- Integracja rozwiązania z każdym istniejącym produktem
- skalowanie i optymalizacja systemu zgodnie z Twoimi potrzebami
Pod koniec tego artykułu będziesz miał kompletny plan architektoniczny i gotowe do produkcji przykłady kodu do budowania własnej "Zapomnienia" - agenta sztucznej inteligencji, który mógłby stać się tajną bronią Twojego produktu.
Important: Będziemy badać nie tylko wdrażanie techniczne, ale także logikę biznesową.Dlaczego wyszukiwanie nawrotne jest bardziej skuteczne niż liniowe?Jak prawidłowo łączyć źródła zewnętrzne i wewnętrzne?Jakie wzorce UX działają dla długotrwałych operacji AI?Te pytania są równie ważne jak kod.
2.5. For the Impatient: Skip to the Code
Dla tych, którzy już posiadają koncepcje i chcą zanurzyć się bezpośrednio w implementacji, oto rozwiązanie open-source, które zbudujemy:https://github.com/aifa-agi/aifa-deep-researcer-starter
https://github.com/aifa-agi/aifa-deep-researcer-starterOsobiście nie mogę wytrzymać artykułów, które dają ci wiele słów i niewielką substancję.Czuć się swobodnie, aby klonować repo i pobrać go w trybie rozwoju teraz.
Pro tip: Uderzysz w ograniczenia czasu (403 błędy) na darmowym poziomie hostingu Vercel w produkcji, ale na localhost możesz w pełni eksperymentować i studiować dzienniki do treści swojego serca.
Zacznijmy od zrozumienia, dlaczego LLM potrzebują "psa przewodnika", aby skutecznie poruszać się po Internecie.
3. Why LLMs Need a "Guide Dog": The Critical Role of External Search Systems
Dlaczego LLM potrzebuje "psa przewodnika": krytyczna rola zewnętrznych systemów wyszukiwaniaOto trudna prawda, że wielu programistów uczy się drogiego sposobu:Large Language Models cannot independently access current information from the internetNie jest to błąd – jest to podstawowe ograniczenie architektoniczne, które wymaga wyrafinowanego rozwiązania: integracji ze specjalistycznymi systemami wyszukiwania przeznaczonymi do konsumpcji sztucznej inteligencji.
3.1. Why Traditional Search Engines Are AI Poison
Google, Bing i inne tradycyjne wyszukiwarki zostały zbudowane dla ludzi przeglądających sieć, a nie dla maszyn przetwarzających dane.
- Bloki reklam i bałagan nawigacyjny, które zakłócają ekstrakcję treści
- Nieistotne treści (komentarze, paski boczne, stopy, banery cookie)
- Dane niestrukturyzowane, które wymagają złożonego analizowania i często się nie udają
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
Widziałem, że zespoły spędzają tygodnie budując analizatory HTML, tylko po to, aby za każdym razem, gdy główna strona aktualizuje swój układ.It's not scalable, and it's definitely not reliable.
3.2. Keyword Matching vs. Semantic Understanding: A World of Difference
Tradycyjne wyszukiwarki szukają dokładnych dopasowania słów, całkowicie ignorując kontekst i znaczenie. zapytanie takie jak "Next.js optymalizacja dla e-commerce" może pominąć doskonały artykuł na temat "wzmocnienia wydajności aplikacji React w sklepach internetowych", nawet jeśli są to semantycznie identyczne tematy.
To jest jak posiadanie asystenta badawczego, który może znaleźć książki tylko poprzez dopasowanie dokładnych słów w tytule, ignorując wszystko o rzeczywistej treści.For AI agents doing deep research, this approach is fundamentally broken.
3.3. AI-Native Search Engines: The Game Changer
Specjalistyczne systemy takie jak Exa.ai, Metaphor i Tavily rozwiązują podstawowe problemy, które sprawiają, że tradycyjne wyszukiwanie jest bezużyteczne dla sztucznej inteligencji:
Semantyczne poszukiwania zrozumienia
Używają wektorowych reprezentacji do wyszukiwania według znaczenia, a nie tylko słów kluczowych. Twoja sztuczna inteligencja może znaleźć odpowiednią zawartość nawet wtedy, gdy dokładne terminy nie pasują.
Czyste, zorganizowane dane
Zwracają wstępnie przetworzone treści bez śmieci HTML.
Kontekstualna świadomość
Rozumieją wcześniejsze zapytania i ogólny kontekst badań, umożliwiając prawdziwie iteracyjne badania.
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
Jakość Twoich danych wejściowych bezpośrednio decyduje o jakości Twojego końcowego wyniku badań.
Data ReliabilityStrukturowana zawartość bez potrzeby kruchej analizy HTML
ScalabilityStabilne interfejsy API zaprojektowane z myślą o zautomatyzowanym użyciu o dużej objętości
Cost Efficiency: Zmniejszona obliczeniowa nadwaga do przetwarzania danych
Accuracy: Lepsze znaczenie źródła prowadzi do lepszych wglądu końcowego
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
Inteligentne wyszukiwarki to nie tylko szczegóły technicznethey're the architectural foundationBez odpowiedniego "psa przewodnika", nawet najbardziej wyrafinowany LLM będzie zmagać się z tworzeniem głębokiej, dokładnej analizy bieżących informacji.
Pomyśl o tym w ten sposób: nie wysłałbyś genialnego badacza do biblioteki, w której wszystkie książki są napisane w kodzie, a połowa stron to reklamy.
The solution?W następnej sekcji zanurzymy się w specyficznych wzorach architektury, które umożliwiają powtarzające się, głębokie badania.
Przygotowani, aby zobaczyć, jak elementy pasują do siebie?Zobaczmy projekt systemu, który wspiera prawdziwie inteligentnych agentów badawczych AI.
4. Think Like a Tree: The Architecture of Recursive Search
Myśl jak drzewo: Architektura poszukiwań recursywnychLudzki mózg naturalnie strukturuje złożone informacje jako sieci hierarchiczne.Kiedy badacz bada nowy temat, nie porusza się w linii prostej - rozwija sieć wiedzy podobną do drzewa, w której każde nowe odkrycie generuje dodatkowe pytania i kierunki badań.
4.1. The Fundamental Difference in Approaches
Tradycyjne systemy wyszukiwania i wbudowane wyszukiwanie internetowe w LLM działają liniowo: otrzymuj zapytanie → wykonaj wyszukiwanie → zwracaj wyniki → generuj odpowiedzi.
Problems with the Linear Approach:
- Wyniki na poziomie powierzchni: system zatrzymuje się przy pierwszych faktach, które znajduje
- Brak ciągłości kontekstu: każde zapytanie wyszukiwania jest odizolowane od poprzednich
- Brakujące połączenia: system nie widzi relacji między różnymi aspektami tematu
- Jakość losowa: wyniki zależą całkowicie od szczęścia pierwotnego zapytania
Podejście oparte na drzewie rozwiązuje te problemy poprzez modelowanie naturalnego procesu badań ludzkich.Każde odkryte źródło może generować nowe pytania, które stają się odrębnymi gałęziami badań.
4.2. Anatomy of a Search Tree
Przyjrzyjmy się strukturze głębokiego drzewa wyszukiwania za pomocą konkretnego przykładu:
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 branchessą głównymi aspektami tematu, które LLM generuje w oparciu o analizę pierwotnego zapytania. W naszym przykładzie są to wydajność, koszty i SEO. Te podtyki nie są tworzone losowo - LLM analizuje semantyczną przestrzeń zapytania i identyfikuje kluczowe kierunki badań.
Tree leavesSą to konkretne źródła (artykuły, dokumenty, studia) znalezione dla każdego pod-wniosku.Każda strona zawiera informacje faktyczne, które zostaną uwzględnione w raporcie końcowym.
Recursive branchessą najpotężniejszą cechą tej architektury. Gdy system analizuje znalezione źródła, może odkryć nowe aspekty tematu, które wymagają dodatkowego badania.
4.3. Practical Advantages of Tree Architecture
Research CompletenessZamiast losowego zbioru faktów, system buduje logicznie połączoną mapę wiedzy, w której każdy element ma swoje miejsce w ogólnej strukturze.
Adaptive Depth: System automatycznie określa, które kierunki wymagają głębszych badań. Jeśli jedna gałąź przynosi wiele odpowiednich źródeł, system może przejść głębiej.
Contextual Connectivity: Każde nowe zapytanie wyszukiwania jest tworzone z uwzględnieniem już znalezionych informacji, co pozwala na bardziej precyzyjne i konkretne pytania niż poszukiwania izolowane.
Quality AssessmentNa każdym poziomie drzewa system może ocenić znaczenie i jakość znalezionych źródeł, filtrować hałas i koncentrować się na najbardziej wartościowych informacjach.
4.4. Managing Tree Parameters
Search DepthOkreśla, ile poziomów recursji może wykonać system. Głębokość 1 oznacza tylko główne podkwestionariusze bez dalszego wiercenia w dół. Głębokość 3-4 pozwala na naprawdę szczegółowe badania.
Search Widthkontroluje liczbę podzapytań na każdym poziomie. Zbyt duża szerokość może prowadzić do powierzchownego zbadania wielu kierunków. Optymalna szerokość jest zwykle 3-5 głównych kierunków na poziom.
Branching Factorjest średnią liczbą węzłów dziecka dla każdego węzła drzewa.W kontekście wyszukiwania informacji odpowiada to liczbie nowych podzapytań generowanych na podstawie każdego znalezionego źródła.
4.5. Optimization and Problem Prevention
Cycle PreventionSystem musi śledzić już zbadane kierunki, aby uniknąć nieskończonych pętli recursji.
Dynamic Prioritization: Bardziej obiecujące gałęzie powinny być badane z większą głębią, podczas gdy mniej informacyjne kierunki mogą zostać zakończone wcześniej.
Parallel InvestigationRóżne gałęzie drzew można badać równolegle, znacznie przyspieszając proces, gdy dostępne są wystarczające zasoby obliczeniowe.
Memory and CachingWyniki wyszukiwania powinny być przechowywane w pamięci podręcznej, aby uniknąć powtarzających się żądań do zewnętrznych interfejsów API, gdy tematy się pokrywają.
Execution Time and Server Timeouts: Jest to kolejny problem, który często objawia się podczas wdrażania badań głębokich, zwłaszcza jeśli głębokość przekracza dwa poziomy. można powiedzieć, że zwiększenie poziomu eksponencyjnie zwiększa złożoność badań.
4.6. The Bottom Line: From Chaos to System
Architektura drzewa przekształca chaotyczny proces poszukiwania informacji w systematyczne śledztwo, w którym każdy element ma swoje miejsce w ogólnej strukturze wiedzy.
The result?System sztucznej inteligencji, który myśli jak ludzki badacz, ale działa na skalę maszynową i prędkość.W następnej sekcji zanurzymy się w implementacji technicznej, która czyni tę wizję architektoniczną rzeczywistością.
Gotowi zobaczyć, jak przetłumaczymy te ramy koncepcyjne na kod produkcji?
5. The "Search-Evaluate-Deepen" Cycle: Implementing True Recursion
Cykl „Szukaj-Oceniaj-Głębiej”: Wdrożenie prawdziwej recursjiRecursywne analizowanie Internetu nie jest tylko cechą techniczną – jest podstawową koniecznością tworzenia naprawdę inteligentnych agentów AI. Pierwsza strona jakichkolwiek wyników wyszukiwania pokazuje tylko wierzchołek lodowca informacji.
5.1. Data Architecture for Deep Investigation
W implementacjach produkcyjnych system działa z ustrukturyzowanymi typami danych, które gromadzą wiedzę na każdym poziomie recursji:
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[];
};
Ta struktura danych gromadzi wiedzę na każdym poziomie rekurencji, tworząc jednolity kontekst dla całego dochodzenia - dokładnie to, co oddziela profesjonalne badania od losowego gromadzenia faktów.
5.2. Stage 1: "Search" — Intelligent Query Generation
System nie polega na pojedynczym zapytaniu wyszukiwania. Zamiast tego generuje wiele ukierunkowanych zapytań przy użyciu inteligencji 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
parametr kontroluje szerokość badań — liczbę różnych aspektów tematu, które będą badane równolegle.
5.3. Stage 2: "Evaluate" — AI-Driven Result Filtering
Nie wszystkie znalezione źródła są równie cenne.System wykorzystuje agenta AI z narzędziami do inteligentnej oceny każdego wyniku:
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 approachSystem wykorzystuje agenta sztucznej inteligencji z narzędziami, które mogą wielokrotnie wyszukiwać i oceniać wyniki, aż znajdzie wystarczającą odpowiednią informację.
5.4. Vector Knowledge Base Integration
The real power emerges from synergy between external and internal search. For each query, the system simultaneously searches the internet and its own vector knowledge base:
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
W głównym cyklu badawczym system kwerendy obu źródeł równolegle:
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 QuestionsNajpotężniejsza cecha: zdolność systemu do generowania nowych kierunków badań na podstawie już znalezionych informacji:
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
Wdrożenie produkcji pokazuje, jak zarządzać eksponencyjnym wzrostem złożoności:
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)
na każdym poziomie zapobiega wzrostowi eksponencyjnemu
Thought Vector: vectorOfThought
Umożliwia kierowanie badań do określonych obszarów
Context AccumulationWszystkie wyniki są przechowywane w jednolitej strukturze danych
5.10. The Hybrid Advantage in Practice
Creating Unique ContentPołączenie danych publicznych z wiedzą wewnętrzną umożliwia tworzenie raportów, których nikt inny nie może powtórzyć. Twoi konkurenci mogą uzyskać dostęp do tych samych publicznych źródeł, ale nie do Twoich wewnętrznych przypadków, statystyk i wiedzy.
Context Enrichment: Dane zewnętrzne zapewniają walutę i szerokość, dane wewnętrzne zapewniają głębokość i specyfikę. System może znaleźć ogólne trendy branżowe w Internecie, a następnie uzupełnić je własnymi danymi o tym, jak te trendy wpływają na Twoją firmę.
Maintaining CurrencyNawet jeśli informacje internetowe są przestarzałe lub niedokładne, Twoja wewnętrzna baza wiedzy może dostarczyć świeżych i zweryfikowanych danych.
6. From Chaos to Order: Generating Expert-Level Reports
6. From Chaos to Order: Generating Expert-Level ReportsPo zakończeniu wszystkich poziomów wyszukiwania rekurencyjnego system gromadzi ogromne ilości różnych informacji: wyniki wyszukiwania internetowego, dane bazy danych wektorowych, wygenerowane uczenia się i pytania następcze.
6.1. Context Accumulation: Building the Complete Picture
Wszystkie zebrane dane są połączone w jedenResearch
Struktura, która służy jako kompletny kontekst końcowej syntezy:
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 storageJest to kompleksowy wykres wiedzy, który rejestruje całą podróż badawczą.Każda wiedza, każde źródło, każde połączenie jest zachowane do ostatecznej syntezy.
6.2. The Master Prompt: Where Intelligence Meets Synthesis
Jakość końcowego raportu zależy bezpośrednio od wyrafinowania prośby o generowanie.System wykorzystuje do syntezy najpotężniejszy model 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: Nie tylko prosimy AI o podsumowanie - dostarczamy mu kompletny zestaw danych badawczych i prosimy o myślenie jak ekspert w dziedzinie domen.
6.3. Structured Output: Beyond Simple Summaries
System nie tylko tworzy podsumowanie tekstu – generuje strukturalne dokumenty z nagłówkami, tabelami, listami pro/con i profesjonalnym formatowaniem, jak pokazano w wyniku zapisywania:
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?Jest to idealny format dla treści generowanych przez sztuczną inteligencję – wystarczająco zorganizowany do profesjonalnej prezentacji, wystarczająco elastyczny do różnych formatów wyjściowych i czytelny w każdym nowoczesnym przepływie pracy rozwojowej.
6.4. Quality Control Through System Prompts
osystemPrompt
Umożliwia dostosowanie stylu i struktury raportu do konkretnych potrzeb:
- Styl akademicki do prac badawczych i analizy naukowej
- Format biznesowy dla sprawozdań korporacyjnych i streszczeń wykonawczych
- Technical documentation for developer-focused content
- Analiza inwestycji w sprawozdaniach finansowych i strategicznych
// Example: Business-focused system prompt const businessSystemPrompt = `You are a senior business analyst creating an executive report. Structure your analysis with:
- Podsumowanie wykonawcze
- Kluczowe odkrycia
- Implikacje rynkowe
- Zalecenia
- Ocena ryzyka
Use data-driven insights and provide specific examples from the research.`;
6.5. The Intelligence Multiplier Effect
Here's what makes this approach revolutionarySystem nie tylko gromadzi informacje – syntetyzuje wgląd, który wynika z połączeń między różnymi źródłami.Badacz ludzki może spędzić 8-12 godzin prowadząc ten poziom badań.Nasz system robi to w 10-60 minut, często odkrywając połączenia, które ludzie przegapili.
6.6. Production Considerations
Memory Management: Przy głębokich badaniach (głębokość 3-4), nagromadzony kontekst może stać się ogromny.
Token OptimizationWdrożenia produkcyjne wymagają inteligentnych strategii trunkowania, które zachowują najcenniejsze informacje.
Quality Assurance: Nie wszystkie generowane raporty są równe. rozważyć wdrożenie mechanizmów oceny, aby ocenić kompletność i spójność raportu.
6.7. Real-World Impact
Time Compression: Godziny badań ludzkich → Minuty analizy AI
Depth EnhancementSztuczna inteligencja może przetwarzać i łączyć więcej źródeł niż jest to możliwe
ConsistencyKażdy raport stosuje tę samą rygorystyczną metodologię
ScalabilityGenerowanie kilkudziesięciu raportów jednocześnie
7. Conclusion: Building the Future of AI Research
Konkluzja: Budowanie przyszłości badań AITworzenie głębokiego agenta badawczego AI to nie tylko wyzwanie techniczne – jest to rozwiązanie architektoniczne, które może stać się przewagą konkurencyjną dla każdego produktu.
7.1. Key Architectural Principles
Think in Trees, Not LinesGłębokie wyszukiwanie polega na zbadaniu strukturalnych sieci informacyjnych, w których każde odkrycie generuje nowe pytania i kierunki badań.
Use AI-Native ToolsSpecjalistyczne wyszukiwarki, takie jak exa.ai, nie są opcjonalne – są niezbędne do badań jakościowych.
Apply Recursion for Depth: Pierwsza strona wyników to tylko wierzchołek góry lodowej.Prawdziwe spostrzeżenia leżą w regresywnym pogłębianiu przez cykl "Wyszukiwanie - Ocena - Głęboko".
Combine External and Internal SourcesSynergia między publicznymi danymi internetowymi a prywatną wiedzą organizacyjną tworzy unikalne treści, których nie można uzyskać w inny sposób.
Use LLMs for Both Analysis and SynthesisAgenci AI z narzędziami mogą nie tylko wyszukiwać informacje, ale także oceniać ich znaczenie, generować nowe pytania i tworzyć ustrukturyzowane raporty.
7.2. Production-Ready Results
Implementacja oparta na Next.js 15, OpenAI i exa.ai pokazuje, że taki system można zbudować i wdrożyć do produkcji.https://github.com/aifa-agi/aifa-deep-researcer-starter showcases all key components:
- Architektura rekursowa z zarządzaniem głębokością i szerokością
- Integracja wyszukiwarek internetowych z wektorowymi bazami wiedzy
- Agenci AI z narzędziami do oceny wyników
- Generowanie raportów ekspertów z możliwością zapisywania plików
7.3. Challenges and Limitations
Server TimeoutsBadania o głębokości większej niż 2 poziomy mogą zająć godziny, wymagając specjalnych rozwiązań dla środowisk produkcyjnych.
Exponential Complexity GrowthKażdy poziom głębokości zwiększa liczbę zapytań geometrycznie, wymagając ostrożnego zarządzania zasobami.
Source QualityNawet wyszukiwarki AI mogą zwracać nieścisłe informacje, wymagające dodatkowej walidacji i weryfikacji faktów.
7.4. Your Next Steps
Teraz masz kompletny projekt architektoniczny i prawdziwe przykłady kodu.
Start with Minimal Implementation: Użyj podstawowej wersji z tego artykułu do prototypowania
Explore the Ready Solution• klonowaniehttps://github.com/aifa-agi/aifa-deep-researcer-starterEksperymenty lokalnie
Adapt to Your NeedsIntegracja tych zasad z istniejącymi produktami i przepływami pracy
8. Homework Challenge: Solving the Long-Wait UX Problem
Wyzwanie zadań domowych: rozwiązanie długo oczekiwanego problemu UXObejrzeliśmy architekturę techniczną głębokich badań agentów AI, ale pozostaje krytycznie ważny problem UX: co robisz, gdy system działa przez kilka minut, podczas gdy użytkownik patrzy na pusty ekran?
8.1. The Problem: Server Silence Kills Trust
W przeciwieństwie do typowych aplikacji internetowych, w których operacje trwają kilka sekund, agenci głębokiego badania sztucznej inteligencji mogą milczeć przez kilka minut.Użytkownicy nie otrzymują żadnych informacji zwrotnych od serwera do samego końca procesu.
- Czekanie na niepokój: Użytkownicy nie wiedzą, czy system działa, czy jest zamrożony
- Utrata kontroli: brak sposobu, aby zrozumieć, jak długo czekać
- Spadek zaufania: Wydaje się, że aplikacja jest uszkodzona lub "jedzenie" żądania
- Wysoki współczynnik odrzucenia: Użytkownicy zamykają kartę bez czekania na wyniki
Perplexity, Claude i inne nowoczesne produkty AI rozwiązują to za pomocą interaktywnych animacji, wskaźników postępu i dynamicznych wskazówek.
8.2. The Developer Challenge
Wyobraź sobie to ograniczenie techniczne: Twoja trasa Next.js API wykonuje długą operację (głębokie badania) i nie może wysyłać danych pośrednich, dopóki nie zostanie zakończona. Frontend otrzymuje odpowiedź tylko na samym końcu.
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:
- Jakie wzorce UX zastosowałbyś, aby wizualizować głębokie procesy wyszukiwania, gdy serwer jest „ciszy”?
- Jak można symulować "na żywo" postęp nawet bez rzeczywistych aktualizacji stanu serwera?
- Czy powinieneś używać fałszywych pasków postępu, czy też narusza to zaufanie użytkowników?
- Jakie animacje i mikrointerakcje pomagają stworzyć poczucie „żyjącego” systemu?
User Communication:
- Jak wyjaśniasz użytkownikom, dlaczego czekanie może być długie? Jakie teksty/ilustracje użyć?
- Czy powinieneś pokazać szacowane czasy oczekiwania, jeśli mogą się one znacznie różnić (2 do 60 minut)?
- Jak wizualizować etapy procesu („Generowanie zapytań wyszukiwania...”, „Analyzowanie źródeł...”, „Tworzenie raportu eksperta...”)?
- Jakie metafory pomagają użytkownikom zrozumieć wartość czekania?
Technical Implementation:
- Jakie optymistyczne podejścia do interfejsu użytkownika można zastosować bez opinii serwera?
- Jak wdrożyć interfejs „konwersacyjny”, który wspiera użytkowników podczas czekania?
- Czy można użyć lokalnych obliczeń (Web Workers, WASM) do symulacji postępu?
- Jak zorganizować uroczą degradację, jeśli użytkownicy zamkną kartę podczas badań?
8.4. Learning from the Best
Badanie rozwiązań wdrożonych w Perplexity Deep Research, Bing Copilot, Google Search Generative Experience. Co można wziąć z ekranów ładowania gier, które zatrzymują uwagę przez kilka minut?
Remember: W dobie natychmiastowych odpowiedzi ChatGPT, jakość czekania może stać się przewagą konkurencyjną.Użytkownicy są gotowi czekać, jeśli rozumieją wartość procesu i czują, że system działa dla nich.
9. About the Author and AIFA Project
O autorze i projekcie AIFAi autora ,Roman Bolszyjanow, w swojej ostatniej serii publikacji, szczegółowo opisuje narzędzia i rozwiązania architektoniczne, które wdraża w swoim ambitnym projekcie open-sourceAifa(agentami sztucznej inteligencji w ewolucyjnej i samoreplikującej się architekturze).
W swojej obecnej implementacji AIFA już reprezentuje imponujący szablon startowy do tworzenia aplikacji AI-first z unikalnym interfejsem użytkownika, w którym sztuczna inteligencja staje się główną metodą interakcji, podczas gdy tradycyjny interfejs internetowy służy jako wizualizacja pomocnicza.
Długoterminowym celem projektu jest ewolucja do pełnoprawnego systemu AGI, w którym agenci AI będą posiadać zdolności do:
- Autonomiczna ewolucja i doskonalenie ich algorytmów
- Samoreprodukcja i tworzenie nowych specjalistycznych agentów
- Konkurencja i współpraca w środowiskach rozproszonych
- Autonomiczne działanie w przestrzeni internetowej i sieciach blockchain
Głębokie poszukiwania opisane w tym artykule to tylko jedna z podstawowych umiejętności przyszłych agentów AGI, którzy będą w stanie nie tylko badać informacje, ale także podejmować decyzje, tworzyć produkty i wchodzić w interakcje z rzeczywistym światem.
Jeśli jesteś zainteresowany obserwowaniem rozwoju projektu i eksperymentowaniem z najnowocześniejszymi technologiami AI, nie wahaj się przekonaćAIFA repozytoriumKażdy z nich przybliża nas do stworzenia prawdziwie autonomicznej sztucznej inteligencji.
Ready to build the future?Kod jest otwarty, architektura jest udowodniona, a możliwości są nieograniczone.