Apidog

Platform Pengembangan API Kolaboratif All-in-one

Desain API

Dokumentasi API

Debug API

Mocking API

Pengujian Otomatis API

OpenHands: Alternatif AI Devin Sumber Terbuka

Ardianto Nugroho

Ardianto Nugroho

Updated on April 25, 2025

Dunia pengembangan perangkat lunak sedang mengalami pergeseran besar, didorong oleh kemajuan pesat dalam kecerdasan buatan. Kami telah melihat alat AI berkembang dari bantuan penyelesaian kode sederhana menjadi sistem canggih yang mampu memahami persyaratan kompleks dan menghasilkan aplikasi fungsional. Dalam lanskap yang menarik ini, pemain baru telah muncul, menangkap imajinasi pengembang di seluruh dunia: OpenHands. Dikenal sebagai alternatif sumber terbuka yang kuat untuk pengembang AI proprietary seperti Devin AI, OpenHands menawarkan platform di mana agen AI dapat melakukan tugas yang sebelumnya eksklusif untuk pengembang manusia.

Dikembangkan oleh All-Hands-AI, OpenHands (sebelumnya dikenal sebagai OpenDevin) bukan sekadar asisten pengkodean lainnya. Ini dirancang sebagai platform serbaguna untuk agen AI yang dirancang untuk menangani seluruh spektrum tugas pengembangan perangkat lunak. Bayangkan AI yang tidak hanya dapat menulis kode tetapi juga memodifikasi basis kode yang ada, menjalankan perintah terminal, menjelajahi web untuk informasi (ya, bahkan mencari solusi di Stack Overflow), berinteraksi dengan API, dan mengelola alur kerja pengembangan yang kompleks. Ini adalah janji OpenHands – untuk "Mengode Lebih Sedikit, Membuat Lebih Banyak."

Apa yang benar-benar membedakan OpenHands adalah komitmennya terhadap sumber terbuka. Dibangun di bawah Lisensi MIT yang permisif, ini mengundang kolaborasi, transparansi, dan inovasi yang didorong oleh komunitas. Ini sangat kontras dengan model tertutup, menawarkan pengembang kontrol, kustomisasi, dan wawasan yang tiada bandingnya ke dalam cara kerja mitra pengembangan AI mereka. Untuk tim dan individu yang waspada terhadap kunci vendor atau yang ingin menyesuaikan kemampuan AI dengan kebutuhan tertentu, OpenHands menawarkan proposisi yang menarik.

💡
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 maksimal?

Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
button

Apa yang Dilakukan OpenHands (Dahulu Open Devin)?

Memahami fungsi inti OpenHands adalah kunci untuk menghargai potensinya sebagai platform pengembangan AI. Ini memberikan agen AI dengan seperangkat kemampuan yang komprehensif:

Modifikasi Kode Cerdas

Agen OpenHands memiliki kemampuan untuk membaca, memahami, dan mengubah kode dalam konteks proyek yang ada. Dengan memanfaatkan Large Language Model (LLM) yang dipilih, agen menganalisis basis kode, memahami saling ketergantungan antara file dan fungsi, dan menerapkan modifikasi yang ditargetkan berdasarkan permintaan pengguna. Ini mencakup tugas-tugas seperti merestrukturisasi fungsi untuk kejelasan, menambahkan endpoint API baru, atau memperbarui ketergantungan proyek sesuai instruksi.

Eksekusi Perintah yang Aman

Salah satu pilar OpenHands adalah kapasitasnya untuk menjalankan perintah shell (seperti npm install, python manage.py runserver, git commit, ls, grep, dan lainnya) dalam lingkungan sandbox yang terlindungi dan terisolasi. Sandbox ini, biasanya diimplementasikan sebagai kontainer Docker, mengisolasi tindakan agen, mencegah dampak yang tidak diinginkan pada sistem host. Ini memungkinkan agen untuk melakukan operasi pengembangan penting seperti menyiapkan lingkungan proyek, menjalankan suite pengujian, menginstal pustaka yang diperlukan, menjalankan skrip build, dan mengelola kontrol versi.

Penjelajahan Web Terintegrasi

Pengembangan perangkat lunak yang efektif sering kali memerlukan pengumpulan informasi eksternal, seperti berkonsultasi dengan dokumentasi, mencari solusi di platform seperti Stack Overflow, atau meneliti pustaka. Agen OpenHands dilengkapi untuk menjelajahi web secara otonom, mengambil informasi yang diperlukan untuk menyelesaikan tugas yang ditugaskan. Kemampuan ini memungkinkan mereka untuk tetap terkini dengan praktik terbaik dan merumuskan solusi untuk masalah baru tanpa hanya mengandalkan informasi yang telah diberikan sebelumnya.

Interaksi API

Arsitektur perangkat lunak modern sering melibatkan integrasi beberapa layanan melalui API. Agen OpenHands dapat diarahkan untuk berinteraksi dengan API eksternal ini. Ini mungkin melibatkan pengambilan data dari sumber pihak ketiga, mengirim pembaruan ke sistem lain, atau mengoordinasikan alur kerja yang melintasi berbagai alat, sehingga mengotomatiskan proses pengembangan yang lebih kompleks.

Manajemen Sistem Berkas

Agen memerlukan kemampuan untuk berinteraksi dengan file proyek. OpenHands memberikan mereka izin untuk membuat, membaca, menulis, dan menghapus file dan direktori dalam ruang kerja yang ditentukan (biasanya volume yang dipetakan dari sistem lokal ke dalam sandbox agen). Ini memungkinkan mereka untuk menyusun proyek secara logis, menambahkan modul atau komponen baru, mengelola file konfigurasi, dan menyimpan hasil keluaran.

Kemampuan beragam ini, diorkestrasi oleh backend LLM yang dipilih pengguna, memberdayakan agen OpenHands untuk menangani tugas pengembangan yang rumit dan multi-langkah secara otonom, bergerak jauh melampaui generasi kode dasar menuju dukungan rekayasa perangkat lunak yang didorong oleh AI yang sebenarnya.

Cara Menginstal OpenHands di Mac, Linux, Windows

Menggunakan Docker adalah metode yang disarankan dan paling kuat untuk menjalankan OpenHands secara lokal. Ini memastikan konsistensi lingkungan dan menyediakan isolasi yang diperlukan untuk operasi agen. Di bawah ini adalah panduan terperinci untuk menginstal OpenHands di berbagai sistem operasi.

Persyaratan Sistem

Pastikan sistem Anda memenuhi prasyarat berikut:

  • Sistem Operasi:
  • macOS (dengan dukungan Docker Desktop)
  • Linux (Ubuntu 22.04 diuji, distribusi modern lainnya kemungkinan kompatibel)
  • Windows (dengan dukungan WSL 2 dan Docker Desktop)
  • Perangkat Keras: Sistem dengan prosesor modern dan setidaknya 4GB RAM disarankan. Tugas yang melibatkan operasi kompleks atau menjalankan LLM lokal yang lebih besar akan sangat diuntungkan dari peningkatan RAM dan sumber daya CPU/GPU.

Langkah-Langkah Instalasi Prasyarat

Ikuti langkah-langkah ini dengan hati-hati untuk menyiapkan prasyarat yang diperlukan.

Langkah 1: Instal Docker Desktop

Unduh dan instal Docker Desktop yang disesuaikan untuk sistem operasi Anda langsung dari situs web resmi Docker (https://www.docker.com/products/docker-desktop/). Ikuti panduan instalasi yang disediakan oleh Docker. Setelah instalasi, pastikan bahwa daemon Docker aktif; ikonnya harus terlihat di area sistem tray atau bilah menu Anda.

Langkah 2: Konfigurasi Docker Berdasarkan OS

Konfigurasi khusus diperlukan tergantung pada sistem operasi Anda.

Konfigurasi macOS
  1. Jalankan Docker Desktop.
  2. Akses Pengaturan (biasanya melalui ikon roda gigi).
  3. Navigasikan ke bagian lanjutan.
  4. Verifikasi bahwa opsi Izinkan soket Docker default digunakan dicentang (diaktifkan). Izin ini penting agar kontainer OpenHands dapat mengelola kontainer Docker lainnya (seperti sandbox).
Konfigurasi Linux
  1. Instal Docker Desktop untuk Linux dengan mengikuti dokumentasi resmi Docker.
  2. Pastikan layanan Docker berjalan setelah instalasi.
    (Catatan: Meskipun diuji di Ubuntu 22.04, kompatibilitas dengan distribusi Linux lainnya diharapkan tetapi tidak dijamin.)
Konfigurasi Windows
  1. Instal WSL (Windows Subsystem for Linux): Jika WSL 2 belum diinstal, buka PowerShell sebagai Administrator dan jalankan wsl --install. Perintah ini menginstal WSL dan distribusi Linux default (sering kali Ubuntu). Restart sistem mungkin diperlukan.
  2. Verifikasi Versi WSL: Buka jendela PowerShell atau Command Prompt standar dan ketik wsl --version. Pastikan keluaran menunjukkan versi WSL 2 atau lebih tinggi. Jika versi 1 yang ditampilkan, perbarui WSL atau set versi 2 sebagai default menggunakan wsl --set-default-version 2.
  3. Instal Docker Desktop untuk Windows: Lanjutkan dengan instalasi Docker Desktop jika belum dilakukan.
  4. Konfigurasi Integrasi Docker Desktop WSL: Luncurkan Docker Desktop, pergi ke Pengaturan. Di bawah Umum, pastikan Gunakan mesin berbasis WSL 2 di aktifkan. Di bawah Sumber Daya > Integrasi WSL, konfirmasi Aktifkan integrasi dengan distro WSL default saya di aktifkan. Terapkan perubahan dan restart Docker jika diminta.
  5. Catatan Penting: Untuk pengguna Windows, semua perintah docker selanjutnya terkait dengan OpenHands harus dieksekusi dari dalam lingkungan terminal WSL (misalnya, terminal Ubuntu), bukan langsung dari PowerShell atau Command Prompt.

Memulai Aplikasi OpenHands

Dengan prasyarat terpenuhi, Anda sekarang dapat memulai aplikasi OpenHands.

Langkah 1: Buka Terminal Anda
  • Di macOS atau Linux, buka aplikasi Terminal default Anda.
  • Di Windows, luncurkan terminal distribusi WSL yang Anda instal (misalnya, Ubuntu).
Langkah 2: Tarik Gambar Runtime (Opsional)

OpenHands menggunakan gambar Docker terpisah untuk lingkungan eksekusi sandboxed agen. Menarik gambar ini sebelumnya dapat mempercepat proses startup awal. Gunakan tag yang disarankan dalam dokumentasi resmi:

docker pull docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik

(Selalu verifikasi tag terbaru yang disarankan dari repositori GitHub OpenHands atau dokumentasi resmi, karena tag dapat berubah.)

Langkah 3: Jalankan Kontainer OpenHands

Eksekusi perintah komprehensif berikut dalam terminal Anda (gunakan terminal WSL di Windows):

docker run -it --rm --pull=always \
    -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik \
    -e LOG_ALL_EVENTS=true \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v ~/.openhands-state:/.openhands-state \
    -p 3000:3000 \
    --add-host host.docker.internal:host-gateway \
    --name openhands-app \
    docker.all-hands.dev/all-hands-ai/openhands:0.34
Langkah 4: Akses Antarmuka Pengguna Web

Setelah perintah docker run dieksekusi, pantau keluaran log di terminal Anda. Ketika urutan startup aplikasi selesai, buka browser web favorit Anda dan navigasikan ke http://localhost:3000.

Dengan langkah-langkah ini selesai, OpenHands berhasil diinstal dan berjalan secara lokal. Langkah selanjutnya adalah mengonfigurasi Large Language Model untuk memberdayakan agen.

Memulai dengan Open Hands

Dengan OpenHands beroperasi, tahap vital berikutnya adalah menghubungkannya ke LLM, yang berfungsi sebagai mesin kognitif agen. Setelah pengaturan LLM, Anda dapat mulai menetapkan tugas pengembangan. Bagian ini merinci konfigurasi awal dan memberikan contoh interaksi ilustratif.

Konfigurasi LLM Awal

Ini adalah langkah wajib pertama saat meluncurkan UI.

  • Pemula Pertama: Ketika mengakses http://localhost:3000 untuk pertama kali, modal pengaturan akan muncul secara otomatis.
  • Bidang Wajib: Anda diharuskan untuk memilih Penyedia LLM (misalnya, OpenAI, Anthropic, Google, OpenRouter, opsi lokal seperti Ollama), memilih Model LLM tertentu yang ditawarkan oleh penyedia tersebut, dan memasukkan Kunci API yang sesuai.
  • Akses Pengaturan Nanti: Jika modal awal ditutup atau jika Anda perlu memodifikasi konfigurasi kemudian, klik ikon roda gigi (⚙️) yang ada di antarmuka pengguna (sering terletak dekat area input chat atau di sidebar).

(Instruksi terperinci untuk mengonfigurasi penyedia LLM tertentu disediakan di bagian selanjutnya.)

Interaksi Pertama Anda: Tugas "Hello World"

Inisiasi interaksi dengan tugas dasar untuk mengamati proses agen.

Langkah 1: Beri Tahu Agen

Masukkan instruksi berikut ke dalam bidang input chat dan tekan Enter:

Write a bash script hello.sh that prints "hello world!"
Langkah 2: Amati Fase Perencanaan

OpenHands meneruskan permintaan ke LLM yang telah dikonfigurasi, yang kemudian merumuskan rencana strategis. Biasanya, agen akan menguraikan tindakan yang dimaksudkan dalam UI, seperti:

  1. Buat file baru bernama hello.sh.
  2. Masukkan perintah bash echo "hello world!" ke dalam file ini.
  3. Beri izin eksekusi pada skrip menggunakan chmod +x hello.sh.
  4. Eksekusi skrip melalui ./hello.sh untuk memastikan keluaran sesuai harapan.
Langkah 3: Amati Fase Eksekusi

Agen melanjutkan untuk mengeksekusi langkah-langkah yang direncanakan dalam lingkungan eksekusi Docker sandboxed-nya. Log UI akan menampilkan perintah yang sedang dijalankan dan mencerminkan modifikasi sistem berkas saat terjadi.

Langkah 4: Verifikasi Hasil

Setelah selesai dengan sukses, agen harus melaporkan hasil eksekusi, termasuk keluaran yang diharapkan: "hello world!".

Langkah 5: Penyempurnaan Iteratif

Sekarang, mari kita modifikasi skrip dengan instruksi lanjut:

Modify hello.sh so that it accepts a name as the first argument, but defaults to "world"
Langkah 6: Amati Proses Modifikasi

Agen akan kembali merumuskan dan mengeksekusi rencana:

  1. Baca konten yang ada dari hello.sh.
  2. Perbarui kode skrip untuk memasukkan penanganan argumen, mungkin menggunakan ekspansi parameter bash seperti echo "hello ${1:-world}!".
  3. Opsional, jalankan pengujian dengan dan tanpa argumen (misalnya, ./hello.sh dan ./hello.sh Developer) untuk memvalidasi perubahan.
Langkah 7: Tugas Konversi Bahasa

Demonstrasikan fleksibilitas agen dengan meminta perubahan bahasa:

Please convert hello.sh to a Ruby script, and run it
Langkah 8: Amati Adaptasi Lingkungan

Jika lingkungan sandbox tidak memiliki interpreter Ruby yang diperlukan, agen mungkin terlebih dahulu merencanakan dan mengeksekusi perintah instalasi (misalnya, apt-get update && apt-get install -y ruby). Selanjutnya, agen akan menerjemahkan logika ke dalam kode Ruby (misalnya, puts "hello #{ARGV[0] || 'world'}!"), menyimpannya ke hello.rb, menjadikannya dapat dieksekusi, dan menjalankan skrip baru tersebut.

Contoh pengantar ini menyoroti alur kerja inti agen: memahami instruksi, merencanakan langkah eksekusi, berinteraksi dengan sistem berkas dan shell dalam sandbox, dan beradaptasi berdasarkan permintaan iteratif.

Membangun dari Awal: Contoh Aplikasi TODO

Agen sering menunjukkan kinerja yang kuat pada proyek "greenfield", di mana mereka dapat membangun struktur tanpa memerlukan konteks yang luas dari basis kode kompleks yang sudah ada.

Langkah 1: Berikan Permintaan Proyek Awal

Jadilah tepat mengenai fitur yang diinginkan dan tumpukan teknologi:

Build a frontend-only TODO app in React. All state should be stored in localStorage. Implement basic functionality to add new tasks and display the current list of tasks.
Langkah 2: Pantau Perencanaan dan Pembangunan

Agen mungkin merencanakan sebagai berikut:

  1. Gunakan create-react-app (jika tersedia/diperintahkan) atau secara manual membuat kerangka dasar file HTML, CSS, dan JavaScript/JSX.
  2. Kembangkan komponen React untuk formulir input tugas dan tampilan daftar tugas.
  3. Implementasikan manajemen status aplikasi menggunakan hooks React seperti useState dan useEffect.
  4. Integrasikan localStorage.setItem() dan localStorage.getItem() untuk persistensi data antara sesi.
  5. Tulis struktur HTML yang diperlukan dan terapkan penataan dasar dengan CSS.
Langkah 3: Minta Peningkatan Fitur

Setelah aplikasi dasar berfungsi, minta fitur tambahan:

Allow adding an optional due date to each task. Display this due date alongside the task description in the list.
Langkah 4: Amati Pengembangan Iteratif

Agen akan memodifikasi komponen React yang ada untuk menyertakan elemen input tanggal, memperbarui struktur status aplikasi untuk mengakomodasi informasi tanggal jatuh tempo, dan menyesuaikan logika rendering untuk menampilkan tanggal dengan tepat di daftar tugas.

Langkah 5: Terapkan Kontrol Versi (Praktik Terbaik)

Simpan kemajuan agen secara teratur menggunakan kontrol versi, seperti yang Anda lakukan dalam pengembangan manual. Anda bahkan dapat menginstruksikan agen untuk menangani komit:

Commit the current changes with the commit message "feat: Add due date functionality to tasks" and push the commit to a new branch named "feature/due-dates" on the origin remote repository.

(Catatan: Eksekusi perintah Git yang berhasil, terutama mendorong ke remote, memerlukan Git diinstal dan mungkin dikonfigurasi dengan kredensial otentikasi dalam lingkungan kerja/sandbox agen.)

Menambahkan Kode Baru ke Proyek yang Ada

OpenHands mampu mengintegrasikan kode dan fitur baru ke dalam basis kode yang sudah ada.

Contoh 1: Menambahkan Alur Kerja GitHub Action
  • Permintaan:
Add a GitHub Action workflow to this repository that lints JavaScript code using ESLint whenever code is pushed to the main branch.
  • Perilaku Agen: Agen mungkin pertama-tama memeriksa struktur proyek (misalnya, ls .github/workflows) untuk melihat apakah alur kerja ada. Itu kemudian akan menentukan linter yang sesuai (atau menggunakan yang ditentukan), membuat file YAML baru (misalnya, .github/workflows/lint.yml), dan mengisinya dengan konfigurasi yang benar untuk GitHub Action yang dipicu pada dorongan ke main, menjalankan ESLint.
Contoh 2: Menambahkan Rute Backend (Konteks adalah Kunci)
  • Permintaan:
Modify the Express.js application file located at './backend/api/routes.js'. Add a new GET endpoint at '/api/tasks' that retrieves and returns all tasks by calling the asynchronous function 'getAllTasks' found in './db/queries.js'.
  • Perilaku Agen: Menyediakan jalur file tertentu (./backend/api/routes.js) dan informasi kontekstual yang relevan (seperti keberadaan dan lokasi getAllTasks di ./db/queries.js) secara dramatis meningkatkan efisiensi dan akurasi agen. Itu akan menargetkan file yang ditentukan dan menyisipkan kode handler rute yang diperlukan, termasuk mengimpor fungsi yang diperlukan.

Refactoring Kode

Manfaatkan OpenHands untuk upaya refactoring kode yang terfokus.

Contoh 1: Mengganti Nama Variabel untuk Kejelasan
  • Permintaan: In the file './utils/calculation.py', rename all single-letter variables within the 'process_data' function to be more descriptive of their purpose.
Contoh 2: Memecah Fungsi Besar
  • Permintaan: Refactor the 'process_and_upload_data' function in 'data_handler.java'. Split its logic into two distinct functions: 'process_data' and 'upload_data', maintaining the original overall functionality.
Contoh 3: Meningkatkan Struktur File
  • Permintaan: Break down the main route definitions in './api/routes.js' into separate files based on resource (e.g., 'userRoutes.js', 'productRoutes.js'). Update the primary server file ('server.js') to import and use these modular route files.

Memperbaiki Bug

Sementara memperbaiki bug bisa rumit, OpenHands dapat membantu, terutama ketika masalah didefinisikan dengan baik.

Contoh 1: Memperbaiki Logika Tertentu
  • Permintaan: The regular expression used for email validation in the '/subscribe' endpoint handler within 'server/handlers.js' incorrectly rejects valid '.co.uk' domain names. Please fix the regex pattern.
Contoh 2: Memodifikasi Perilaku
  • Permintaan: The 'search_items' function implemented in 'search.php' currently performs a case-sensitive search. Modify this function to ensure the search is case-insensitive.
Contoh 3: Menggunakan Pendekatan Berbasis Pengujian
  1. Permintaan untuk Pembuatan Pengujian: The 'calculate_discount' function in 'pricing.js' crashes when the input quantity is zero. Write a new test case using Jest in the 'pricing.test.js' file that specifically reproduces this bug.
  2. Amati Eksekusi Pengujian: Agen menghasilkan kode pengujian, mengeksekusi suite pengujian (misalnya, melalui npm test), dan melaporkan kegagalan yang diharapkan.
  3. Permintaan untuk Memperbaiki Kode: Now, modify the 'calculate_discount' function in 'pricing.js' to correctly handle the zero quantity case, ensuring the previously written test passes.
  4. Amati Perbaikan dan Validasi: Agen menyesuaikan logika fungsi (mungkin menambahkan pemeriksaan kondisional untuk jumlah nol) dan menjalankan kembali suite pengujian, melaporkan hasil yang berhasil.

Strategi Penggunaan Inti: Mulailah dengan permintaan yang sederhana dan spesifik. Berikan konteks yang diperlukan seperti jalur file dan nama fungsi. Pecah tujuan kompleks menjadi langkah-langkah yang lebih kecil dan iteratif. Komit perubahan secara teratur menggunakan kontrol versi.

Cara Mengonfigurasi OpenHands dengan LLM (OpenAI, OpenRouter, Google Gemini, Lokal)

Menjalin koneksi antara OpenHands dan LLM yang mampu adalah hal yang sangat penting. Konfigurasi ini dikelola melalui antarmuka pengguna web OpenHands.

Mengakses Pengaturan Konfigurasi LLM

  • Selama Pengaturan Awal: Modal konfigurasi secara otomatis muncul saat pertama kali memuat UI di http://localhost:3000.
  • Untuk Perubahan Selanjutnya: Klik ikon roda gigi (⚙️) di dalam UI, biasanya terletak di dekat input chat atau dalam panel pengaturan.

Prosedur Konfigurasi LLM Umum

  1. Pilih Penyedia LLM: Pilih layanan yang diinginkan (misalnya, "OpenAI", "Anthropic", "Google", "OpenRouter", "Ollama") dari menu dropdown yang tersedia.
  2. Masukkan Kunci API: Tempelkan dengan hati-hati kunci API yang terkait dengan penyedia yang Anda pilih ke dalam bidang input yang ditentukan. Kunci API harus diperlakukan dengan keamanan yang sama seperti kata sandi.
  3. Tentukan Model LLM: Pilih model spesifik yang Anda maksudkan untuk digunakan dari penyedia yang dipilih (misalnya, gpt-4o, claude-3-5-sonnet-20240620, gemini-1.5-pro-latest). Model yang tersedia mungkin terisi secara dinamis berdasarkan penyedia yang dipilih, atau Anda mungkin perlu memasukkan nama model secara manual.
  4. Jelajahi Opsi Lanjutan (Opsional): Alihkan pengaturan lanjutan untuk mengungkap kemungkinan konfigurasi lebih lanjut:
  • Model Kustom: Jika model yang Anda pilih tidak terdaftar, Anda sering kali dapat memasukkan pengidentifikasi tepatnya di sini (konsultasikan dokumentasi penyedia untuk ID model yang benar).
  • URL Dasar: Pengaturan ini sangat penting saat terhubung ke LLM yang dihosting secara lokal atau menggunakan layanan proxy. Ini mendefinisikan URL endpoint API spesifik yang harus ditargetkan OpenHands untuk permintaan.

5. Simpan Konfigurasi: Terapkan dan simpan pengaturan yang Anda pilih.

Langkah-Langkah Konfigurasi Khusus Penyedia

Ikuti langkah-langkah terperinci ini untuk penyedia LLM populer:

Konfigurasi OpenAI
  1. Kunjungi https://platform.openai.com/.
  2. Masuk atau buat akun baru.
  3. Navigasikan ke bagian Kunci API dan buat kunci rahasia baru. Salin kunci ini segera karena mungkin tidak ditampilkan lagi.
  4. Pastikan informasi penagihan diatur dengan benar di bawah pengaturan Penagihan untuk mengaktifkan penggunaan API.
  5. Di dalam pengaturan UI OpenHands:
  • Set Penyedia menjadi OpenAI.
  • Tempelkan kunci API yang telah Anda buat ke dalam bidang Kunci API.
  • Pilih atau ketik model OpenAI yang diinginkan (misalnya, gpt-4o, gpt-4-turbo).
Konfigurasi Anthropic (Claude)
  1. Kunjungi https://console.anthropic.com/.
  2. Masuk atau daftar untuk akun.
  3. Akses Pengaturan Akun > Kunci API dan buat kunci API baru. Salin kunci yang dihasilkan.
  4. Konfigurasikan penagihan di bawah Rencana & Penagihan. Pertimbangkan untuk mengatur batas penggunaan untuk mengelola biaya secara efektif.
  5. Di pengaturan UI OpenHands:
  • Set Penyedia menjadi Anthropic.
  • Tempelkan kunci API yang telah Anda salin.
  • Pilih atau masukkan model Claude spesifik (misalnya, claude-3-5-sonnet-20240620, claude-3-opus-20240229).
Konfigurasi Google Gemini
  1. Dapatkan kunci API melalui salah satu dari:

2. Jika menggunakan Google Cloud, pastikan API Vertex AI yang diperlukan diaktifkan dan penagihan dikonfigurasi untuk proyek Anda.

3. Di pengaturan UI OpenHands:

  • Set Penyedia menjadi Google.
  • Tempelkan kunci API yang telah Anda peroleh.
  • Pilih atau masukkan model Gemini yang diinginkan (misalnya, gemini-1.5-pro-latest, gemini-1.5-flash-latest).
Konfigurasi OpenRouter
  1. Navigasikan ke https://openrouter.ai/.
  2. Masuk atau buat akun.
  3. Masuk ke bagian Kunci dan buat kunci API baru. Salin.
  4. Tambahkan kredit ke akun Anda melalui bagian Penagihan untuk mengaktifkan penggunaan.
  5. Di pengaturan UI OpenHands:
  • Set Penyedia menjadi OpenRouter.
  • Tempelkan kunci API OpenRouter yang telah Anda buat.
  • Pilih atau ketik pengidentifikasi model yang tepat seperti yang digunakan oleh OpenRouter (misalnya, anthropic/claude-3.5-sonnet, google/gemini-pro-1.5, mistralai/mistral-7b-instruct). Lihat dokumentasi Model OpenRouter untuk daftar pengidentifikasi yang tersedia.
Konfigurasi LLM Lokal (misalnya, melalui Ollama)
  1. Instal Ollama: Ikuti panduan instalasi di https://ollama.com/.
  2. Unduh Model: Gunakan CLI Ollama untuk mengunduh model yang diinginkan, misalnya, ollama pull llama3 (atau model lain seperti codellama, mistral).
  3. Jalankan Server Ollama: Pastikan server latar belakang Ollama berjalan (biasanya dimulai secara otomatis setelah instalasi).
  4. Di pengaturan UI OpenHands:
  • Set Penyedia menjadi Ollama (atau mungkin LiteLLM jika menggunakannya sebagai perantara).
  • Kunci API: Biasanya tidak diperlukan untuk pengaturan Ollama standar; Anda mungkin membiarkannya kosong atau memasukkan NA atau ollama.
  • Aktifkan Opsi Lanjutan.
  • Tentukan URL Dasar: Ini penting. Karena OpenHands berjalan di dalam Docker, localhost mengarah ke kontainer itu sendiri, bukan mesin host Anda tempat Ollama berjalan. Gunakan nama DNS khusus http://host.docker.internal:11434. host.docker.internal menyelesaikan IP mesin host Anda dari dalam kontainer, dan 11434 adalah port default untuk server API Ollama.
  • Tentukan Model: Pilih atau ketik nama persis model Ollama yang Anda unduh (misalnya, llama3, codellama) di bidang Model atau Model Kustom.

Cara Mengonfigurasi Runtime Docker OpenHands

Istilah "runtime" dalam OpenHands menunjuk pada lingkungan kontainer Docker terisolasi di mana agen mengeksekusi perintah dan berinteraksi dengan sistem berkas. Konfigurasi terutama melibatkan penentuan gambar runtime mana yang akan digunakan saat memulai kontainer aplikasi OpenHands utama.

Tujuan Lingkungan Runtime

  • Isolasi dan Keamanan: Kontainer runtime beroperasi terpisah dari kontainer aplikasi OpenHands utama. Pemisahan ini menciptakan sandbox yang aman, mencegah tindakan yang dilakukan oleh agen (seperti instalasi perangkat lunak atau eksekusi kode) berdampak langsung pada aplikasi inti atau sistem host.
  • Lingkungan Eksekusi: Gambar runtime biasanya mencakup alat dasar yang penting (seperti shell dan utilitas command-line umum). Tergantung pada gambar spesifik yang dipilih, itu mungkin juga sudah terinstal dengan alat pengembangan seperti Python, Node.js, atau Git. Selain itu, agen sering memiliki kemampuan untuk menginstal alat tambahan yang diperlukan dalam lingkungan sandbox ini menggunakan pengelola paket (apt, npm, pip, dll.).

Konfigurasi melalui Perintah docker run

Metode utama untuk mengonfigurasi runtime adalah melalui flag -e (variabel lingkungan) dalam perintah docker run yang digunakan untuk meluncurkan aplikasi OpenHands:

-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik

Variabel lingkungan ini memberi tahu aplikasi OpenHands tentang tag gambar Docker spesifik yang harus digunakan setiap kali ia perlu menyediakan kontainer sandbox baru untuk menangani eksekusi tugas agen.

Mengubah atau Memperbarui Runtime

  • Menukar Versi Runtime: Jika versi baru dari gambar runtime tersedia (misalnya, 0.35-newfeature), Anda harus terlebih dahulu menghentikan kontainer OpenHands yang sedang berjalan (misalnya, docker stop openhands-app). Kemudian, mulai ulang menggunakan perintah docker run, memperbarui tag gambar yang ditentukan dalam flag -e SANDBOX_RUNTIME_CONTAINER_IMAGE:
docker run ... -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.35-newfeature ... docker.all-hands.dev/all-hands-ai/openhands:<corresponding_app_version>

(Catatan: Umumnya disarankan untuk memperbarui tag gambar aplikasi openhands utama secara bersamaan untuk memastikan kompatibilitas antara aplikasi dan lingkungan runtime.)

  • Menggunakan Build Pengembangan: Untuk menguji fitur terbaru yang mungkin tidak stabil, Anda dapat memanfaatkan tag main untuk gambar runtime:
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:main
  • Memanfaatkan Versi Semantik: Dokumentasi menyarankan bahwa tag versi mungkin mendukung konvensi versi semantik (misalnya, :0.9 kemungkinan menyelesaikan ke patch rilis terbaru 0.9.x). Ini bisa menawarkan cara untuk menerima pembaruan minor secara otomatis jika repositori gambar mendukungnya.

Intinya, mengelola runtime Docker terutama melibatkan pemilihan dan penentuan tag gambar runtime yang tepat dalam perintah docker run Anda, menyeimbangkan kebutuhan stabilitas dengan kebutuhan untuk fitur atau pembaruan tertentu.

Prompt OpenHands Terbaik

Efektivitas agen OpenHands sangat dipengaruhi oleh kualitas prompt yang diberikan. Merancang prompt yang jelas, spesifik, dan sesuai ruang lingkup sangat penting untuk mencapai hasil yang akurat dan berguna.

Karakteristik Prompt yang Efektif

Prompt yang baik umumnya menunjukkan kualitas berikut:

  • Konkrit: Mereka secara eksplisit menggambarkan fungsionalitas yang diinginkan atau kesalahan tepat yang perlu ditangani. Permintaan yang ambigu atau samar harus dihindari. Misalnya, alih-alih "Perbaiki profil pengguna," gunakan "Tambahkan bidang untuk menampilkan tanggal pembuatan akun pengguna di halaman profil yang terletak di frontend/src/components/UserProfile.tsx."
  • Spesifik Lokasi: Ketika file, direktori, atau bagian kode yang relevan diketahui, menentukan mereka secara langsung sangat membantu agen. Ini mengurangi ambiguitas dan menghemat waktu agen dari pencarian yang mungkin memakan waktu. Alih-alih "Ada bug login," gunakan "Login pengguna gagal ketika nama pengguna mengandung karakter garis bawah. Silakan perbaiki logika validasi di fungsi validateUsername dalam backend/auth/validation.py."
  • Ruang Lingkup yang Sesuai: Setiap prompt sebaiknya fokus pada satu tugas atau fitur yang dapat dikelola. Usahakan untuk perubahan yang cukup terkontrol, mungkin melibatkan modifikasi hingga sekitar 100 baris kode. Pecah tujuan yang lebih besar menjadi serangkaian prompt yang lebih kecil dan lebih terfokus. Alih-alih "Bangun seluruh situs web e-commerce," mulailah dengan "Buat komponen halaman daftar produk dasar di React yang mengambil dan menampilkan data dari endpoint /api/products." Prompt berikutnya kemudian dapat membahas keranjang