Cara Membuat Ulang Riset Mendalam OpenAI, Tetapi Sumber Terbuka

Di bidang AI yang berkembang pesat, inisiatif sumber terbuka semakin populer, menawarkan alternatif terjangkau untuk model berpemilik. Contohnya, proyek "Open Deep Research".

Ardianto Nugroho

Ardianto Nugroho

15 April 2025

Cara Membuat Ulang Riset Mendalam OpenAI, Tetapi Sumber Terbuka

Penelitian mendalam dalam kecerdasan buatan bukanlah model tunggal yang monolitik—melainkan sebuah proses, alur kerja berulang yang melibatkan pencarian, membaca, dan penalaran hingga jawaban ditemukan. Sistem hak milik OpenAI, seperti yang mendukung ChatGPT atau GPT-4, menggunakan saluran kompleks yang terus-menerus menyempurnakan respons. Sekarang bayangkan dapat membangun sistem serupa menggunakan alat sumber terbuka. Artikel ini menjelaskan cara membuat ulang sistem Penelitian Mendalam menggunakan proyek jina-ai/node-DeepResearch. Kami akan menguraikan kode, merinci setiap komponen, dan menunjukkan cara menyiapkan dan memperluas sistem.

button

1. Ikhtisar dan Tujuan

DeepResearch dibangun di sekitar ide sederhana namun kuat:

Terus mencari dan membaca halaman web hingga menemukan jawabannya (atau melebihi anggaran token).

Sistem ini mengambil kueri (misalnya, “siapa yang lebih besar? cohere, jina ai, voyage?”) dan memasuki sebuah loop. Pada setiap langkah, agen (modul cerdas) memutuskan suatu tindakan. Ia mungkin mencari kata kunci baru, membaca isi URL, merefleksikan dengan menghasilkan pertanyaan lanjutan, atau memberikan jawaban jika yakin. Siklus berulang ini berlanjut hingga jawabannya definitif atau anggaran token (proksi untuk sumber daya komputasi) terlampaui.

Instalasi dan Pengaturan

Sebelum menyelami kode, Anda perlu menginstal dependensi yang diperlukan dan mengatur kunci API Anda. Proyek ini menggunakan Gemini untuk pemodelan bahasa, Brave atau DuckDuckGo untuk pencarian web, dan Jina Reader untuk mengambil konten halaman web. Berikut cara Anda menyiapkan proyek:

export GEMINI_API_KEY=...  # untuk Gemini API, tanyakan Han
export JINA_API_KEY=jina_...  # kunci Jina API gratis, dapatkan dari https://jina.ai/reader
export BRAVE_API_KEY=...  # opsional; jika tidak disediakan, secara default menggunakan pencarian DuckDuckGo

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

README bahkan menyediakan contoh untuk menjalankan sistem dengan kueri yang berbeda:

Selain antarmuka baris perintah, proyek ini juga menyertakan API server web yang mengekspos titik akhir untuk mengirimkan kueri dan melakukan streaming pembaruan progres.


2. Arsitektur dan Komponen Utama

Mari kita uraikan komponen utama sistem dengan menjelajahi file inti:

2.1 agent.ts – Logika Inti

File agent.ts adalah jantung dari sistem. Ia mengimplementasikan logika untuk siklus "penelitian mendalam": menghasilkan perintah, memutuskan tindakan, dan melakukan iterasi melalui langkah-langkah pencarian, membaca, merefleksikan, dan menjawab.

Elemen Kunci dalam agent.ts:

Impor dan Pengaturan:

File dimulai dengan mengimpor berbagai alat dan pustaka:

Fungsi Tidur:

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

Fungsi pembantu ini digunakan untuk menunda operasi—berguna untuk menghindari pembatasan laju saat memanggil API eksternal.

Pembuatan Skema:

Fungsi getSchema mendefinisikan skema JSON untuk respons agen. Ia secara dinamis membangun skema yang mencakup properti untuk:

Dengan memberlakukan skema JSON yang ketat, output agen tetap konsisten dan dapat dibaca oleh mesin.

Pembuatan Prompt:

Fungsi getPrompt membuat prompt terperinci yang dikirim ke model bahasa. Ia mengagregasi beberapa bagian:

Prompt berlapis ini memandu model AI generatif untuk "berpikir" langkah demi langkah dan memilih satu tindakan pada satu waktu.

Loop Utama di getResponse:

Fungsi getResponse adalah inti dari loop iteratif agen. Ia menyiapkan konteks awal:

Di dalam loop while, agen:

Jika loop kehabisan anggaran atau terlalu banyak upaya buruk terjadi, sistem memasuki "Mode Beast," di mana upaya agresif terakhir untuk menjawab dilakukan.

Penyimpanan Konteks:

Fungsi storeContext menulis prompt saat ini dan berbagai status memori (konteks, kueri, pertanyaan, dan pengetahuan yang dikumpulkan) ke file. Proses pengarsipan ini membantu debugging dan memungkinkan analisis lebih lanjut dari proses pengambilan keputusan.

Eksekusi Akhir:

Fungsi main() di akhir agent.ts menggunakan argumen baris perintah (kueri), memanggil getResponse, dan mencetak jawaban akhir bersama dengan ringkasan penggunaan token.


2.2 config.ts – Mengonfigurasi Lingkungan

File config.ts adalah tempat konfigurasi lingkungan dan model didefinisikan:

File konfigurasi ini memudahkan untuk mengubah pengaturan dan menyesuaikan sistem ke lingkungan atau perilaku model yang berbeda.


2.3 server.ts – API Server Web

Untuk memungkinkan pengguna berinteraksi dengan DeepResearch melalui permintaan HTTP, sistem menyertakan server berbasis Express sederhana di server.ts. File ini mengatur titik akhir yang menangani pengiriman kueri dan melakukan streaming pembaruan progres secara real time.

Poin Kunci di server.ts:

Pengaturan Express:

Server menggunakan Express dan CORS untuk mendukung permintaan lintas asal. Ia mendengarkan di port 3000 (atau port yang ditentukan di lingkungan).

Titik Akhir Kueri (POST /api/v1/query):

Titik Akhir Streaming (GET /api/v1/stream/:requestId):

Penyimpanan dan Pengambilan Tugas:

Server menulis hasil tugas ke sistem file (di bawah direktori tasks) dan menyediakan titik akhir (GET /api/v1/task/:requestId) untuk mengambil hasil yang disimpan.

Komponen server web ini membuat agen penelitian dapat diakses melalui HTTP, memungkinkan eksperimen interaktif dan integrasi ke dalam sistem yang lebih besar.


2.4 test-duck.ts – Utilitas untuk Menguji Pencarian

File test-duck.ts adalah skrip mandiri yang menggunakan Axios untuk mengirim permintaan HTTP GET ke API eksternal (dalam hal ini, jsonplaceholder.typicode.com) sebagai pengujian. Meskipun fungsi utamanya adalah untuk memverifikasi bahwa permintaan HTTP berfungsi dengan benar (termasuk mengatur header yang tepat dan menangani kesalahan), ia berfungsi sebagai contoh bagaimana permintaan eksternal ditangani di dalam sistem. Dalam pengaturan yang lebih kompleks, pola serupa digunakan saat membuat kueri API pencarian seperti DuckDuckGo atau Brave.


2.5 types.ts – Mendefinisikan Struktur Data yang Konsisten

File types.ts mendefinisikan semua tipe khusus yang digunakan di seluruh proyek:

Tipe Tindakan:
Ini termasuk berbagai tindakan yang dapat dilakukan agen:

Tipe Respons:
File mendefinisikan respons terstruktur untuk hasil pencarian, pembacaan URL, evaluasi, analisis kesalahan, dan banyak lagi. Ini membantu menjaga konsistensi dan memastikan bahwa setiap modul menafsirkan data dengan cara yang sama.

Tipe Skema:
Definisi skema JSON memastikan bahwa respons yang dihasilkan oleh model bahasa secara ketat mematuhi format yang diharapkan. Ini sangat penting untuk pemrosesan hilir.

Konteks Pelacak:
Tipe khusus untuk pelacak token dan tindakan juga didefinisikan, yang digunakan untuk memantau status percakapan dan proses penelitian.


3. Proses Penelitian Mendalam Iteratif

Sistem keseluruhan mengikuti proses metodis dan iteratif yang meniru cara seorang peneliti manusia mungkin bekerja:

Inisialisasi:
Proses dimulai dengan pertanyaan asli, yang ditambahkan ke daftar "gaps" (yaitu, hal-hal yang tidak diketahui yang perlu diisi).

Pembuatan Prompt:
Agen membangun prompt menggunakan pertanyaan saat ini, konteks sebelumnya, pengetahuan yang dikumpulkan, dan bahkan upaya yang tidak berhasil. Prompt ini kemudian dikirim ke model AI generatif.

Pemilihan Tindakan:
Berdasarkan output model, agen memilih salah satu dari beberapa tindakan:

Pembaruan Konteks:
Setiap langkah memperbarui pelacak internal (penggunaan token dan status tindakan) dan mengarsipkan status saat ini ke file. Ini memastikan transparansi dan memungkinkan debugging atau peninjauan nanti.

Evaluasi dan Looping:
Ketika sebuah jawaban diusulkan, langkah evaluasi memeriksa apakah itu definitif. Jika tidak, sistem menyimpan detail upaya yang gagal dan menyesuaikan strateginya. Siklus berlanjut hingga jawaban yang memuaskan ditemukan atau anggaran token habis.

Beast Mode:
Jika langkah normal gagal menghasilkan jawaban definitif dalam batasan, sistem memasuki "Mode Beast." Dalam mode ini, AI generatif dipaksa untuk menghasilkan jawaban berdasarkan konteks yang terakumulasi—bahkan jika itu berarti membuat tebakan yang terpelajar.


4. Progres dan Umpan Balik Real-Time

Fitur integral dari sistem DeepResearch adalah mekanisme umpan balik real-time-nya. Melalui titik akhir streaming server web:

Misalnya, peristiwa progres mungkin terlihat seperti ini:

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": []
  }
}

Pelaporan progres terperinci ini memungkinkan pengembang untuk melihat bagaimana penalaran agen berkembang dari waktu ke waktu, memberikan wawasan tentang keberhasilan dan area yang membutuhkan peningkatan.


5. Memperluas dan Menyesuaikan DeepResearch

Sifat sumber terbuka dari proyek ini berarti Anda dapat menyesuaikan sistem untuk kebutuhan Anda. Berikut adalah beberapa ide untuk memperluas DeepResearch:

Penyedia Pencarian Kustom:
Anda dapat mengintegrasikan penyedia pencarian tambahan atau menyesuaikan proses penulisan ulang kueri untuk pencarian khusus domain.

Modul Pembacaan yang Ditingkatkan:
Jika Anda memerlukan pemrosesan teks yang lebih rinci, Anda dapat mengintegrasikan model NLP alternatif atau menyesuaikan komponen Jina Reader untuk menangani tipe konten baru.

Evaluasi yang Ditingkatkan:
Modul evaluator saat ini memeriksa apakah suatu jawaban definitif. Anda dapat memperluas ini untuk memasukkan metrik yang lebih bernuansa, seperti analisis sentimen atau algoritma pemeriksaan fakta.

Antarmuka Pengguna:
Meskipun sistem saat ini menggunakan antarmuka baris perintah dan server web sederhana untuk melakukan streaming peristiwa, Anda dapat membangun antarmuka web atau seluler lengkap untuk sesi penelitian interaktif.

Peningkatan Skalabilitas:
Implementasi saat ini berjalan sebagai layanan node tunggal. Untuk penggunaan produksi, pertimbangkan untuk mengontainerisasi aplikasi dan menyebarkannya menggunakan Kubernetes atau platform orkestrasi lain untuk menangani lalu lintas tinggi dan pemrosesan terdistribusi.


6. Keamanan, Kinerja, dan Praktik Terbaik

Saat menyebarkan sistem berbasis AI seperti DeepResearch, ada beberapa pertimbangan tambahan:

Manajemen Kunci API:
Pastikan bahwa kunci API Anda (untuk Gemini, Jina, dan Brave) disimpan dengan aman dan tidak pernah dikodekan secara permanen dalam kode sumber Anda. Variabel lingkungan dan vault yang aman direkomendasikan.

Pembatasan Laju:
Fungsi sleep bawaan membantu menghindari pembatasan laju dengan menunda permintaan berturut-turut. Namun, pertimbangkan untuk menerapkan mekanisme pembatasan laju tambahan di tingkat server atau gateway API.

Validasi Data:
Validasi secara ketat kueri dan respons input. Skema JSON yang didefinisikan dalam agen membantu, tetapi Anda juga harus memvalidasi permintaan HTTP yang masuk untuk mencegah input berbahaya.

Penanganan Kesalahan:
Penanganan kesalahan yang kuat (seperti yang terlihat dalam kode server dan test-duck.ts) sangat penting. Ini memastikan bahwa kegagalan API yang tidak terduga atau respons yang salah format tidak membuat sistem crash.

Pemantauan Sumber Daya:
Melacak penggunaan token sangat penting. Kelas TokenTracker dan ActionTracker memberikan wawasan tentang konsumsi sumber daya. Memantau metrik ini dapat membantu dalam menyempurnakan kinerja sistem dan menghindari penggunaan yang berlebihan.


7. Kesimpulan

Proyek DeepResearch oleh Jina AI mencontohkan bagaimana proses penelitian iteratif yang kompleks dapat dibangun menggunakan alat sumber terbuka. Dengan mengintegrasikan mesin pencari, model AI generatif, dan loop penalaran cerdas, sistem terus-menerus menyempurnakan jawabannya hingga yakin—atau hingga batas sumber daya tercapai.

Dalam artikel ini, kami menjelajahi cara membuat ulang Penelitian Mendalam OpenAI menggunakan pendekatan sumber terbuka:

Dengan membuat teknik penelitian canggih ini tersedia sebagai sumber terbuka, proyek seperti DeepResearch mendemokratisasi akses ke metode AI mutakhir. Apakah Anda seorang peneliti, pengembang, atau perusahaan yang ingin mengintegrasikan kemampuan penelitian mendalam ke dalam alur kerja Anda, proyek ini berfungsi sebagai inspirasi dan fondasi praktis untuk membangun solusi Anda sendiri.

Desain iteratif—menggabungkan pencarian, pembacaan, refleksi, dan penjawaban dalam loop berkelanjutan—memastikan bahwa bahkan kueri yang ambigu atau kompleks ditangani dengan beberapa lapisan pengawasan. Dan dengan arsitektur terperinci yang melacak penggunaan token dan memberikan umpan balik langsung, Anda mendapatkan wawasan mendalam tentang proses penalaran di balik setiap jawaban.

Jika Anda ingin bereksperimen, kloning repositori, atur lingkungan Anda seperti yang dijelaskan, dan jalankan kueri mulai dari aritmatika sederhana hingga pertanyaan penelitian multifaset. Dengan sedikit penyesuaian, Anda dapat menyesuaikan sistem ke domain baru dan bahkan meningkatkan kemampuan penalarannya. Proyek sumber terbuka seperti ini membuka jalan bagi inovasi berbasis komunitas dalam penelitian AI.


Dengan mengikuti uraian dan analisis terperinci ini, Anda dapat membuat ulang dan memperluas ide-ide di balik Penelitian Mendalam OpenAI dengan cara sumber terbuka sepenuhnya. Apakah Anda ingin membangun di atas basis kode yang ada atau mengintegrasikan metodologi serupa ke dalam proyek Anda, peta jalannya jelas: ulangi, sempurnakan, dan dorong batasan penelitian otomatis.

button

Explore more

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

💡Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform Terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!tombol Model teks-ke-video mutakhir OpenAI, Sora, telah mengubah pembuatan konten yang dihasilkan AI dengan kemampuannya menciptakan video yang sangat realistis dari instruksi teks sederhana. Namun, biaya

3 June 2025

Apa itu Ollama? Cara Menginstal Ollama?

Apa itu Ollama? Cara Menginstal Ollama?

💡Ingin alat Pengujian API yang hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau! button Lanskap kecerdasan buatan (AI) terus berkembang dengan kecepatan tinggi, dan Model Bahasa Besar (LLM) menjadi semakin kuat dan mudah diakses. Meskipun banyak orang berinteraksi dengan model

28 April 2025

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Ingin Swagger UI dalam Bahasa Indonesia? Artikel ini menjelaskan mengapa tidak ada unduhan resmi gratis dan cara mengaktifkan terjemahan. Jelajahi fitur Swagger dan lihat mengapa Apidog adalah alternatif Swagger superior untuk desain, pengujian, dan dokumentasi API yang terintegrasi.

23 April 2025

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.