AI Agents · Ders

Derin Araştırma Döngüsü Kalıbı

Sorgula → oku → çıkar → birleştir → yeniden sorgula: çok adımlı araştırma.

3. ders / 413 adım

Derin Araştırma Döngüsü Kalıbı, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Derin Araştırma Döngüsü Nedir

Derin araştırma döngüsü, ajanın kapsamlı bir yanıt yazmak için yeterli bilgiyi toplayana kadar yinelemeli olarak arama yaptığı, okuduğu, bilgi boşluklarını belirlediği ve yeniden arama yaptığı bir ajan kalıbıdır.

Tek bir aramadan farklı olarak bu kalıp, insan araştırmacının çalışma biçimini taklit eder: keşfet → öğren → bilinmeyenleri ortaya çıkar → daha derinlemesine araştır.

Döngü Mimarısına Genel Bakış

Derin araştırma döngüsünde tekrarlanan beş aşama vardır:

  1. İlk sorgu — kullanıcının özgün sorusuyla arama yapın
  2. En iyi sonuçları okuyun — en iyi 3 kaynaktan temel olguları çıkarın
  3. Boşlukları belirleyin — hangi önemli sorular henüz yanıtlanmadı?
  4. Takip sorguları — boşluklar için hedefli aramalar oluşturun
  5. Sentezleyin — toplanan tüm olguları son bir yanıtta birleştirin
def deep_research(question, max_iterations=3):
    all_facts = []
    queries_used = [question]

    for iteration in range(max_iterations):
        results = search_and_rank(queries_used[-1])
        facts = extract_facts(results, question)
        all_facts.extend(facts)

        gaps = identify_knowledge_gaps(question, all_facts)
        if not gaps:
            print(f'Research complete after {iteration + 1} iterations')
            break

        follow_up = generate_follow_up_query(gaps)
        queries_used.append(follow_up)
        print(f'Iteration {iteration + 1}: {follow_up}')

    return synthesize_answer(question, all_facts)

1. Aşama: İlk Arama

İlk aramada kullanıcının özgün sorusu kullanılır. 3-5 sonuç getirin ve ham metin içeriğini çıkarın. Bu aşamanın amacı kapsamı geniş tutmak, yani konuya genel bir bakış elde etmektir.

from tavily import TavilyClient
import os

client = TavilyClient(api_key=os.getenv('TAVILY_API_KEY'))

def initial_search(question, n_results=5):
    results = client.search(
        query=question,
        max_results=n_results,
        search_depth='advanced'  # deeper extraction for research tasks
    )
    return results.get('results', [])

# Also capture the direct answer if available
def get_direct_answer(question):
    results = client.search(query=question, max_results=3)
    return results.get('answer', '')  # Tavily's synthesized answer

2. Aşama: Temel Olguları Çıkarma

Ham arama sonuçlarını LLM'ye gönderin ve araştırma sorusuyla ilgili, belirli ve doğrulanabilir olguları çıkarmasını isteyin. Olgular atomik olmalıdır; her öğede tek bir iddia bulunmalıdır.

EXTRACT_FACTS_PROMPT = '''You are a research assistant.
From the search results below, extract all factual claims relevant to the question.

Question: {question}

Search results:
{results_text}

Return a JSON list of facts:
["GPT-4 was released in March 2023",
 "GPT-4 supports 128k context window",
 ...]

Only include verifiable facts. No opinions or summaries. JSON:'''

def extract_facts(results, question):
    import json
    results_text = '\n\n'.join(
        f"[{i+1}] {r['title']}\n{r['content'][:600]}"
        for i, r in enumerate(results)
    )
    response = llm_call(EXTRACT_FACTS_PROMPT.format(
        question=question, results_text=results_text
    ))
    return json.loads(response)

3. Aşama: Bilgi Boşluklarını Belirleme

Her arama yinelemesinden sonra LLM'ye şunu sorun: şimdiye kadar bildiklerimize göre özgün sorunun hangi önemli yönleri hâlâ ele alınmadı?

Bu boşluklar, bir sonraki arama sorgusu grubuna dönüşür.

GAPS_PROMPT = '''You are a research analyst.

Original research question: {question}

Facts gathered so far:
{facts}

What important aspects of the question are still NOT covered by these facts?
List 2-3 specific knowledge gaps as a JSON array of strings.
If the question is fully answered, return an empty array [].

JSON:'''

def identify_knowledge_gaps(question, facts):
    import json
    facts_text = '\n'.join(f'- {f}' for f in facts)
    response = llm_call(GAPS_PROMPT.format(
        question=question, facts=facts_text
    ))
    return json.loads(response)

4. Aşama: Takip Sorguları Oluşturma

Bilgi boşluklarını etkili arama sorgularına dönüştürün. "Fiyatlandırma modelini bilmiyoruz" gibi bir boşluk, "GPT-4 API için belirteç başına 2024 fiyatı" gibi hedefli bir sorguya dönüştürülür.

QUERY_GEN_PROMPT = '''Convert these knowledge gaps into specific web search queries.

Original topic: {topic}
Knowledge gaps:
{gaps}

Return a JSON array of search query strings.
Make each query specific and searchable.
JSON:'''

def generate_follow_up_queries(topic, gaps):
    import json
    gaps_text = '\n'.join(f'- {g}' for g in gaps)
    response = llm_call(QUERY_GEN_PROMPT.format(
        topic=topic, gaps=gaps_text
    ))
    queries = json.loads(response)
    return queries[:3]  # max 3 follow-up queries per iteration

Sonlandırma Ölçütleri

Açık sonlandırma ölçütleri olmadan döngü sonsuza kadar çalışır. Şu durumlarda durdurun: (1) hiçbir boşluk belirlenmemişse, (2) en yüksek yineleme sayısına ulaşılmışsa, (3) metin işleme bütçesi tükenmişse veya (4) yeni olgular mevcut olgulara çok benziyorsa (azalan getiriler).

MAX_ITERATIONS = 4
MAX_FACTS = 50
MIN_NEW_FACTS_TO_CONTINUE = 3

def should_continue(gaps, all_facts, new_facts, iteration):
    if iteration >= MAX_ITERATIONS:
        print(f'Stopping: max iterations ({MAX_ITERATIONS}) reached')
        return False
    if not gaps:
        print('Stopping: no knowledge gaps found')
        return False
    if len(all_facts) >= MAX_FACTS:
        print(f'Stopping: fact budget ({MAX_FACTS}) reached')
        return False
    if len(new_facts) < MIN_NEW_FACTS_TO_CONTINUE:
        print(f'Stopping: diminishing returns ({len(new_facts)} new facts)')
        return False
    return True

if __name__ == '__main__':
    print('Continue?', should_continue(gaps=['gap1'], all_facts=['f'] * 10, new_facts=['f1', 'f2', 'f3'], iteration=1))
    print('Continue?', should_continue(gaps=[], all_facts=['f'] * 10, new_facts=['f1'], iteration=1))

5. Aşama: Son Yanıtı Sentezleme

Döngü sona erdikten sonra toplanan tüm olguları sentezleme için LLM'ye gönderin. LLM'nin görevi, olguları kaynaklarını belirterek tutarlı ve iyi yapılandırılmış bir yanıtta düzenlemektir.

SYNTHESIS_PROMPT = '''You are a research writer.

Original question: {question}

Researched facts (gathered from {n_iterations} search iterations):
{facts}

Write a comprehensive, well-structured answer based on these facts.
Format with clear sections. Be specific and cite facts where relevant.
If any aspect of the question could not be fully answered, say so.

Answer:'''

def synthesize_answer(question, all_facts, n_iterations):
    facts_text = '\n'.join(f'- {f}' for f in all_facts)
    return llm_call(SYNTHESIS_PROMPT.format(
        question=question,
        facts=facts_text,
        n_iterations=n_iterations
    ))

Yinelemeler Boyunca Kaynak Takibi

Birden çok yinelemeden oluşan bir döngüde, birçok farklı kaynaktan olgular toplarsınız. Son yanıtın doğru şekilde atıf yapabilmesi için her olgunun hangi kaynaktan geldiğini takip edin.

def extract_facts_with_sources(results, question):
    import json

    PROMPT = '''Extract facts from these search results. For each fact include the source URL.

Question: {question}
Results: {results_text}

Return JSON list:
[{{"fact": "GPT-4 supports 128k context", "source": "https://openai.com/..."}}, ...]
JSON:'''

    results_text = '\n\n'.join(
        f"[URL: {r['url']}]\n{r['content'][:500]}"
        for r in results
    )
    response = llm_call(PROMPT.format(
        question=question, results_text=results_text
    ))
    return json.loads(response)

Paralel Arama Yürütme

Birden çok takip sorgunuz olduğunda, toplam araştırma süresini azaltmak için bunları asyncio kullanarak paralel çalıştırın. Bu yöntem, 3 yinelemeli bir döngüyü 30 saniyeden 15 saniyeye indirebilir.

import asyncio

async def async_search(client, query):
    # Tavily has async support
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(
        None,
        lambda: client.search(query=query, max_results=3)
    )
    return result.get('results', [])

async def parallel_search(queries):
    tasks = [async_search(client, q) for q in queries]
    results_list = await asyncio.gather(*tasks)
    # Flatten
    return [r for results in results_list for r in results]

# Run in event loop
all_results = asyncio.run(parallel_search(follow_up_queries))

Olguları Tekilleştirme

Farklı kaynaklar çoğu zaman aynı olguyu farklı sözcüklerle ifade eder. Son yanıtın aynı bilgiyi birden çok kez tekrarlamasını önlemek için sentezden önce olguları vektör temsili benzerliğini kullanarak tekilleştirin.

def deduplicate_facts(facts, similarity_threshold=0.92):
    if not facts:
        return facts

    # Get embeddings for all facts
    embeddings = [embed(f) for f in facts]
    unique_indices = [0]  # always keep first

    for i in range(1, len(facts)):
        is_duplicate = False
        for j in unique_indices:
            sim = cosine_similarity(embeddings[i], embeddings[j])
            if sim > similarity_threshold:
                is_duplicate = True
                break
        if not is_duplicate:
            unique_indices.append(i)

    unique_facts = [facts[i] for i in unique_indices]
    print(f'Deduplicated: {len(facts)} -> {len(unique_facts)} facts')
    return unique_facts

Bilgi Kontrolü

Hiçbir bilgi boşluğu bulunmadığında derin araştırma döngüsü için doğru sonlandırma koşulu nedir?

Özet: Derin Araştırma Döngüsü Kalıbı

Derin araştırma döngüsü kalıbı: ara → olguları çıkar → boşlukları bul → takip sorguları oluştur → tekrarla → sentezle. Bu kalıp, insan araştırmacının çalışma biçimini yansıtır.

Temel tasarım kararları şunlardır: sonlandırma ölçütleri (en yüksek yineleme sayısı, boşluk bulunmaması, azalan getiriler), ilişkilendirme için kaynak takibi, hız için paralel arama ve sentezden önce olguların tekilleştirilmesi. Derinlik ile maliyet ve gecikme arasında denge kurmak için 3-4 yinelemeyle sınırlayın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle AI Agents öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
60
Dersler
239

Sıkça Sorulan Sorular

“Derin Araştırma Döngüsü Kalıbı” dersi ücretsiz mi?

Evet — “Derin Araştırma Döngüsü Kalıbı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Derin Araştırma Döngüsü Kalıbı” dersinde ne öğreneceğim?

Sorgula → oku → çıkar → birleştir → yeniden sorgula: çok adımlı araştırma. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Derin Araştırma Döngüsü Kalıbı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Aracı Araması İçin Tavily ve SerpAPI
  2. Arama Sonuçlarını Sıralama ve Filtreleme
  3. Derin Araştırma Döngüsü Kalıbı
  4. Web Aramasını RAG ile Birleştirme
← AI Agents Sayfasına Dön