Claude dapat berinteraksi dengan lingkungan komputer melalui alat computer use, yang menyediakan kemampuan screenshot dan kontrol mouse/keyboard untuk interaksi desktop otonom.
Computer use saat ini dalam beta dan memerlukan beta header:
"computer-use-2025-11-24" untuk Claude Opus 4.5"computer-use-2025-01-24" untuk Claude Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, dan Sonnet 3.7 (deprecated)Computer use adalah fitur beta yang memungkinkan Claude berinteraksi dengan lingkungan desktop. Alat ini menyediakan:
Meskipun computer use dapat ditingkatkan dengan alat lain seperti bash dan editor teks untuk alur kerja otomasi yang lebih komprehensif, computer use secara khusus mengacu pada kemampuan alat computer use untuk melihat dan mengontrol lingkungan desktop.
Computer use tersedia untuk model Claude berikut:
| Model | Versi Alat | Bendera Beta |
|---|---|---|
| Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Semua model yang didukung lainnya | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.5 memperkenalkan versi alat computer_20251124 dengan kemampuan baru termasuk aksi zoom untuk inspeksi wilayah layar yang detail. Semua model lainnya (Sonnet 4.5, Haiku 4.5, Sonnet 4, Opus 4, Opus 4.1, dan Sonnet 3.7) menggunakan versi alat computer_20250124.
Versi alat yang lebih lama tidak dijamin kompatibel mundur dengan model yang lebih baru. Selalu gunakan versi alat yang sesuai dengan versi model Anda.
Computer use adalah fitur beta dengan risiko unik yang berbeda dari fitur API standar. Risiko ini meningkat ketika berinteraksi dengan internet. Untuk meminimalkan risiko, pertimbangkan untuk mengambil tindakan pencegahan seperti:
Dalam beberapa keadaan, Claude akan mengikuti perintah yang ditemukan dalam konten bahkan jika bertentangan dengan instruksi pengguna. Misalnya, instruksi Claude di halaman web atau yang terdapat dalam gambar dapat mengganti instruksi atau menyebabkan Claude membuat kesalahan. Kami menyarankan untuk mengambil tindakan pencegahan untuk mengisolasi Claude dari data dan tindakan sensitif untuk menghindari risiko terkait injeksi prompt.
Kami telah melatih model untuk menahan injeksi prompt ini dan telah menambahkan lapisan pertahanan tambahan. Jika Anda menggunakan alat computer use kami, kami akan secara otomatis menjalankan pengklasifikasi pada prompt Anda untuk menandai kemungkinan contoh injeksi prompt. Ketika pengklasifikasi ini mengidentifikasi kemungkinan injeksi prompt dalam screenshot, mereka akan secara otomatis mengarahkan model untuk meminta konfirmasi pengguna sebelum melanjutkan dengan tindakan berikutnya. Kami menyadari bahwa perlindungan tambahan ini tidak akan ideal untuk setiap kasus penggunaan (misalnya, kasus penggunaan tanpa manusia dalam loop), jadi jika Anda ingin memilih keluar dan mematikannya, silakan hubungi kami.
Kami masih menyarankan untuk mengambil tindakan pencegahan untuk mengisolasi Claude dari data dan tindakan sensitif untuk menghindari risiko terkait injeksi prompt.
Mulai dengan cepat dengan implementasi referensi computer use kami yang mencakup antarmuka web, kontainer Docker, implementasi alat contoh, dan loop agen.
Catatan: Implementasi telah diperbarui untuk menyertakan alat baru untuk model Claude 4 dan Claude Sonnet 3.7. Pastikan untuk menarik versi terbaru repo untuk mengakses fitur baru ini.
Silakan gunakan formulir ini untuk memberikan umpan balik tentang kualitas respons model, API itu sendiri, atau kualitas dokumentasi - kami tidak sabar mendengar dari Anda!
Berikut cara memulai dengan computer use:
Header beta hanya diperlukan untuk alat computer use.
Contoh di atas menunjukkan ketiga alat digunakan bersama-sama, yang memerlukan header beta karena mencakup alat computer use.
Kami menyebut pengulangan langkah 3 dan 4 tanpa input pengguna sebagai "agent loop" - yaitu, Claude merespons dengan permintaan penggunaan alat dan aplikasi Anda merespons Claude dengan hasil evaluasi permintaan tersebut.
Computer use memerlukan lingkungan komputasi bersandal di mana Claude dapat dengan aman berinteraksi dengan aplikasi dan web. Lingkungan ini mencakup:
Tampilan virtual: Server tampilan X11 virtual (menggunakan Xvfb) yang merender antarmuka desktop yang akan Claude lihat melalui screenshot dan kontrol dengan tindakan mouse/keyboard.
Lingkungan desktop: UI ringan dengan manajer jendela (Mutter) dan panel (Tint2) yang berjalan di Linux, yang menyediakan antarmuka grafis yang konsisten untuk Claude berinteraksi.
Aplikasi: Aplikasi Linux yang telah diinstal sebelumnya seperti Firefox, LibreOffice, editor teks, dan manajer file yang dapat Claude gunakan untuk menyelesaikan tugas.
Implementasi alat: Kode integrasi yang menerjemahkan permintaan alat abstrak Claude (seperti "pindahkan mouse" atau "ambil screenshot") menjadi operasi aktual di lingkungan virtual.
Agent loop: Program yang menangani komunikasi antara Claude dan lingkungan, mengirim tindakan Claude ke lingkungan dan mengembalikan hasil (screenshot, output perintah) kembali ke Claude.
Ketika Anda menggunakan computer use, Claude tidak terhubung langsung ke lingkungan ini. Sebaliknya, aplikasi Anda:
Untuk keamanan dan isolasi, implementasi referensi menjalankan semua ini di dalam kontainer Docker dengan pemetaan port yang sesuai untuk melihat dan berinteraksi dengan lingkungan.
Kami telah membangun implementasi referensi yang mencakup semua yang Anda butuhkan untuk memulai dengan cepat dengan computer use:
Inti dari computer use adalah "agent loop" - siklus di mana Claude meminta tindakan alat, aplikasi Anda mengeksekusinya, dan mengembalikan hasil ke Claude. Berikut adalah contoh yang disederhanakan:
async def sampling_loop(
*,
model: str,
messages: list[dict],
api_key: str,
max_tokens: int = 4096,
tool_version: str,
thinking_budget: int | None = None,
max_iterations: int = 10, # Tambahkan batas iterasi untuk mencegah loop tak terbatas
):
"""
Loop agen sederhana untuk interaksi computer use Claude.
Fungsi ini menangani bolak-balik antara:
1. Mengirim pesan pengguna ke Claude
2. Claude meminta untuk menggunakan alat
3. Aplikasi Anda mengeksekusi alat tersebut
4. Mengirim hasil alat kembali ke Claude
"""
# Atur alat dan parameter API
client = Anthropic(api_key=api_key)
beta_flag = "computer-use-2025-01-24" if "20250124" in tool_version else "computer-use-2024-10-22"
# Konfigurasi alat - Anda seharusnya sudah menginisialisasi ini di tempat lain
tools = [
{"type": f"computer_{tool_version}", "name": "computer", "display_width_px": 1024, "display_height_px": 768},
{"type": f"text_editor_{tool_version}", "name": "str_replace_editor"},
{"type": f"bash_{tool_version}", "name": "bash"}
]
# Loop agen utama (dengan batas iterasi untuk mencegah biaya API yang melonjak)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Atur parameter thinking opsional (untuk Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Panggil Claude API
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking
)
# Tambahkan respons Claude ke riwayat percakapan
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Periksa apakah Claude menggunakan alat apa pun
tool_results = []
for block in response_content:
if block.type == "tool_use":
# Dalam aplikasi nyata, Anda akan mengeksekusi alat di sini
# Misalnya: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Format hasil untuk Claude
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Jika tidak ada alat yang digunakan, Claude selesai - kembalikan pesan final
if not tool_results:
return messages
# Tambahkan hasil alat ke pesan untuk iterasi berikutnya dengan Claude
messages.append({"role": "user", "content": tool_results})Loop berlanjut hingga Claude merespons tanpa meminta alat apa pun (penyelesaian tugas) atau batas iterasi maksimal tercapai. Perlindungan ini mencegah loop tak terbatas potensial yang dapat menghasilkan biaya API yang tidak terduga.
Kami merekomendasikan untuk mencoba implementasi referensi terlebih dahulu sebelum membaca sisa dokumentasi ini.
Berikut adalah beberapa tips tentang cara mendapatkan output berkualitas terbaik:
Setelah setiap langkah, ambil screenshot dan evaluasi dengan hati-hati apakah Anda telah mencapai hasil yang benar. Tunjukkan pemikiran Anda secara eksplisit: "Saya telah mengevaluasi langkah X..." Jika tidak benar, coba lagi. Hanya ketika Anda mengonfirmasi langkah telah dieksekusi dengan benar, Anda harus melanjutkan ke langkah berikutnya.<robot_credentials>. Menggunakan computer use dalam aplikasi yang memerlukan login meningkatkan risiko hasil buruk karena injeksi prompt. Silakan tinjau panduan kami tentang mitigasi injeksi prompt sebelum memberikan model kredensial login.Jika Anda berulang kali mengalami serangkaian masalah yang jelas atau mengetahui sebelumnya tugas yang perlu Claude selesaikan, gunakan system prompt untuk memberikan Claude tips atau instruksi eksplisit tentang cara menyelesaikan tugas dengan sukses.
Ketika salah satu alat yang ditentukan Anthropic diminta melalui Claude API, system prompt khusus computer use dihasilkan. Ini mirip dengan tool use system prompt tetapi dimulai dengan:
Anda memiliki akses ke serangkaian fungsi yang dapat Anda gunakan untuk menjawab pertanyaan pengguna. Ini termasuk akses ke lingkungan komputasi bersandal. Anda saat ini TIDAK memiliki kemampuan untuk memeriksa file atau berinteraksi dengan sumber daya eksternal, kecuali dengan memanggil fungsi di bawah ini.
Seperti dengan tool use reguler, bidang system_prompt yang disediakan pengguna masih dihormati dan digunakan dalam konstruksi system prompt gabungan.
Alat computer use mendukung tindakan berikut:
Tindakan dasar (semua versi)
[x, y]Tindakan yang ditingkatkan (computer_20250124)
Tersedia di model Claude 4 dan Claude Sonnet 3.7:
Tindakan yang ditingkatkan (computer_20251124)
Tersedia di Claude Opus 4.5:
computer_20250124enable_zoom: true dalam definisi alat. Mengambil parameter region dengan koordinat [x1, y1, x2, y2] yang menentukan sudut kiri atas dan kanan bawah area untuk diperiksa.| Parameter | Diperlukan | Deskripsi |
|---|---|---|
type | Ya | Versi alat (computer_20251124, computer_20250124, atau computer_20241022) |
name | Ya | Harus "computer" |
display_width_px | Ya | Lebar tampilan dalam piksel |
display_height_px | Ya | Tinggi tampilan dalam piksel |
display_number | Tidak | Nomor tampilan untuk lingkungan X11 |
Penting: Alat computer use harus secara eksplisit dieksekusi oleh aplikasi Anda - Claude tidak dapat mengeksekusinya secara langsung. Anda bertanggung jawab untuk mengimplementasikan penangkapan screenshot, gerakan mouse, input keyboard, dan tindakan lainnya berdasarkan permintaan Claude.
Claude Sonnet 3.7 memperkenalkan kemampuan "thinking" baru yang memungkinkan Anda melihat proses penalaran model saat menyelesaikan tugas kompleks. Fitur ini membantu Anda memahami bagaimana Claude mendekati masalah dan dapat sangat berharga untuk debugging atau tujuan pendidikan.
Untuk mengaktifkan thinking, tambahkan parameter thinking ke permintaan API Anda:
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}Parameter budget_tokens menentukan berapa banyak token yang dapat Claude gunakan untuk thinking. Ini dikurangkan dari anggaran max_tokens keseluruhan Anda.
Ketika thinking diaktifkan, Claude akan mengembalikan proses penalarannya sebagai bagian dari respons, yang dapat membantu Anda:
Berikut adalah contoh dari apa yang mungkin terlihat seperti output thinking:
[Thinking]
Saya perlu menyimpan gambar kucing ke desktop. Mari saya uraikan ini menjadi langkah-langkah:
1. Pertama, saya akan mengambil screenshot untuk melihat apa yang ada di desktop
2. Kemudian saya akan mencari browser web untuk mencari gambar kucing
3. Setelah menemukan gambar yang cocok, saya perlu menyimpannya ke desktop
Mari saya mulai dengan mengambil screenshot untuk melihat apa yang tersedia...Alat computer use dapat dikombinasikan dengan alat lain untuk membuat alur kerja otomasi yang lebih kuat. Ini sangat berguna ketika Anda perlu:
Implementasi referensi dirancang untuk membantu Anda memulai dengan penggunaan komputer. Ini mencakup semua komponen yang diperlukan agar Claude dapat menggunakan komputer. Namun, Anda dapat membangun lingkungan Anda sendiri untuk penggunaan komputer sesuai kebutuhan Anda. Anda akan memerlukan:
tool_use menggunakan implementasi alat AndaAlat penggunaan komputer diimplementasikan sebagai alat tanpa skema. Saat menggunakan alat ini, Anda tidak perlu memberikan skema input seperti alat lainnya; skema dibangun ke dalam model Claude dan tidak dapat dimodifikasi.
Saat mengimplementasikan alat penggunaan komputer, berbagai kesalahan mungkin terjadi. Berikut cara menanganinya:
API membatasi gambar hingga maksimal 1568 piksel pada tepi terpanjang dan sekitar 1,15 megapiksel total (lihat pengubahan ukuran gambar untuk detail). Misalnya, layar 1512x982 dikurangi sampel menjadi sekitar 1330x864. Claude menganalisis gambar yang lebih kecil ini dan mengembalikan koordinat dalam ruang itu, tetapi alat Anda menjalankan klik dalam ruang layar asli.
Ini dapat menyebabkan koordinat klik Claude melewatkan target mereka kecuali Anda menangani transformasi koordinat.
Untuk memperbaiki ini, ubah ukuran tangkapan layar sendiri dan skalakan koordinat Claude kembali:
Fungsionalitas penggunaan komputer masih dalam versi beta. Meskipun kemampuan Claude terdepan, pengembang harus menyadari keterbatasannya:
left_mouse_down, left_mouse_up, dan dukungan tombol pengubah baru. Pemilihan sel dapat lebih andal dengan menggunakan kontrol butir halus ini dan menggabungkan tombol pengubah dengan klik.Selalu tinjau dan verifikasi dengan hati-hati tindakan dan log penggunaan komputer Claude. Jangan gunakan Claude untuk tugas yang memerlukan presisi sempurna atau informasi pengguna sensitif tanpa pengawasan manusia.
Computer use follows the standard tool use pricing. When using the computer use tool:
System prompt overhead: The computer use beta adds 466-499 tokens to the system prompt
Computer use tool token usage:
| Model | Input tokens per tool definition |
|---|---|
| Claude 4.x models | 735 tokens |
| Claude Sonnet 3.7 (deprecated) | 735 tokens |
Additional token consumption:
If you're also using bash or text editor tools alongside computer use, those tools have their own token costs as documented in their respective pages.
Terakhir, harap beri tahu pengguna akhir tentang risiko yang relevan dan dapatkan persetujuan mereka sebelum mengaktifkan computer use di produk Anda sendiri.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # atau model kompatibel lainnya
max_tokens=1024,
tools=[
{
"type": "computer_20250124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1,
},
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool"
},
{
"type": "bash_20250124",
"name": "bash"
}
],
messages=[{"role": "user", "content": "Simpan gambar kucing ke desktop saya."}],
betas=["computer-use-2025-01-24"]
)
print(response)1. Berikan Claude alat computer use dan prompt pengguna
2. Claude memutuskan untuk menggunakan alat computer use
stop_reason dari tool_use, menandakan niat Claude.3. Ekstrak input alat, evaluasi alat di komputer, dan kembalikan hasil
user baru yang berisi blok konten tool_result.4. Claude terus memanggil alat computer use hingga menyelesaikan tugas
stop_reason tool_use lain dan Anda harus kembali ke langkah 3.enable_zoom| Tidak |
Aktifkan aksi zoom (computer_20251124 hanya). Atur ke true untuk memungkinkan Claude zoom ke wilayah layar tertentu. Default: false |
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: computer-use-2025-01-24" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 2000,
"tools": [
{
"type": "computer_20250124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1
},
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool"
},
{
"type": "bash_20250124",
"name": "bash"
},
{
"name": "get_weather",
"description": "Dapatkan cuaca saat ini di lokasi tertentu",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Kota dan negara bagian, misalnya San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Unit suhu, baik 'celsius' atau 'fahrenheit'"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Temukan penerbangan dari San Francisco ke tempat dengan cuaca yang lebih hangat."
}
],
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}
}'Siapkan lingkungan komputasi Anda
Buat tampilan virtual atau sambungkan ke tampilan yang ada yang akan berinteraksi dengan Claude. Ini biasanya melibatkan pengaturan Xvfb (X Virtual Framebuffer) atau teknologi serupa.
Implementasikan penanganan tindakan
Buat fungsi untuk menangani setiap jenis tindakan yang mungkin diminta Claude:
def handle_computer_action(action_type, params):
if action_type == "screenshot":
return capture_screenshot()
elif action_type == "left_click":
x, y = params["coordinate"]
return click_at(x, y)
elif action_type == "type":
return type_text(params["text"])
# ... tangani tindakan lainnyaProses panggilan alat Claude
Ekstrak dan jalankan panggilan alat dari respons Claude:
for content in response.content:
if content.type == "tool_use":
action = content.input["action"]
result = handle_computer_action(action, content.input)
# Kembalikan hasil ke Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Implementasikan loop agen
Buat loop yang berlanjut sampai Claude menyelesaikan tugas:
while True:
response = client.beta.messages.create(...)
# Periksa apakah Claude menggunakan alat apa pun
tool_results = process_tool_calls(response)
if not tool_results:
# Tidak ada lagi penggunaan alat, tugas selesai
break
# Lanjutkan percakapan dengan hasil alat
messages.append({"role": "user", "content": tool_results})import math
def get_scale_factor(width, height):
"""Calculate scale factor to meet API constraints."""
long_edge = max(width, height)
total_pixels = width * height
long_edge_scale = 1568 / long_edge
total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
return min(1.0, long_edge_scale, total_pixels_scale)
# When capturing screenshot
scale = get_scale_factor(screen_width, screen_height)
scaled_width = int(screen_width * scale)
scaled_height = int(screen_height * scale)
# Resize image to scaled dimensions before sending to Claude
screenshot = capture_and_resize(scaled_width, scaled_height)
# When handling Claude's coordinates, scale them back up
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)Pelajari lebih lanjut tentang penggunaan alat dan membuat alat khusus