Claude pode interagir com ambientes de computador através da ferramenta de uso de computador, que fornece capacidades de captura de tela e controle de mouse/teclado para interação autônoma de desktop.
O uso de computador está atualmente em beta e requer um cabeçalho beta:
"computer-use-2025-11-24" para Claude Opus 4.5"computer-use-2025-01-24" para Claude Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, e Sonnet 3.7 (descontinuado)O uso de computador é um recurso beta que permite que Claude interaja com ambientes de desktop. Esta ferramenta fornece:
Embora o uso de computador possa ser aumentado com outras ferramentas como bash e editor de texto para fluxos de trabalho de automação mais abrangentes, o uso de computador especificamente se refere à capacidade da ferramenta de uso de computador de ver e controlar ambientes de desktop.
O uso de computador está disponível para os seguintes modelos Claude:
| Modelo | Versão da Ferramenta | Sinalizador Beta |
|---|---|---|
| Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Todos os outros modelos suportados | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.5 introduz a versão de ferramenta computer_20251124 com novas capacidades incluindo a ação de zoom para inspeção detalhada de regiões de tela. Todos os outros modelos (Sonnet 4.5, Haiku 4.5, Sonnet 4, Opus 4, Opus 4.1, e Sonnet 3.7) usam a versão de ferramenta computer_20250124.
Versões de ferramenta mais antigas não são garantidas como compatíveis com versões mais recentes de modelos. Sempre use a versão de ferramenta que corresponde à sua versão de modelo.
O uso de computador é um recurso beta com riscos únicos distintos dos recursos padrão da API. Esses riscos são aumentados ao interagir com a internet. Para minimizar riscos, considere tomar precauções como:
Em algumas circunstâncias, Claude seguirá comandos encontrados em conteúdo mesmo que conflitem com as instruções do usuário. Por exemplo, instruções Claude em páginas da web ou contidas em imagens podem substituir instruções ou fazer com que Claude cometa erros. Sugerimos tomar precauções para isolar Claude de dados sensíveis e ações para evitar riscos relacionados a injeção de prompt.
Treinamos o modelo para resistir a essas injeções de prompt e adicionamos uma camada extra de defesa. Se você usar nossas ferramentas de uso de computador, executaremos automaticamente classificadores em seus prompts para sinalizar possíveis instâncias de injeção de prompt. Quando esses classificadores identificam possíveis injeções de prompt em capturas de tela, eles automaticamente direcionam o modelo a pedir confirmação do usuário antes de prosseguir com a próxima ação. Reconhecemos que essa proteção extra não será ideal para todos os casos de uso (por exemplo, casos de uso sem um humano no loop), então se você gostaria de desativar e desligar, por favor entre em contato conosco.
Ainda sugerimos tomar precauções para isolar Claude de dados sensíveis e ações para evitar riscos relacionados a injeção de prompt.
Comece rapidamente com nossa implementação de referência de uso de computador que inclui uma interface web, contêiner Docker, implementações de ferramentas de exemplo, e um loop de agente.
Nota: A implementação foi atualizada para incluir novas ferramentas para ambos os modelos Claude 4 e Claude Sonnet 3.7. Certifique-se de fazer pull da versão mais recente do repositório para acessar esses novos recursos.
Por favor use este formulário para fornecer feedback sobre a qualidade das respostas do modelo, a API em si, ou a qualidade da documentação - não podemos esperar para ouvir você!
Aqui está como começar com o uso de computador:
Um cabeçalho beta é necessário apenas para a ferramenta de uso de computador.
O exemplo acima mostra todas as três ferramentas sendo usadas juntas, o que requer o cabeçalho beta porque inclui a ferramenta de uso de computador.
Nos referimos à repetição dos passos 3 e 4 sem entrada do usuário como o "loop de agente" - ou seja, Claude respondendo com uma solicitação de uso de ferramenta e sua aplicação respondendo a Claude com os resultados da avaliação dessa solicitação.
O uso de computador requer um ambiente de computação em sandbox onde Claude pode interagir com segurança com aplicativos e a web. Este ambiente inclui:
Exibição virtual: Um servidor de exibição X11 virtual (usando Xvfb) que renderiza a interface de desktop que Claude verá através de capturas de tela e controlará com ações de mouse/teclado.
Ambiente de desktop: Uma interface de usuário leve com gerenciador de janelas (Mutter) e painel (Tint2) em execução no Linux, que fornece uma interface gráfica consistente para Claude interagir.
Aplicativos: Aplicativos Linux pré-instalados como Firefox, LibreOffice, editores de texto e gerenciadores de arquivos que Claude pode usar para completar tarefas.
Implementações de ferramentas: Código de integração que traduz solicitações de ferramentas abstratas de Claude (como "mover mouse" ou "tirar captura de tela") em operações reais no ambiente virtual.
Loop de agente: Um programa que lida com a comunicação entre Claude e o ambiente, enviando as ações de Claude para o ambiente e retornando os resultados (capturas de tela, saídas de comando) de volta para Claude.
Quando você usa o uso de computador, Claude não se conecta diretamente a este ambiente. Em vez disso, sua aplicação:
Para segurança e isolamento, a implementação de referência executa tudo isso dentro de um contêiner Docker com mapeamentos de porta apropriados para visualizar e interagir com o ambiente.
Construímos uma implementação de referência que inclui tudo o que você precisa para começar rapidamente com o uso de computador:
O núcleo do uso de computador é o "loop de agente" - um ciclo onde Claude solicita ações de ferramenta, sua aplicação as executa e retorna resultados para Claude. Aqui está um exemplo simplificado:
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, # Adicione limite de iteração para evitar loops infinitos
):
"""
Um loop de agente simples para interações de uso de computador Claude.
Esta função lida com a troca entre:
1. Enviar mensagens do usuário para Claude
2. Claude solicitando usar ferramentas
3. Sua aplicação executando essas ferramentas
4. Enviar resultados de ferramentas de volta para Claude
"""
# Configure ferramentas e parâmetros de 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"
# Configure ferramentas - você já deve ter estas inicializadas em outro lugar
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 de agente principal (com limite de iteração para evitar custos de API descontrolados)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Configure parâmetro de pensamento opcional (para Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Chame a API Claude
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking
)
# Adicione a resposta de Claude ao histórico de conversa
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Verifique se Claude usou alguma ferramenta
tool_results = []
for block in response_content:
if block.type == "tool_use":
# Em uma aplicação real, você executaria a ferramenta aqui
# Por exemplo: result = run_tool(block.name, block.input)
result = {"result": "Tool executed successfully"}
# Formate o resultado para Claude
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Se nenhuma ferramenta foi usada, Claude terminou - retorne as mensagens finais
if not tool_results:
return messages
# Adicione resultados de ferramentas às mensagens para a próxima iteração com Claude
messages.append({"role": "user", "content": tool_results})O loop continua até que Claude responda sem solicitar nenhuma ferramenta (conclusão da tarefa) ou o limite máximo de iteração seja atingido. Esta proteção evita possíveis loops infinitos que poderiam resultar em custos de API inesperados.
Recomendamos tentar a implementação de referência antes de ler o resto desta documentação.
Aqui estão algumas dicas sobre como obter as melhores saídas de qualidade:
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>. Usar o uso de computador dentro de aplicativos que exigem login aumenta o risco de resultados ruins como resultado de injeção de prompt. Por favor, revise nosso guia sobre mitigação de injeções de prompt antes de fornecer ao modelo credenciais de login.Se você encontrar repetidamente um conjunto claro de problemas ou souber com antecedência as tarefas que Claude precisará completar, use o prompt do sistema para fornecer a Claude dicas explícitas ou instruções sobre como fazer as tarefas com sucesso.
Quando uma das ferramentas definidas pela Anthropic é solicitada através da API Claude, um prompt do sistema específico de uso de computador é gerado. É semelhante ao prompt do sistema de uso de ferramenta mas começa com:
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.
Como com o uso regular de ferramentas, o campo system_prompt fornecido pelo usuário ainda é respeitado e usado na construção do prompt do sistema combinado.
A ferramenta de uso de computador suporta estas ações:
Ações básicas (todas as versões)
[x, y]Ações aprimoradas (computer_20250124)
Disponível em modelos Claude 4 e Claude Sonnet 3.7:
Ações aprimoradas (computer_20251124)
Disponível em Claude Opus 4.5:
computer_20250124enable_zoom: true na definição da ferramenta. Leva um parâmetro region com coordenadas [x1, y1, x2, y2] definindo os cantos superior esquerdo e inferior direito da área a inspecionar.| Parâmetro | Obrigatório | Descrição |
|---|---|---|
type | Sim | Versão da ferramenta (computer_20251124, computer_20250124, ou computer_20241022) |
name | Sim | Deve ser "computer" |
display_width_px | Sim | Largura da exibição em pixels |
display_height_px | Sim | Altura da exibição em pixels |
display_number | Não | Número de exibição para ambientes X11 |
Importante: A ferramenta de uso de computador deve ser explicitamente executada por sua aplicação - Claude não pode executá-la diretamente. Você é responsável por implementar a captura de tela, movimentos de mouse, entradas de teclado e outras ações com base nas solicitações de Claude.
Claude Sonnet 3.7 introduziu uma nova capacidade de "pensamento" que permite que você veja o processo de raciocínio do modelo conforme ele trabalha através de tarefas complexas. Este recurso ajuda você a entender como Claude está abordando um problema e pode ser particularmente valioso para depuração ou fins educacionais.
Para ativar o pensamento, adicione um parâmetro thinking à sua solicitação de API:
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}O parâmetro budget_tokens especifica quantos tokens Claude pode usar para pensamento. Isto é subtraído do seu orçamento geral de max_tokens.
Quando o pensamento está ativado, Claude retornará seu processo de raciocínio como parte da resposta, o que pode ajudá-lo a:
Aqui está um exemplo de como a saída de pensamento pode parecer:
[Thinking]
Preciso salvar uma imagem de um gato na área de trabalho. Deixe-me dividir isso em etapas:
1. Primeiro, vou tirar uma captura de tela para ver o que está na área de trabalho
2. Então vou procurar um navegador web para procurar imagens de gatos
3. Depois de encontrar uma imagem adequada, vou precisar salvá-la na área de trabalho
Deixe-me começar tirando uma captura de tela para ver o que está disponível...A ferramenta de uso de computador pode ser combinada com outras ferramentas para criar fluxos de trabalho de automação mais poderosos. Isto é particularmente útil quando você precisa:
A implementação de referência foi desenvolvida para ajudá-lo a começar com o uso de computador. Ela inclui todos os componentes necessários para que Claude use um computador. No entanto, você pode construir seu próprio ambiente para uso de computador de acordo com suas necessidades. Você precisará de:
tool_use usando suas implementações de ferramentasA ferramenta de uso de computador é implementada como uma ferramenta sem esquema. Ao usar esta ferramenta, você não precisa fornecer um esquema de entrada como com outras ferramentas; o esquema é integrado ao modelo Claude e não pode ser modificado.
Ao implementar a ferramenta de uso de computador, vários erros podem ocorrer. Aqui está como lidar com eles:
A API restringe imagens a um máximo de 1568 pixels na borda mais longa e aproximadamente 1,15 megapixels no total (veja redimensionamento de imagem para detalhes). Por exemplo, uma tela de 1512x982 é reduzida para aproximadamente 1330x864. Claude analisa essa imagem menor e retorna coordenadas nesse espaço, mas sua ferramenta executa cliques no espaço de tela original.
Isso pode fazer com que as coordenadas de clique do Claude percam seus alvos, a menos que você lide com a transformação de coordenadas.
Para corrigir isso, redimensione screenshots você mesmo e dimensione as coordenadas do Claude de volta:
A funcionalidade de uso de computador está em beta. Embora as capacidades do Claude sejam de ponta, os desenvolvedores devem estar cientes de suas limitações:
left_mouse_down, left_mouse_up e novo suporte a teclas modificadoras. A seleção de células pode ser mais confiável usando esses controles granulares e combinando teclas modificadoras com cliques.Sempre revise e verifique cuidadosamente as ações e logs de uso de computador do Claude. Não use Claude para tarefas que exigem precisão perfeita ou informações sensíveis do usuário sem supervisão humana.
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.
Finalmente, por favor informe aos usuários finais os riscos relevantes e obtenha seu consentimento antes de ativar o uso de computador em seus próprios produtos.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # ou outro modelo compatível
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": "Save a picture of a cat to my desktop."}],
betas=["computer-use-2025-01-24"]
)
print(response)1. Forneça a Claude a ferramenta de uso de computador e um prompt do usuário
2. Claude decide usar a ferramenta de uso de computador
stop_reason de tool_use, sinalizando a intenção de Claude.3. Extraia a entrada da ferramenta, avalie a ferramenta em um computador e retorne os resultados
user contendo um bloco de conteúdo tool_result.4. Claude continua chamando ferramentas de uso de computador até completar a tarefa
stop_reason de tool_use e você deve retornar ao passo 3.enable_zoom |
| Não |
Ativar ação de zoom (computer_20251124 apenas). Defina como true para permitir que Claude faça zoom em regiões específicas da tela. Padrão: 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": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Find flights from San Francisco to a place with warmer weather."
}
],
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}
}'Configurar seu ambiente de computação
Crie um display virtual ou conecte-se a um display existente com o qual Claude interagirá. Isso normalmente envolve configurar Xvfb (X Virtual Framebuffer) ou tecnologia similar.
Implementar manipuladores de ação
Crie funções para lidar com cada tipo de ação que Claude pode solicitar:
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"])
# ... lidar com outras açõesProcessar chamadas de ferramenta do Claude
Extraia e execute chamadas de ferramenta das respostas do Claude:
for content in response.content:
if content.type == "tool_use":
action = content.input["action"]
result = handle_computer_action(action, content.input)
# Retornar resultado para Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result
}Implementar o loop do agente
Crie um loop que continua até Claude completar a tarefa:
while True:
response = client.beta.messages.create(...)
# Verificar se Claude usou alguma ferramenta
tool_results = process_tool_calls(response)
if not tool_results:
# Sem mais uso de ferramenta, tarefa concluída
break
# Continuar conversa com resultados de ferramenta
messages.append({"role": "user", "content": tool_results})import math
def get_scale_factor(width, height):
"""Calcular fator de escala para atender às restrições da API."""
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)
# Ao capturar screenshot
scale = get_scale_factor(screen_width, screen_height)
scaled_width = int(screen_width * scale)
scaled_height = int(screen_height * scale)
# Redimensionar imagem para dimensões dimensionadas antes de enviar para Claude
screenshot = capture_and_resize(scaled_width, scaled_height)
# Ao lidar com as coordenadas do Claude, dimensione-as de volta
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)Saiba mais sobre uso de ferramentas e criação de ferramentas personalizadas