Was this page helpful?
Claude puede interactuar con entornos de computadora a través de la herramienta de uso de computadora, que proporciona capacidades de captura de pantalla y control de ratón/teclado para interacción autónoma de escritorio. En WebArena, un punto de referencia para navegación web autónoma en sitios web reales, Claude logra resultados de última generación entre sistemas de agente único, demostrando una fuerte capacidad para completar tareas de navegador de múltiples pasos de principio a fin.
El uso de computadora está en beta y requiere un encabezado beta:
"computer-use-2025-11-24" para Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5"computer-use-2025-01-24" para Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, y Sonnet 3.7 (deprecado)Comuníquese a través del formulario de comentarios para compartir sus comentarios sobre esta función.
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.
El uso de computadora es una función beta que permite a Claude interactuar con entornos de escritorio. Esta herramienta proporciona:
Aunque el uso de computadora puede aumentarse con otras herramientas como bash y editor de texto para flujos de trabajo de automatización más completos, el uso de computadora se refiere específicamente a la capacidad de la herramienta de uso de computadora de ver y controlar entornos de escritorio.
Para compatibilidad de modelos, consulte la referencia de herramientas.
El uso de computadora es una función beta con riesgos únicos distintos de las características estándar de API. Estos riesgos se acentúan cuando se interactúa con Internet.
Para minimizar riesgos, considere tomar precauciones tales como:
En algunas circunstancias, Claude seguirá comandos encontrados en contenido incluso si entra en conflicto con las instrucciones del usuario. Por ejemplo, las instrucciones de Claude en páginas web o contenidas en imágenes pueden anular instrucciones o causar que Claude cometa errores. Tome precauciones para aislar a Claude de datos y acciones sensibles para evitar riesgos relacionados con inyección de indicaciones.
El modelo ha sido entrenado para resistir estas inyecciones de indicaciones, y se ha añadido una capa adicional de defensa. Si utiliza las herramientas de uso de computadora, los clasificadores se ejecutarán automáticamente en sus indicaciones para marcar posibles instancias de inyección de indicaciones. Cuando estos clasificadores identifiquen posibles inyecciones de indicaciones en capturas de pantalla, automáticamente dirigirán el modelo a pedir confirmación del usuario antes de proceder con la siguiente acción. Esta protección adicional no será ideal para todos los casos de uso (por ejemplo, casos de uso sin un humano en el bucle), así que si desea optar por no participar y desactivarla, por favor contacte con soporte.
Estas precauciones siguen siendo importantes incluso con la capa de defensa del clasificador en su lugar.
Informe a los usuarios finales de los riesgos relevantes y obtenga su consentimiento antes de habilitar el uso de computadora en sus propios productos.
Comience rápidamente con la implementación de referencia de uso de computadora que incluye una interfaz web, contenedor Docker, implementaciones de herramientas de ejemplo y un bucle de agente.
Nota: La implementación ha sido actualizada para incluir nuevas herramientas tanto para modelos Claude 4 como para Claude Sonnet 3.7. Asegúrese de extraer la última versión del repositorio para acceder a estas nuevas funciones.
Aquí se explica cómo comenzar con el uso de computadora:
Un encabezado beta solo es requerido para la herramienta de uso de computadora.
El ejemplo anterior muestra las tres herramientas siendo utilizadas juntas, lo que requiere el encabezado beta porque incluye la herramienta de uso de computadora.
La repetición de los pasos 3 y 4 sin entrada del usuario se conoce como el "bucle de agente" (es decir, Claude respondiendo con una solicitud de uso de herramienta y su aplicación respondiendo a Claude con los resultados de evaluar esa solicitud).
El uso de computadora requiere un entorno informático aislado donde Claude pueda interactuar de forma segura con aplicaciones y la web. Este entorno incluye:
Pantalla virtual: Un servidor de pantalla X11 virtual (usando Xvfb) que renderiza la interfaz de escritorio que Claude verá a través de capturas de pantalla y controlará con acciones de ratón/teclado.
Entorno de escritorio: Una interfaz de usuario ligera con gestor de ventanas (Mutter) y panel (Tint2) ejecutándose en Linux, que proporciona una interfaz gráfica consistente para que Claude interactúe.
Aplicaciones: Aplicaciones Linux preinstaladas como Firefox, LibreOffice, editores de texto y gestores de archivos que Claude puede usar para completar tareas.
Implementaciones de herramientas: Código de integración que traduce las solicitudes de herramientas abstractas de Claude (como "mover ratón" o "tomar captura de pantalla") en operaciones reales en el entorno virtual.
Bucle de agente: Un programa que maneja la comunicación entre Claude y el entorno, enviando las acciones de Claude al entorno y devolviendo los resultados (capturas de pantalla, salidas de comandos) a Claude.
Cuando utiliza el uso de computadora, Claude no se conecta directamente a este entorno. En su lugar, su aplicación:
Para seguridad y aislamiento, la implementación de referencia ejecuta todo esto dentro de un contenedor Docker con asignaciones de puerto apropiadas para ver e interactuar con el entorno.
Una implementación de referencia está disponible que incluye todo lo que necesita para comenzar rápidamente con el uso de computadora:
El núcleo del uso de computadora es el "bucle de agente" - un ciclo donde Claude solicita acciones de herramientas, su aplicación las ejecuta y devuelve resultados a Claude. Aquí hay un ejemplo 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, # 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})El bucle continúa hasta que Claude responda sin solicitar ninguna herramienta (finalización de tarea) o se alcance el límite máximo de iteraciones. Esta salvaguarda previene posibles bucles infinitos que podrían resultar en costos de API inesperados.
Pruebe la implementación de referencia antes de leer el resto de esta documentación.
Aquí hay algunos consejos sobre cómo obtener los mejores resultados de calidad:
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 el uso de computadora dentro de aplicaciones que requieren inicio de sesión aumenta el riesgo de malos resultados como resultado de inyección de indicaciones. Revise la guía sobre mitigación de inyecciones de indicaciones antes de proporcionar al modelo credenciales de inicio de sesión.Si encuentra repetidamente un conjunto claro de problemas o sabe de antemano las tareas que Claude necesitará completar, use la indicación del sistema para proporcionar a Claude consejos o instrucciones explícitas sobre cómo hacer las tareas con éxito.
Para agentes que abarcan múltiples sesiones, ejecute verificación de extremo a extremo al inicio de cada sesión, no solo después de la implementación. Las verificaciones basadas en navegador detectan regresiones de sesiones anteriores que la revisión a nivel de código solo no detecta. Consulte Arneses efectivos para agentes de larga duración para obtener detalles.
Cuando se solicita una de las herramientas del esquema de Anthropic a través de la API de Claude, se genera una indicación del sistema específica del uso de computadora. Es similar a la indicación del sistema de uso de herramientas pero comienza 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.
Como con el uso regular de herramientas, el campo system_prompt proporcionado por el usuario sigue siendo respetado y utilizado en la construcción de la indicación del sistema combinada.
La herramienta de uso de computadora admite estas acciones:
Acciones básicas (todas las versiones)
[x, y]Acciones mejoradas (computer_20250124)
Disponible en modelos Claude 4 y Claude Sonnet 3.7:
Acciones mejoradas (computer_20251124)
Disponible en Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6 y Claude Opus 4.5:
computer_20250124enable_zoom: true en la definición de herramienta. Toma un parámetro region con coordenadas [x1, y1, x2, y2] que definen las esquinas superior izquierda e inferior derecha del área a inspeccionar.| Parámetro | Requerido | Descripción |
|---|---|---|
type | Sí | Versión de herramienta (computer_20251124 o computer_20250124) |
name | Sí | Debe ser "computer" |
display_width_px | Sí | Ancho de pantalla en píxeles |
display_height_px | Sí | Alto de pantalla en píxeles |
display_number | No | Número de pantalla para entornos X11 |
enable_zoom |
Importante: La herramienta de uso de computadora debe ser ejecutada explícitamente por su aplicación - Claude no puede ejecutarla directamente. Usted es responsable de implementar la captura de pantalla, movimientos del ratón, entradas de teclado y otras acciones basadas en las solicitudes de Claude.
Para combinar el uso de computadora con pensamiento extendido, consulte Pensamiento extendido.
Para agregar otras herramientas junto con el uso de computadora, inclúyalas en el mismo array tools. El inicio rápido anterior muestra este patrón con la herramienta bash y la herramienta editor de texto. Puede agregar sus propias definiciones de herramientas personalizadas de la misma manera.
La implementación de referencia está diseñada para ayudarte a comenzar con el uso de computadora. Incluye todos los componentes necesarios para que Claude use una computadora. Sin embargo, puedes construir tu propio entorno para el uso de computadora según tus necesidades. Necesitarás:
tool_use usando tus implementaciones de herramientasLa herramienta de uso de computadora se implementa como una herramienta sin esquema. Cuando uses esta herramienta, no necesitas proporcionar un esquema de entrada como con otras herramientas; el esquema está integrado en el modelo de Claude y no se puede modificar.
Al implementar la herramienta de uso de computadora, pueden ocurrir varios errores. Así es cómo manejarlos:
Claude Opus 4.7 soporta hasta 2576 píxeles en el borde largo, y sus coordenadas son 1
con píxeles de imagen (no se requiere conversión de factor de escala). La guía de 1568 píxeles a continuación se aplica a modelos anteriores.La API limita las imágenes a un máximo de 1568 píxeles en el borde más largo y aproximadamente 1.15 megapíxeles en total (ver redimensionamiento de imagen para más detalles). Por ejemplo, una pantalla de 1512x982 se reduce a aproximadamente 1330x864. Claude analiza esta imagen más pequeña y devuelve coordenadas en ese espacio, pero tu herramienta ejecuta clics en el espacio de pantalla original.
Esto puede causar que las coordenadas de clic de Claude pierdan sus objetivos a menos que manejes la transformación de coordenadas.
Para solucionar esto, redimensiona las capturas de pantalla tú mismo y escala las coordenadas de Claude hacia arriba:
La funcionalidad de uso de computadora está en beta. Aunque las capacidades de Claude son de vanguardia, los desarrolladores deben ser conscientes de sus limitaciones:
left_mouse_down, left_mouse_up, y nuevo soporte de teclas modificadoras. La selección de celdas puede ser más confiable usando estos controles de grano fino y combinando teclas modificadoras con clics.Siempre revisa y verifica cuidadosamente las acciones y registros de uso de computadora de Claude. No uses Claude para tareas que requieran precisión perfecta o información de usuario sensible sin supervisión humana.
El uso de computadora es una herramienta del lado del cliente. Todas las capturas de pantalla, acciones del ratón, entradas de teclado y cualquier archivo involucrado en una sesión se capturan y almacenan en tu entorno, no por Anthropic. Anthropic procesa las imágenes de captura de pantalla y solicitudes de acción en tiempo real como parte de la llamada a la API pero no las retiene después de que se devuelve la respuesta.
Debido a que tu aplicación controla dónde y cómo se almacenan los datos de uso de computadora, el uso de computadora es elegible para ZDR. Para elegibilidad de ZDR en todas las características, ver API y retención de datos.
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 |
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.
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)Proporcione a Claude la herramienta de uso de computadora y una indicación del usuario
Claude decide usar la herramienta de uso de computadora
stop_reason de tool_use, señalando la intención de Claude.Extraiga la entrada de la herramienta, evalúe la herramienta en una computadora y devuelva resultados
user que contenga un bloque de contenido tool_result.Claude continúa llamando a herramientas de uso de computadora hasta que haya completado la tarea
stop_reason de tool_use y debe volver al paso 3.| No |
Habilitar acción de zoom (computer_20251124 solo). Establezca en true para permitir que Claude amplíe regiones de pantalla específicas. Predeterminado: false |
Configurar tu entorno informático
Crea una pantalla virtual o conéctate a una pantalla existente con la que Claude interactuará. Esto típicamente implica configurar Xvfb (X Virtual Framebuffer) o tecnología similar.
Implementar manejadores de acciones
Crea funciones para manejar cada tipo de acción que Claude podría 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"])
# ... handle other actionsProcesar las llamadas de herramientas de Claude
Extrae y ejecuta llamadas de herramientas de las respuestas de 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,
}Implementar el bucle del agente
Crea un bucle que continúe hasta que Claude complete la tarea:
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)Aprende más sobre el uso de herramientas y la creación de herramientas personalizadas