OpenAI Derin Araştırması Nasıl Yeniden Yaratılır, Ancak Açık Kaynak

Yapay zeka alanında açık kaynaklı girişimler yükseliyor. "Open Deep Research" gibi projeler, tescilli modellere alternatif sunuyor.

Efe Demir

Efe Demir

5 June 2025

OpenAI Derin Araştırması Nasıl Yeniden Yaratılır, Ancak Açık Kaynak

Yapay zekâ alanındaki derin araştırma, tek bir monolitik model değildir; daha ziyade, bir cevap bulunana kadar arama, okuma ve akıl yürütmeyi içeren, yinelemeli bir iş akışıdır. ChatGPT veya GPT-4'e güç verenler gibi OpenAI'nin tescilli sistemleri, yanıtları sürekli olarak iyileştiren karmaşık boru hatları kullanır. Şimdi, açık kaynaklı araçları kullanarak benzer bir sistem oluşturabildiğinizi hayal edin. Bu makale, jina-ai/node-DeepResearch projesini kullanarak bir Derin Araştırma sisteminin nasıl yeniden oluşturulacağını açıklamaktadır. Kodu parçalayacak, her bir bileşeni detaylandıracak ve sistemi nasıl kurup genişleteceğinizi göstereceğiz.

button

1. Genel Bakış ve Amaç

DeepResearch, basit ama güçlü bir fikir üzerine kurulmuştur:

Cevabı bulana kadar (veya token bütçesini aşana kadar) web sayfalarını aramaya ve okumaya devam edin.

Sistem bir sorgu alır (örneğin, “kim daha büyük? cohere, jina ai, voyage?”) ve bir döngüye girer. Her adımda, aracı (akıllı bir modül) bir eyleme karar verir. Yeni anahtar kelimeler arayabilir, URL'lerin içeriğini okuyabilir, takip soruları üreterek düşünebilir veya eminse bir cevap sağlayabilir. Bu yinelemeli döngü, cevap kesinleşene veya token bütçesi (hesaplama kaynakları için bir vekil) aşılana kadar devam eder.

Kurulum ve Ayarlama

Koda dalmadan önce, gerekli bağımlılıkları yüklemeniz ve API anahtarlarınızı ayarlamanız gerekir. Proje, dil modellemesi için Gemini'yi, web araması için Brave veya DuckDuckGo'yu ve web sayfası içeriğini getirmek için Jina Reader'ı kullanır. İşte projeyi nasıl kuracağınız:

export GEMINI_API_KEY=...  # for Gemini API, ask Han
export JINA_API_KEY=jina_...  # free Jina API key, get from https://jina.ai/reader
export BRAVE_API_KEY=...  # optional; if not provided, it defaults to DuckDuckGo search

git clone https://github.com/jina-ai/node-DeepResearch.git
cd node-DeepResearch
npm install

README, sistemi farklı sorgularla çalıştırmak için örnekler bile sağlar:

Proje, bir komut satırı arayüzüne ek olarak, sorgu göndermek ve ilerleme güncellemelerini yayınlamak için uç noktalar sunan bir web sunucusu API'si de içerir.


2. Mimari ve Temel Bileşenler

Sistemin ana bileşenlerini, temel dosyaları inceleyerek parçalayalım:

2.1 agent.ts – Temel Mantık

agent.ts dosyası, sistemin kalbidir. "Derin araştırma" döngüsünün mantığını uygular: istemler oluşturma, eylemlere karar verme ve arama, okuma, düşünme ve cevap adımlarından geçme.

agent.ts'deki Temel Öğeler:

İçe Aktarmalar ve Kurulum:

Dosya, çeşitli araçları ve kitaplıkları içe aktararak başlar:

Uyku İşlevi:

async function sleep(ms: number) {
  const seconds = Math.ceil(ms / 1000);
  console.log(`Waiting ${seconds}s...`);
  return new Promise(resolve => setTimeout(resolve, ms));
}

Bu yardımcı işlev, işlemleri geciktirmek için kullanılır; harici API'leri çağırırken hız sınırlamasından kaçınmak için kullanışlıdır.

Şema Oluşturma:

getSchema işlevi, aracının yanıtı için JSON şemasını tanımlar. Aşağıdakiler için özellikler içeren bir şema dinamik olarak oluşturur:

Katı bir JSON şeması uygulayarak, aracın çıktısı tutarlı ve makine tarafından okunabilir kalır.

İstem Oluşturma:

getPrompt işlevi, dil modeline gönderilen ayrıntılı bir istem oluşturur. Birkaç bölümü toplar:

Bu katmanlı istem, üretken yapay zeka modelini adım adım "düşünmeye" ve bir seferde bir eylem seçmeye yönlendirir.

getResponse'daki Ana Döngü:

getResponse işlevi, aracın yinelemeli döngüsünün çekirdeğidir. İlk bağlamı ayarlar:

Bir while döngüsünün içinde, aracı:

Döngü bütçeden taşarsa veya çok fazla kötü deneme olursa, sistem "Canavar Modu"na girer; burada, cevap vermek için son, agresif bir girişimde bulunulur.

Bağlam Depolama:

storeContext işlevi, geçerli istemi ve çeşitli bellek durumlarını (bağlam, sorgular, sorular ve toplanan bilgiler) dosyalara yazar. Bu arşivleme süreci, hata ayıklamaya yardımcı olur ve karar verme sürecinin daha fazla analiz edilmesini sağlar.

Son Yürütme:

agent.ts'nin sonundaki main() işlevi, komut satırı argümanını (sorgu) kullanır, getResponse'ı çağırır ve son cevabı token kullanımının bir özetiyle birlikte yazdırır.


2.2 config.ts – Ortamı Yapılandırma

config.ts dosyası, ortam ve model yapılandırmalarının tanımlandığı yerdir:

Bu yapılandırma dosyası, ayarları değiştirmeyi ve sistemi farklı ortamlara veya model davranışlarına uyarlamayı kolaylaştırır.


2.3 server.ts – Web Sunucusu API'si

Kullanıcıların HTTP istekleri aracılığıyla DeepResearch ile etkileşim kurmasına izin vermek için, sistem server.ts'de basit bir Express tabanlı sunucu içerir. Bu dosya, sorgu gönderimlerini işleyen ve ilerleme güncellemelerini gerçek zamanlı olarak yayınlayan uç noktalar ayarlar.

server.ts'deki Temel Noktalar:

Express Kurulumu:

Sunucu, çapraz kökenli istekleri desteklemek için Express ve CORS kullanır. 3000 numaralı bağlantı noktasını (veya ortamda belirtilen bir bağlantı noktasını) dinler.

Sorgu Uç Noktası (POST /api/v1/query):

Akış Uç Noktası (GET /api/v1/stream/:requestId):

Görev Depolama ve Alma:

Sunucu, görev sonuçlarını dosya sistemine (tasks dizini altında) yazar ve depolanmış bir sonucu almak için bir uç nokta (GET /api/v1/task/:requestId) sağlar.

Bu web sunucusu bileşeni, araştırma aracını HTTP üzerinden erişilebilir hale getirerek hem etkileşimli deneyleri hem de daha büyük sistemlere entegrasyonu sağlar.


2.4 test-duck.ts – Arama Test Etmek İçin Bir Yardımcı Program

test-duck.ts dosyası, bir test olarak harici bir API'ye (bu durumda, jsonplaceholder.typicode.com) bir HTTP GET isteği göndermek için Axios kullanan bağımsız bir komut dosyasıdır. Birincil işlevi, HTTP isteklerinin (uygun başlıkların ayarlanması ve hataların işlenmesi dahil) doğru şekilde çalıştığını doğrulamak olsa da, sistem içinde harici isteklerin nasıl işlendiğine dair bir örnek olarak hizmet eder. Daha karmaşık bir kurulumda, DuckDuckGo veya Brave gibi arama API'lerini sorgularken benzer desenler kullanılır.


2.5 types.ts – Tutarlı Veri Yapılarını Tanımlama

types.ts dosyası, proje genelinde kullanılan tüm özel türleri tanımlar:

Eylem Türleri:
Bunlar, aracın gerçekleştirebileceği çeşitli eylemleri içerir:

Yanıt Türleri:
Dosya, arama sonuçları, URL okuma, değerlendirme, hata analizi ve daha fazlası için yapılandırılmış yanıtlar tanımlar. Bu, tutarlılığın korunmasına yardımcı olur ve her modülün verileri aynı şekilde yorumlamasını sağlar.

Şema Türleri:
JSON şema tanımları, dil modeli tarafından üretilen yanıtların beklenen biçime sıkı sıkıya bağlı kalmasını sağlar. Bu, sonraki işlem için çok önemlidir.

İzleyici Bağlamı:
Token ve eylem izleyiciler için özel türler de tanımlanır; bunlar, konuşmanın ve araştırma sürecinin durumunu izlemek için kullanılır.


3. Yinelemeli Derin Araştırma Süreci

Genel sistem, bir insan araştırmacının nasıl çalışabileceğini taklit eden metodik, yinelemeli bir süreç izler:

Başlatma:
Süreç, orijinal soruyla başlar ve bu soru bir "boşluklar" listesine (yani, doldurulması gereken bilinmeyenler) eklenir.

İstem Oluşturma:
Aracı, geçerli soruyu, önceki bağlamı, toplanan bilgileri ve hatta başarısız denemeleri kullanarak bir istem oluşturur. Bu istem daha sonra üretken yapay zeka modeline gönderilir.

Eylem Seçimi:
Modelin çıktısına bağlı olarak, aracı birkaç eylemden birini seçer:

Bağlam Güncellemesi:
Her adım, dahili izleyicileri (token kullanımı ve eylem durumu) günceller ve geçerli durumu dosyalara arşivler. Bu, şeffaflığı sağlar ve hata ayıklamaya veya daha sonra incelemeye olanak tanır.

Değerlendirme ve Döngü:
Bir cevap önerildiğinde, bir değerlendirme adımı bunun kesin olup olmadığını kontrol eder. Değilse, sistem başarısız deneme ayrıntılarını depolar ve stratejisini ayarlar. Döngü, tatmin edici bir cevap bulunana veya token bütçesi tükenene kadar devam eder.

Canavar Modu:
Normal adımlar, kısıtlamalar dahilinde kesin bir cevap vermezse, sistem "Canavar Modu"na girer. Bu modda, üretken yapay zeka, bir tahminde bulunmak anlamına gelse bile, birikmiş bağlama dayanarak bir cevap üretmeye zorlanır.


4. Gerçek Zamanlı İlerleme ve Geri Bildirim

DeepResearch sisteminin ayrılmaz bir özelliği, gerçek zamanlı geri bildirim mekanizmasıdır. Web sunucusunun akış uç noktası aracılığıyla:

Örneğin, bir ilerleme olayı şöyle görünebilir:

data: {
  "type": "progress",
  "trackers": {
    "tokenUsage": 74950,
    "tokenBreakdown": {
      "agent": 64631,
      "read": 10319
    },
    "actionState": {
      "action": "search",
      "thoughts": "The text mentions several investors in Jina AI but doesn’t specify ownership percentages. A direct search is needed.",
      "URLTargets": [],
      "answer": "",
      "questionsToAnswer": [],
      "references": [],
      "searchQuery": "Jina AI investor ownership percentages"
    },
    "step": 7,
    "badAttempts": 0,
    "gaps": []
  }
}

Bu ayrıntılı ilerleme raporlaması, geliştiricilerin aracın akıl yürütmesinin zaman içinde nasıl geliştiğini görmesini sağlar ve hem başarılar hem de iyileştirme gerektiren alanlar hakkında içgörüler sağlar.


5. DeepResearch'ü Genişletme ve Özelleştirme

Bu projenin açık kaynaklı doğası, sistemi ihtiyaçlarınız için uyarlayabileceğiniz anlamına gelir. İşte DeepResearch'ü genişletmek için bazı fikirler:

Özel Arama Sağlayıcıları:
Ek arama sağlayıcılarını entegre edebilir veya etki alanına özgü aramalar için sorgu yeniden yazma sürecini özelleştirebilirsiniz.

Gelişmiş Okuma Modülleri:
Daha ayrıntılı metin işleme gerektiriyorsanız, alternatif NLP modellerini entegre edebilir veya yeni içerik türlerini işlemek için Jina Reader bileşenini ayarlayabilirsiniz.

Geliştirilmiş Değerlendirme:
Değerlendirici modülü şu anda bir cevabın kesin olup olmadığını kontrol ediyor. Bunu, duygu analizi veya gerçek kontrol algoritmaları gibi daha nüanslı ölçümleri içerecek şekilde genişletebilirsiniz.

Kullanıcı Arayüzü:
Mevcut sistem, komut satırı arayüzünü ve olayları yayınlamak için basit bir web sunucusunu kullanırken, etkileşimli araştırma oturumları için tam teşekküllü bir web veya mobil arayüz oluşturabilirsiniz.

Ölçeklenebilirlik İyileştirmeleri:
Mevcut uygulama, tek düğümlü bir hizmet olarak çalışır. Üretim kullanımı için, yüksek trafik ve dağıtılmış işlemeyi yönetmek üzere uygulamayı kapsayıcı hale getirmeyi ve Kubernetes veya başka bir orkestrasyon platformu kullanarak dağıtmayı düşünün.


6. Güvenlik, Performans ve En İyi Uygulamalar

DeepResearch gibi yapay zeka destekli bir sistem dağıtırken, birkaç ek husus vardır:

API Anahtarı Yönetimi:
API anahtarlarınızın (Gemini, Jina ve Brave için) güvenli bir şekilde saklandığından ve kaynak kodunuzda asla sabit kodlanmadığından emin olun. Ortam değişkenleri ve güvenli kasalar önerilir.

Hız Sınırlaması:
Yerleşik sleep işlevi, art arda gelen istekleri geciktirerek hız sınırlamasından kaçınmaya yardımcı olur. Ancak, sunucu veya API ağ geçidi düzeyinde ek hız sınırlama mekanizmaları uygulamayı düşünün.

Veri Doğrulama:
Girdi sorgularını ve yanıtları sıkı bir şekilde doğrulayın. Aracıda tanımlanan JSON şeması yardımcı olur, ancak ayrıca kötü niyetli girdileri önlemek için gelen HTTP isteklerini de doğrulamalısınız.

Hata İşleme:
Sağlam hata işleme (server kodu ve test-duck.ts'de görüldüğü gibi) kritik öneme sahiptir. Bu, beklenmedik API hatalarının veya hatalı biçimlendirilmiş yanıtların sistemi çökertmemesini sağlar.

Kaynak İzleme:
Token kullanımını izlemek esastır. TokenTracker ve ActionTracker sınıfları, kaynak tüketimi hakkında içgörüler sağlar. Bu ölçümleri izlemek, sistemin performansını ince ayarlamaya ve aşırı kullanımdan kaçınmaya yardımcı olabilir.


7. Sonuç

Jina AI tarafından yapılan DeepResearch projesi, açık kaynaklı araçlar kullanılarak karmaşık, yinelemeli araştırma süreçlerinin nasıl oluşturulabileceğini örneklendiriyor. Arama motorlarını, üretken yapay zeka modellerini ve akıllı akıl yürütme döngülerini entegre ederek, sistem kesinleşene kadar veya kaynak sınırlarına ulaşılana kadar cevabını sürekli olarak iyileştirir.

Bu makalede, OpenAI Derin Araştırmasını açık kaynaklı bir yaklaşımla nasıl yeniden oluşturacağımızı inceledik:

Bu gelişmiş araştırma tekniklerini açık kaynak olarak kullanılabilir hale getirerek, DeepResearch gibi projeler, son teknoloji yapay zeka yöntemlerine erişimi demokratikleştirir. İster bir araştırmacı, ister bir geliştirici veya derin araştırma yeteneklerini iş akışlarınıza entegre etmek isteyen bir kuruluş olun, bu proje hem kendi çözümünüzü oluşturmak için bir ilham kaynağı hem de pratik bir temel görevi görür.

Yinelemeli tasarım (arama, okuma, düşünme ve cevaplamayı sürekli bir döngüde birleştirmek), belirsiz veya karmaşık sorguların bile çok katmanlı incelemeyle ele alınmasını sağlar. Ve token kullanımını izleyen ve canlı geri bildirim sağlayan ayrıntılı bir mimari ile, her cevabın arkasındaki akıl yürütme süreci hakkında derinlemesine bilgi edinirsiniz.

Deney yapmak istiyorsanız, depoyu klonlayın, ortamınızı açıklandığı gibi ayarlayın ve basit aritmetikten çok yönlü araştırma sorularına kadar değişen sorgular çalıştırın. Biraz özelleştirmeyle, sistemi yeni etki alanlarına uyarlayabilir ve hatta akıl yürütme yeteneklerini geliştirebilirsiniz. Bunun gibi açık kaynaklı projeler, yapay zeka araştırmalarında topluluk odaklı inovasyonun yolunu açıyor.


Bu ayrıntılı dökümü ve analizi izleyerek, OpenAI'nin Derin Araştırmasının arkasındaki fikirleri tamamen açık kaynaklı bir şekilde yeniden oluşturabilir ve genişletebilirsiniz. İster mevcut kod tabanını oluşturmak ister benzer yöntemleri projelerinize entegre etmek isteyin, yol haritası açıktır: yineleyin, iyileştirin ve otomatik araştırma sınırlarını zorlayın.

button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin