Claude dapat berinteraksi dengan lingkungan komputer melalui alat computer use, yang menyediakan kemampuan screenshot dan kontrol mouse/keyboard untuk interaksi desktop otonom. Di WebArena, sebuah benchmark untuk navigasi web otonom di seluruh situs web nyata, Claude mencapai hasil terdepan di antara sistem single-agent, menunjukkan kemampuan kuat untuk menyelesaikan tugas browser multi-langkah dari awal hingga akhir.
Computer use sedang dalam beta dan memerlukan beta header:
"computer-use-2025-11-24" untuk Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5"computer-use-2025-01-24" untuk Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, dan Sonnet 3.7 (deprecated)Hubungi kami melalui formulir umpan balik untuk berbagi umpan balik Anda tentang fitur ini.
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
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.
Untuk dukungan model, lihat Referensi alat.
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. Ambil tindakan pencegahan untuk mengisolasi Claude dari data dan tindakan sensitif untuk menghindari risiko yang terkait dengan prompt injection.
Model telah dilatih untuk menahan prompt injection ini, dan lapisan pertahanan tambahan telah ditambahkan. Jika Anda menggunakan alat computer use, pengklasifikasi akan secara otomatis berjalan pada prompt Anda untuk menandai kemungkinan instance prompt injection. Ketika pengklasifikasi ini mengidentifikasi prompt injection potensial dalam screenshot, mereka akan secara otomatis mengarahkan model untuk meminta konfirmasi pengguna sebelum melanjutkan dengan tindakan berikutnya. Perlindungan tambahan ini tidak akan ideal untuk setiap kasus penggunaan (misalnya, kasus penggunaan tanpa manusia dalam loop), jadi jika Anda ingin menolak dan mematikannya, silakan hubungi dukungan.
Tindakan pencegahan ini tetap penting bahkan dengan lapisan pertahanan pengklasifikasi yang ada.
Informasikan pengguna akhir tentang risiko yang relevan dan dapatkan persetujuan mereka sebelum mengaktifkan computer use di produk Anda sendiri.
Mulai dengan cepat dengan implementasi referensi computer use 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-fitur baru ini.
Berikut cara memulai dengan computer use:
Beta header hanya diperlukan untuk alat computer use.
Contoh di atas menunjukkan ketiga alat digunakan bersama-sama, yang memerlukan beta header karena mencakup alat computer use.
Pengulangan langkah 3 dan 4 tanpa input pengguna disebut 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 window manager (Mutter) dan panel (Tint2) yang berjalan di Linux, yang menyediakan antarmuka grafis yang konsisten untuk Claude berinteraksi.
Aplikasi: Aplikasi Linux pra-instal seperti Firefox, LibreOffice, editor teks, dan file manager 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.
Implementasi referensi tersedia 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 menjalankannya, 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, # Add iteration limit to prevent infinite loops
):
"""
A simple agent loop for Claude computer use interactions.
This function handles the back-and-forth between:
1. Sending user messages to Claude
2. Claude requesting to use tools
3. Your app executing those tools
4. Sending tool results back to Claude
"""
# Set up tools and API parameters
client = Anthropic(api_key=api_key)
beta_flag = (
"computer-use-2025-11-24"
if "20251124" in tool_version
else "computer-use-2025-01-24"
)
text_editor_type = (
"text_editor_20250728"
if "20251124" in tool_version
else f"text_editor_{tool_version}"
)
# Configure tools - you should already have these initialized elsewhere
tools = [
{
"type": f"computer_{tool_version}",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
},
{"type": text_editor_type, "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
]
# Main agent loop (with iteration limit to prevent runaway API costs)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Set up optional thinking parameter (for Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Call the Claude API
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking,
)
# Add Claude's response to the conversation history
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Check if Claude used any tools
tool_results = []
for block in response_content:
if block.type == "tool_use":
# In a real app, you would execute the tool here
# For example: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Format the result for Claude
tool_results.append(
{"type": "tool_result", "tool_use_id": block.id, "content": result}
)
# If no tools were used, Claude is done - return the final messages
if not tool_results:
return messages
# Add tool results to messages for the next iteration with Claude
messages.append({"role": "user", "content": tool_results})Loop berlanjut sampai 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.
Coba implementasi referensi sebelum membaca sisa dokumentasi ini.
Berikut adalah beberapa tips tentang cara mendapatkan output berkualitas terbaik:
After each step, take a screenshot and carefully evaluate if you have achieved the right outcome. Explicitly show your thinking: "I have evaluated step X..." If not correct, try again. Only when you confirm a step was executed correctly should you move on to the next one.<robot_credentials>. Menggunakan computer use dalam aplikasi yang memerlukan login meningkatkan risiko hasil buruk karena prompt injection. Tinjau panduan tentang mitigasi prompt injection 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.
Untuk agen yang mencakup beberapa sesi, jalankan verifikasi end-to-end di awal setiap sesi, bukan hanya setelah implementasi. Pemeriksaan berbasis browser menangkap regresi dari sesi sebelumnya yang tinjauan tingkat kode saja melewatkan. Lihat Effective harnesses for long-running agents untuk detail.
Ketika salah satu alat skema Anthropic diminta melalui Claude API, system prompt khusus computer use dihasilkan. Ini mirip dengan tool use system prompt tetapi dimulai dengan:
You have access to a set of functions you can use to answer the user's question. This includes access to a sandboxed computing environment. You do NOT currently have the ability to inspect files or interact with external resources, except by invoking the below functions.
Seperti dengan tool use reguler, field system_prompt yang disediakan pengguna tetap 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.6, Claude Sonnet 4.6, dan 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 atau computer_20250124) |
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 |
enable_zoom |
Penting: Alat computer use harus secara eksplisit dijalankan oleh aplikasi Anda - Claude tidak dapat menjalankannya secara langsung. Anda bertanggung jawab untuk mengimplementasikan penangkapan screenshot, gerakan mouse, input keyboard, dan tindakan lain berdasarkan permintaan Claude.
Untuk menggabungkan computer use dengan extended thinking, lihat Extended thinking.
Untuk menambahkan alat lain bersama computer use, sertakan mereka dalam array tools yang sama. Mulai cepat di atas menunjukkan pola ini dengan alat bash dan alat editor teks. Anda dapat menambahkan definisi alat kustom Anda sendiri dengan cara yang sama.
Implementasi referensi dimaksudkan 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 dapat 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 dikecilkan menjadi sekitar 1330x864. Claude menganalisis gambar yang lebih kecil ini dan mengembalikan koordinat dalam ruang itu, tetapi alat Anda mengeksekusi klik dalam ruang layar asli.
Ini dapat menyebabkan koordinat klik Claude melewatkan target mereka kecuali Anda menangani transformasi koordinat.
Untuk memperbaikinya, ubah ukuran tangkapan layar sendiri dan skalakan koordinat Claude kembali:
Fungsionalitas penggunaan komputer masih dalam 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.
Penggunaan komputer adalah alat sisi klien. Semua tangkapan layar, tindakan mouse, input keyboard, dan file apa pun yang terlibat dalam sesi ditangkap dan disimpan di lingkungan Anda, bukan oleh Anthropic. Anthropic memproses gambar tangkapan layar dan permintaan tindakan secara real-time sebagai bagian dari panggilan API tetapi tidak menyimpannya setelah respons dikembalikan.
Karena aplikasi Anda mengontrol di mana dan bagaimana data penggunaan komputer disimpan, penggunaan komputer memenuhi syarat ZDR. Untuk kelayakan ZDR di semua fitur, lihat API dan retensi data.
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.
Was this page helpful?
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-11-24" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"tools": [
{
"type": "computer_20251124",
"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": "Save a picture of a cat to my desktop."
}
]
}'Berikan Claude dengan alat computer use dan prompt pengguna
Claude memutuskan untuk menggunakan alat computer use
stop_reason dari tool_use, menandakan niat Claude.Ekstrak input alat, evaluasi alat di komputer, dan kembalikan hasil
user baru yang berisi blok konten tool_result.Claude terus memanggil alat computer use sampai menyelesaikan tugas
stop_reason tool_use lain dan Anda harus kembali ke langkah 3.| Tidak |
Aktifkan tindakan zoom (computer_20251124 saja). Atur ke true untuk memungkinkan Claude zoom ke wilayah layar tertentu. Default: false |
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"])
# ... handle other actionsProses 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)
# Return result to 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(
model="claude-opus-4-6",
max_tokens=4096,
messages=messages,
tools=tools,
betas=["computer-use-2025-11-24"],
)
# Check if Claude used any tools
tool_results = process_tool_calls(response)
if not tool_results:
# No more tool use, task complete
break
# Continue conversation with tool results
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