Claude può interagire con ambienti desktop attraverso lo strumento di utilizzo del computer, che fornisce capacità di screenshot e controllo del mouse/tastiera per l'interazione autonoma del desktop. Su WebArena, un benchmark per la navigazione web autonoma su siti web reali, Claude raggiunge risultati all'avanguardia tra i sistemi single-agent, dimostrando una forte capacità di completare attività browser multi-step end to end.
L'utilizzo del computer è in beta e richiede un beta header:
"computer-use-2025-11-24" per Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5"computer-use-2025-01-24" per Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, e Sonnet 3.7 (deprecato)Contattaci tramite il modulo di feedback per condividere il tuo feedback su questa funzione.
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.
L'utilizzo del computer è una funzione beta che consente a Claude di interagire con ambienti desktop. Questo strumento fornisce:
Sebbene l'utilizzo del computer possa essere aumentato con altri strumenti come bash e editor di testo per flussi di lavoro di automazione più completi, l'utilizzo del computer si riferisce specificamente alla capacità dello strumento di utilizzo del computer di vedere e controllare ambienti desktop.
Per il supporto del modello, vedi il Riferimento degli strumenti.
L'utilizzo del computer è una funzione beta con rischi unici distinti dalle funzioni API standard. Questi rischi sono aumentati quando si interagisce con Internet.
Per minimizzare i rischi, considera di prendere precauzioni come:
In alcune circostanze, Claude seguirà i comandi trovati nel contenuto anche se entra in conflitto con le istruzioni dell'utente. Ad esempio, le istruzioni Claude su pagine web o contenute in immagini possono ignorare le istruzioni o causare a Claude di fare errori. Prendi precauzioni per isolare Claude da dati e azioni sensibili per evitare rischi correlati all'iniezione di prompt.
Il modello è stato addestrato per resistere a queste iniezioni di prompt, ed è stato aggiunto un ulteriore livello di difesa. Se utilizzi gli strumenti di utilizzo del computer, i classificatori verranno eseguiti automaticamente sui tuoi prompt per segnalare potenziali istanze di iniezioni di prompt. Quando questi classificatori identificano potenziali iniezioni di prompt negli screenshot, guideranno automaticamente il modello a chiedere la conferma dell'utente prima di procedere con l'azione successiva. Questa protezione aggiuntiva non sarà ideale per ogni caso d'uso (ad esempio, casi d'uso senza un umano nel ciclo), quindi se desideri rinunciare e disattivarla, contatta il supporto.
Queste precauzioni rimangono importanti anche con il livello di difesa del classificatore in atto.
Informa gli utenti finali dei rischi rilevanti e ottieni il loro consenso prima di abilitare l'utilizzo del computer nei tuoi prodotti.
Inizia rapidamente con l'implementazione di riferimento dell'utilizzo del computer che include un'interfaccia web, un container Docker, implementazioni di strumenti di esempio e un ciclo di agente.
Nota: L'implementazione è stata aggiornata per includere nuovi strumenti sia per i modelli Claude 4 che per Claude Sonnet 3.7. Assicurati di estrarre la versione più recente del repository per accedere a queste nuove funzioni.
Ecco come iniziare con l'utilizzo del computer:
Un beta header è richiesto solo per lo strumento di utilizzo del computer.
L'esempio sopra mostra tutti e tre gli strumenti utilizzati insieme, il che richiede il beta header perché include lo strumento di utilizzo del computer.
La ripetizione dei passaggi 3 e 4 senza input dell'utente è denominata "agent loop" (cioè Claude che risponde con una richiesta di utilizzo dello strumento e la tua applicazione che risponde a Claude con i risultati della valutazione di quella richiesta).
L'utilizzo del computer richiede un ambiente di calcolo sandbox in cui Claude può interagire in sicurezza con applicazioni e il web. Questo ambiente include:
Display virtuale: Un server di display X11 virtuale (utilizzando Xvfb) che renderizza l'interfaccia desktop che Claude vedrà attraverso gli screenshot e controllerà con azioni del mouse/tastiera.
Ambiente desktop: Un'interfaccia UI leggera con window manager (Mutter) e panel (Tint2) in esecuzione su Linux, che fornisce un'interfaccia grafica coerente per Claude per interagire.
Applicazioni: Applicazioni Linux pre-installate come Firefox, LibreOffice, editor di testo e gestori di file che Claude può utilizzare per completare attività.
Implementazioni di strumenti: Codice di integrazione che traduce le richieste di strumenti astratti di Claude (come "sposta il mouse" o "prendi uno screenshot") in operazioni effettive nell'ambiente virtuale.
Agent loop: Un programma che gestisce la comunicazione tra Claude e l'ambiente, inviando le azioni di Claude all'ambiente e restituendo i risultati (screenshot, output dei comandi) a Claude.
Quando utilizzi l'utilizzo del computer, Claude non si connette direttamente a questo ambiente. Invece, la tua applicazione:
Per la sicurezza e l'isolamento, l'implementazione di riferimento esegue tutto questo all'interno di un container Docker con mappature di porta appropriate per visualizzare e interagire con l'ambiente.
Un'implementazione di riferimento è disponibile che include tutto ciò di cui hai bisogno per iniziare rapidamente con l'utilizzo del computer:
Il nucleo dell'utilizzo del computer è l'"agent loop" - un ciclo in cui Claude richiede azioni dello strumento, la tua applicazione le esegue e restituisce i risultati a Claude. Ecco un esempio semplificato:
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})Il ciclo continua fino a quando Claude non risponde senza richiedere alcuno strumento (completamento dell'attività) o fino al raggiungimento del limite massimo di iterazioni. Questo salvaguardia previene potenziali cicli infiniti che potrebbero causare costi API imprevisti.
Prova l'implementazione di riferimento prima di leggere il resto di questa documentazione.
Ecco alcuni suggerimenti su come ottenere i migliori output di qualità:
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>. L'utilizzo dell'utilizzo del computer all'interno di applicazioni che richiedono l'accesso aumenta il rischio di cattivi risultati a causa dell'iniezione di prompt. Rivedi la guida sulla mitigazione delle iniezioni di prompt prima di fornire al modello le credenziali di accesso.Se incontri ripetutamente una serie chiara di problemi o conosci in anticipo le attività che Claude dovrà completare, utilizza il system prompt per fornire a Claude suggerimenti o istruzioni esplicite su come completare le attività con successo.
Per agenti che si estendono su più sessioni, esegui la verifica end-to-end all'inizio di ogni sessione, non solo dopo l'implementazione. I controlli basati su browser catturano le regressioni dalle sessioni precedenti che la revisione a livello di codice da sola non rileva. Vedi Effective harnesses for long-running agents per i dettagli.
Quando uno degli strumenti dello schema Anthropic viene richiesto tramite l'API Claude, viene generato un system prompt specifico per l'utilizzo del computer. È simile al tool use system prompt ma inizia con:
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.
Come con il tool use regolare, il campo system_prompt fornito dall'utente è ancora rispettato e utilizzato nella costruzione del system prompt combinato.
Lo strumento di utilizzo del computer supporta queste azioni:
Azioni di base (tutte le versioni)
[x, y]Azioni migliorate (computer_20250124)
Disponibili nei modelli Claude 4 e Claude Sonnet 3.7:
Azioni migliorate (computer_20251124)
Disponibili in Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6 e Claude Opus 4.5:
computer_20250124enable_zoom: true nella definizione dello strumento. Accetta un parametro region con coordinate [x1, y1, x2, y2] che definiscono gli angoli in alto a sinistra e in basso a destra dell'area da ispezionare.| Parametro | Obbligatorio | Descrizione |
|---|---|---|
type | Sì | Versione dello strumento (computer_20251124 o computer_20250124) |
name | Sì | Deve essere "computer" |
display_width_px | Sì | Larghezza del display in pixel |
display_height_px | Sì | Altezza del display in pixel |
display_number | No | Numero di display per ambienti X11 |
enable_zoom |
Importante: Lo strumento di utilizzo del computer deve essere eseguito esplicitamente dalla tua applicazione - Claude non può eseguirlo direttamente. Sei responsabile dell'implementazione della cattura di screenshot, dei movimenti del mouse, degli input da tastiera e di altre azioni in base alle richieste di Claude.
Per combinare l'utilizzo del computer con il pensiero esteso, vedi Extended thinking.
Per aggiungere altri strumenti insieme all'utilizzo del computer, includili nello stesso array tools. L'avvio rapido sopra mostra questo modello con lo strumento bash e lo strumento editor di testo. Puoi aggiungere le tue definizioni di strumenti personalizzati allo stesso modo.
L'implementazione di riferimento è pensata per aiutarti a iniziare con il computer use. Include tutti i componenti necessari affinché Claude utilizzi un computer. Tuttavia, puoi costruire il tuo ambiente per il computer use in base alle tue esigenze. Avrai bisogno di:
tool_use utilizzando le tue implementazioni di toolIl tool di computer use è implementato come uno strumento senza schema. Quando utilizzi questo tool, non è necessario fornire uno schema di input come con altri tool; lo schema è integrato nel modello di Claude e non può essere modificato.
Quando implementi il tool di computer use, possono verificarsi vari errori. Ecco come gestirli:
Claude Opus 4.7 supporta fino a 2576 pixel sul lato lungo e le sue coordinate sono 1
con i pixel dell'immagine (non è richiesta alcuna conversione del fattore di scala). La guida di 1568 pixel di seguito si applica ai modelli precedenti.L'API vincola le immagini a un massimo di 1568 pixel sul lato più lungo e circa 1,15 megapixel totali (vedi ridimensionamento dell'immagine per i dettagli). Ad esempio, uno schermo di 1512x982 viene sottocampionato a circa 1330x864. Claude analizza questa immagine più piccola e restituisce coordinate in quello spazio, ma il tuo tool esegue i clic nello spazio dello schermo originale.
Questo può causare il mancato raggiungimento dei target da parte delle coordinate di clic di Claude a meno che tu non gestisca la trasformazione delle coordinate.
Per risolvere questo problema, ridimensiona gli screenshot tu stesso e ridimensiona le coordinate di Claude:
La funzionalità di computer use è in beta. Sebbene le capacità di Claude siano all'avanguardia, gli sviluppatori dovrebbero essere consapevoli dei suoi limiti:
left_mouse_down, left_mouse_up e nuovo supporto per i tasti modificatori. La selezione delle celle può essere più affidabile utilizzando questi controlli granulari e combinando i tasti modificatori con i clic.Rivedi e verifica sempre attentamente le azioni e i log del computer use di Claude. Non utilizzare Claude per attività che richiedono una precisione perfetta o informazioni utente sensibili senza supervisione umana.
Il computer use è uno strumento lato client. Tutti gli screenshot, le azioni del mouse, gli input della tastiera e tutti i file coinvolti in una sessione vengono acquisiti e archiviati nel tuo ambiente, non da Anthropic. Anthropic elabora le immagini degli screenshot e le richieste di azione in tempo reale come parte della chiamata API ma non le conserva dopo che la risposta è stata restituita.
Poiché la tua applicazione controlla dove e come vengono archiviati i dati del computer use, il computer use è idoneo per ZDR. Per l'idoneità di ZDR in tutte le funzioni, vedi API e conservazione dei dati.
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?
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-7", # or another compatible model
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."}],
betas=["computer-use-2025-11-24"],
)
print(response)Fornisci a Claude lo strumento di utilizzo del computer e un prompt dell'utente
Claude decide di utilizzare lo strumento di utilizzo del computer
stop_reason di tool_use, segnalando l'intenzione di Claude.Estrai l'input dello strumento, valuta lo strumento su un computer e restituisci i risultati
user contenente un blocco di contenuto tool_result.Claude continua a chiamare gli strumenti di utilizzo del computer fino al completamento dell'attività
stop_reason di tool_use e dovresti tornare al passaggio 3.| No |
Abilita l'azione zoom (computer_20251124 solo). Imposta su true per consentire a Claude di ingrandire regioni specifiche dello schermo. Predefinito: false |
Configurare l'ambiente di calcolo
Crea un display virtuale o connettiti a un display esistente con cui Claude interagirà. Questo in genere comporta la configurazione di Xvfb (X Virtual Framebuffer) o tecnologia simile.
Implementare i gestori di azioni
Crea funzioni per gestire ogni tipo di azione che Claude potrebbe richiedere:
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 actionsElaborare le chiamate ai tool di Claude
Estrai ed esegui le chiamate ai tool dalle risposte di 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,
}Implementare l'agent loop
Crea un loop che continua fino a quando Claude completa l'attività:
while True:
response = client.beta.messages.create(
model="claude-opus-4-7",
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)Scopri di più sul tool use e sulla creazione di tool personalizzati