Apidog

Platform Pengembangan API Kolaboratif All-in-one

Desain API

Dokumentasi API

Debug API

Mocking API

Pengujian Otomatis API

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

Updated on April 15, 2025

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:

  • Kueri Sederhana:
    npm run dev "1+1=" atau npm run dev "apa ibu kota Prancis?"
  • Kueri Multi-langkah:
    npm run dev "apa berita terbaru dari Jina AI?"
    npm run dev "apa akun twitter pendiri jina ai"
  • Kueri yang Ambigu, Mirip Penelitian:
    npm run dev "siapa yang lebih besar? cohere, jina ai, voyage?"
    npm run dev "siapa yang akan menjadi presiden AS pada tahun 2028?"
    npm run dev "apa yang harus menjadi strategi jina ai untuk tahun 2025?"

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:

  • GoogleGenerativeAI digunakan untuk pembuatan bahasa.
  • readUrl dari ./tools/read mengambil dan memproses konten halaman web.
  • duckSearch dan braveSearch menyediakan kemampuan pencarian eksternal.
  • Fungsi utilitas seperti rewriteQuery, dedupQueries, evaluateAnswer, dan analyzeSteps membantu menyempurnakan kueri dan mengevaluasi respons.
  • Nilai konfigurasi (kunci API, anggaran token, dan konfigurasi model) diimpor dari config.ts.
  • Utilitas pelacak Token dan Tindakan memantau penggunaan token dan status progres agen.
  • Terakhir, file mengimpor tipe (misalnya, StepAction, ResponseSchema) yang didefinisikan dalam types.ts.

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:

  • search: Membutuhkan searchQuery berbasis kata kunci.
  • answer: Menentukan bahwa jawaban akhir harus menyertakan teks bahasa alami dan referensi pendukung (kutipan dan URL yang tepat).
  • reflect: Mencantumkan sub-pertanyaan klarifikasi untuk mengisi kesenjangan pengetahuan.
  • visit: Berisi target URL untuk membaca konten eksternal.

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:

  • Header: Ini mencakup tanggal saat ini dan pertanyaan asli.
  • Context and Knowledge: Setiap tindakan sebelumnya dan pengetahuan perantara yang dikumpulkan disertakan.
  • Unsuccessful Attempts: Jika tindakan sebelumnya gagal menghasilkan jawaban definitif, kegagalan tersebut (dengan alasan dan peningkatan) dicatat.
  • Actions: Daftar tindakan yang mungkin ditampilkan. Bergantung pada bendera (seperti allowSearch, allowRead, dll.), ia menghitung operasi yang diizinkan. Dalam "Mode Beast," instruksi mendesak agen untuk berusaha sekuat tenaga untuk menghasilkan jawaban bahkan jika ketidakpastian tetap ada.

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:

  • Trackers: Dua pelacak digunakan—TokenTracker untuk memantau jumlah token yang digunakan (mencegah sistem melebihi anggarannya) dan ActionTracker untuk melacak setiap langkah dan hasilnya.
  • Gaps and Knowledge: Ia dimulai dengan "gap" (pertanyaan asli) dan kemudian menambahkan pertanyaan perantara jika sistem perlu merefleksikan penalarannya.

Di dalam loop while, agen:

  • Menunggu (menggunakan fungsi tidur) untuk menghindari batasan laju API.
  • Menghasilkan prompt berdasarkan konteks saat ini.
  • Memanggil model generatif (melalui GoogleGenerativeAI) untuk menghasilkan respons.
  • Mengurai respons JSON untuk menentukan tindakan mana yang diambil (menjawab, merefleksikan, mencari, atau mengunjungi).
  • Bergantung pada tindakan:
  • Answer: Ia mengevaluasi jawaban dan, jika definitif, mengakhiri loop.
  • Reflect: Ia memproses sub-pertanyaan untuk mengisi kesenjangan pengetahuan.
  • Search: Ia menulis ulang kueri pencarian, menduplikasi kata kunci yang sebelumnya digunakan, dan mengambil URL baru dari DuckDuckGo atau Brave.
  • Visit: Ia membaca konten dari URL yang disediakan dan memperbarui basis pengetahuan.

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:

  • Environment Variables: Menggunakan dotenv, ia memuat kunci API untuk Gemini, Jina, dan Brave. Ia juga mendukung konfigurasi proksi HTTPS.
  • Search Provider: Sistem secara dinamis memilih penyedia pencarian berdasarkan apakah kunci Brave API disediakan; jika tidak, ia secara default menggunakan DuckDuckGo.
  • Model Configurations: File mengatur konfigurasi model default dan spesifik untuk berbagai tugas, seperti penulisan ulang kueri, deduplikasi, dan evaluasi. Misalnya, model generatif agen dikonfigurasi dengan suhu 0,7 untuk menyeimbangkan kreativitas dan determinisme.
  • Token Budget and Delay: Konstanta STEP_SLEEP diatur ke 1000 milidetik, memastikan jeda satu detik antara langkah-langkah.

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):

  • Klien mengirimkan payload JSON yang berisi kueri, anggaran token, dan upaya buruk maksimum yang diizinkan.
  • Server membuat pelacak baru (untuk penggunaan token dan status tindakan) dan menetapkan requestId unik.
  • Permintaan diproses secara asinkron dengan memanggil getResponse.
  • Setelah selesai, jawaban akhir disimpan, dan progres dipancarkan menggunakan EventEmitter.

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

  • Titik akhir ini menggunakan Server-Sent Events (SSE) untuk terus-menerus mendorong pembaruan kembali ke klien.
  • Saat agen mengambil tindakan (mencari, merefleksikan, mengunjungi, menjawab), peristiwa progres dipancarkan. Setiap peristiwa mencakup informasi langkah saat ini, penggunaan token, dan detail tindakan.
  • Ini memungkinkan klien untuk memantau proses penelitian secara real time.

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:

  • SearchAction: Berisi string searchQuery.
  • AnswerAction: Membutuhkan string answer dan references pendukung.
  • ReflectAction: Menyertakan array questionsToAnswer.
  • VisitAction: Berisi daftar URLTargets.

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:

  • Search: Merumuskan kueri baru untuk mengumpulkan lebih banyak data.
  • Visit: Mengambil konten terperinci dari URL tertentu.
  • Reflect: Menghasilkan sub-pertanyaan klarifikasi untuk mengatasi kesenjangan pengetahuan apa pun.
  • Answer: Memberikan jawaban akhir jika informasi dianggap definitif.

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:

  • Klien menerima pembaruan progres yang merinci tindakan mana yang diambil, statistik penggunaan token, dan status pelacak tindakan saat ini.
  • Peristiwa progres (seperti yang ditunjukkan dalam contoh README) mencakup baik proses berpikir agen maupun detail seperti langkah saat ini dan rincian token.
  • Loop umpan balik langsung ini sangat berharga untuk debugging, memantau penggunaan sumber daya, dan memahami bagaimana sistem bernalar.

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:

  • Kami membahas langkah-langkah instalasi dan pengaturan lingkungan.
  • Kami menguraikan modul inti, dari logika agen iteratif di agent.ts hingga konfigurasi, API server web, dan definisi tipe.
  • Kami memeriksa mekanisme umpan balik real-time yang melakukan streaming pembaruan progres, memberikan transparansi ke dalam proses penalaran.
  • Terakhir, kami melihat potensi ekstensi, opsi penyesuaian, dan praktik terbaik untuk menyebarkan sistem semacam itu.

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
Apa itu Ollama? Cara Menginstal Ollama?Sudut Pandang

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

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?Sudut Pandang

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.

Oliver Kingsley

April 23, 2025

Di Mana Mengunduh Postman Bahasa Indonesia Gratis?Sudut Pandang

Di Mana Mengunduh Postman Bahasa Indonesia Gratis?

Bisakah Anda mengunduh Postman Bahasa Indonesia gratis? Meskipun Postman tidak memiliki dukungan Bahasa Indonesia native, ada solusi lain. Jelajahi ini & temukan Apidog, alternatif Postman terpadu yang kuat untuk menyederhanakan alur kerja API Anda, apa pun bahasanya.

Oliver Kingsley

April 22, 2025