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 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!
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
- Jalankan Docker Desktop.
- Akses
Pengaturan
(biasanya melalui ikon roda gigi). - Navigasikan ke bagian
lanjutan
. - 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
- Instal Docker Desktop untuk Linux dengan mengikuti dokumentasi resmi Docker.
- Pastikan layanan Docker berjalan setelah instalasi.
(Catatan: Meskipun diuji di Ubuntu 22.04, kompatibilitas dengan distribusi Linux lainnya diharapkan tetapi tidak dijamin.)
Konfigurasi Windows
- 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. - 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 menggunakanwsl --set-default-version 2
. - Instal Docker Desktop untuk Windows: Lanjutkan dengan instalasi Docker Desktop jika belum dilakukan.
- Konfigurasi Integrasi Docker Desktop WSL: Luncurkan Docker Desktop, pergi ke
Pengaturan
. Di bawahUmum
, pastikanGunakan mesin berbasis WSL 2
di aktifkan. Di bawahSumber Daya > Integrasi WSL
, konfirmasiAktifkan integrasi dengan distro WSL default saya
di aktifkan. Terapkan perubahan dan restart Docker jika diminta. - 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), memilihModel LLM
tertentu yang ditawarkan oleh penyedia tersebut, dan memasukkanKunci 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:
- Buat file baru bernama
hello.sh
. - Masukkan perintah bash
echo "hello world!"
ke dalam file ini. - Beri izin eksekusi pada skrip menggunakan
chmod +x hello.sh
. - 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:
- Baca konten yang ada dari
hello.sh
. - Perbarui kode skrip untuk memasukkan penanganan argumen, mungkin menggunakan ekspansi parameter bash seperti
echo "hello ${1:-world}!"
. - 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:
- Gunakan
create-react-app
(jika tersedia/diperintahkan) atau secara manual membuat kerangka dasar file HTML, CSS, dan JavaScript/JSX. - Kembangkan komponen React untuk formulir input tugas dan tampilan daftar tugas.
- Implementasikan manajemen status aplikasi menggunakan hooks React seperti
useState
danuseEffect
. - Integrasikan
localStorage.setItem()
danlocalStorage.getItem()
untuk persistensi data antara sesi. - 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 kemain
, 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 lokasigetAllTasks
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
- 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.
- Amati Eksekusi Pengujian: Agen menghasilkan kode pengujian, mengeksekusi suite pengujian (misalnya, melalui
npm test
), dan melaporkan kegagalan yang diharapkan. - 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.
- 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
- Pilih Penyedia LLM: Pilih layanan yang diinginkan (misalnya, "OpenAI", "Anthropic", "Google", "OpenRouter", "Ollama") dari menu dropdown yang tersedia.
- 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.
- 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. - 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
- Kunjungi https://platform.openai.com/.
- Masuk atau buat akun baru.
- Navigasikan ke bagian
Kunci API
dan buat kunci rahasia baru. Salin kunci ini segera karena mungkin tidak ditampilkan lagi. - Pastikan informasi penagihan diatur dengan benar di bawah pengaturan
Penagihan
untuk mengaktifkan penggunaan API. - 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)
- Kunjungi https://console.anthropic.com/.
- Masuk atau daftar untuk akun.
- Akses
Pengaturan Akun > Kunci API
dan buat kunci API baru. Salin kunci yang dihasilkan. - Konfigurasikan penagihan di bawah
Rencana & Penagihan
. Pertimbangkan untuk mengatur batas penggunaan untuk mengelola biaya secara efektif. - 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
- Dapatkan kunci API melalui salah satu dari:
- Google AI Studio: (https://aistudio.google.com/app/apikey) - Cocok untuk eksperimen individu.
- Google Cloud Vertex AI: (https://cloud.google.com/vertex-ai) - Direkomendasikan untuk aplikasi perusahaan atau terintegrasi cloud.
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
- Navigasikan ke https://openrouter.ai/.
- Masuk atau buat akun.
- Masuk ke bagian
Kunci
dan buat kunci API baru. Salin. - Tambahkan kredit ke akun Anda melalui bagian
Penagihan
untuk mengaktifkan penggunaan. - 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)
- Instal Ollama: Ikuti panduan instalasi di https://ollama.com/.
- Unduh Model: Gunakan CLI Ollama untuk mengunduh model yang diinginkan, misalnya,
ollama pull llama3
(atau model lain seperticodellama
,mistral
). - Jalankan Server Ollama: Pastikan server latar belakang Ollama berjalan (biasanya dimulai secara otomatis setelah instalasi).
- Di pengaturan UI OpenHands:
- Set Penyedia menjadi
Ollama
(atau mungkinLiteLLM
jika menggunakannya sebagai perantara). - Kunci API: Biasanya tidak diperlukan untuk pengaturan Ollama standar; Anda mungkin membiarkannya kosong atau memasukkan
NA
atauollama
. - 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 khusushttp://host.docker.internal:11434
.host.docker.internal
menyelesaikan IP mesin host Anda dari dalam kontainer, dan11434
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 perintahdocker 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 terbaru0.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
dalambackend/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