Derin Araştırma Döngüsü Kalıbı
Sorgula → oku → çıkar → birleştir → yeniden sorgula: çok adımlı araştırma.
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:
- İlk sorgu — kullanıcının özgün sorusuyla arama yapın
- En iyi sonuçları okuyun — en iyi 3 kaynaktan temel olguları çıkarın
- Boşlukları belirleyin — hangi önemli sorular henüz yanıtlanmadı?
- Takip sorguları — boşluklar için hedefli aramalar oluşturun
- 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 answer2. 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 iterationSonlandı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_factsBilgi 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.
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
- Aracı Araması İçin Tavily ve SerpAPI
- Arama Sonuçlarını Sıralama ve Filtreleme
- Derin Araştırma Döngüsü Kalıbı
- Web Aramasını RAG ile Birleştirme