Claude peut interagir avec des environnements informatiques grâce à l'outil de contrôle d'ordinateur, qui offre des capacités de capture d'écran et un contrôle de la souris/clavier pour l'interaction autonome du bureau. Sur WebArena, un benchmark pour la navigation web autonome sur des sites réels, Claude obtient des résultats de pointe parmi les systèmes monoagent, démontrant une forte capacité à compléter les tâches du navigateur multi-étapes de bout en bout.
Le contrôle d'ordinateur est en bêta et nécessite un en-tête bêta :
"computer-use-2025-11-24" pour Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5"computer-use-2025-01-24" pour Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, et Sonnet 3.7 (déprécié)Contactez-nous via le formulaire de retour d'information pour partager vos commentaires sur cette fonctionnalité.
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.
Le contrôle d'ordinateur est une fonctionnalité bêta qui permet à Claude d'interagir avec des environnements de bureau. Cet outil fournit :
Bien que le contrôle d'ordinateur puisse être augmenté avec d'autres outils comme bash et l'éditeur de texte pour des flux de travail d'automatisation plus complets, le contrôle d'ordinateur fait spécifiquement référence à la capacité de l'outil de contrôle d'ordinateur à voir et contrôler les environnements de bureau.
Pour le support des modèles, consultez la Référence des outils.
Le contrôle d'ordinateur est une fonctionnalité bêta avec des risques uniques distincts des fonctionnalités API standard. Ces risques sont amplifiés lors de l'interaction avec Internet.
Pour minimiser les risques, envisagez de prendre des précautions telles que :
Dans certaines circonstances, Claude suivra les commandes trouvées dans le contenu même si cela entre en conflit avec les instructions de l'utilisateur. Par exemple, les instructions Claude sur les pages Web ou contenues dans les images peuvent remplacer les instructions ou amener Claude à faire des erreurs. Prenez des précautions pour isoler Claude des données et actions sensibles afin d'éviter les risques liés à l'injection de prompt.
Le modèle a été entraîné pour résister à ces injections de prompt, et une couche de défense supplémentaire a été ajoutée. Si vous utilisez les outils de contrôle d'ordinateur, des classificateurs s'exécuteront automatiquement sur vos prompts pour signaler les instances potentielles d'injections de prompt. Lorsque ces classificateurs identifient des injections de prompt potentielles dans les captures d'écran, ils orienteront automatiquement le modèle à demander la confirmation de l'utilisateur avant de procéder à l'action suivante. Cette protection supplémentaire ne sera pas idéale pour tous les cas d'usage (par exemple, les cas d'usage sans humain dans la boucle), donc si vous souhaitez refuser et la désactiver, veuillez contacter le support.
Ces précautions restent importantes même avec la couche de défense du classificateur en place.
Informez les utilisateurs finaux des risques pertinents et obtenez leur consentement avant d'activer le contrôle d'ordinateur dans vos propres produits.
Commencez rapidement avec l'implémentation de référence du contrôle d'ordinateur qui inclut une interface Web, un conteneur Docker, des implémentations d'outils d'exemple et une boucle d'agent.
Remarque : L'implémentation a été mise à jour pour inclure de nouveaux outils pour les modèles Claude 4 et Claude Sonnet 3.7. Assurez-vous de récupérer la dernière version du référentiel pour accéder à ces nouvelles fonctionnalités.
Voici comment commencer avec le contrôle d'ordinateur :
Un en-tête bêta n'est requis que pour l'outil de contrôle d'ordinateur.
L'exemple ci-dessus montre les trois outils utilisés ensemble, ce qui nécessite l'en-tête bêta car il inclut l'outil de contrôle d'ordinateur.
La répétition des étapes 3 et 4 sans entrée utilisateur est appelée la « boucle d'agent » (c'est-à-dire Claude répondant avec une demande d'utilisation d'outil et votre application répondant à Claude avec les résultats de l'évaluation de cette demande).
Le contrôle d'ordinateur nécessite un environnement informatique en bac à sable où Claude peut interagir en toute sécurité avec les applications et le Web. Cet environnement inclut :
Affichage virtuel : Un serveur d'affichage X11 virtuel (utilisant Xvfb) qui rend l'interface de bureau que Claude verra via des captures d'écran et contrôlera avec des actions de souris/clavier.
Environnement de bureau : Une interface utilisateur légère avec gestionnaire de fenêtres (Mutter) et panneau (Tint2) s'exécutant sur Linux, qui fournit une interface graphique cohérente pour que Claude interagisse.
Applications : Applications Linux pré-installées comme Firefox, LibreOffice, éditeurs de texte et gestionnaires de fichiers que Claude peut utiliser pour compléter les tâches.
Implémentations d'outils : Code d'intégration qui traduit les demandes d'outils abstraits de Claude (comme « déplacer la souris » ou « prendre une capture d'écran ») en opérations réelles dans l'environnement virtuel.
Boucle d'agent : Un programme qui gère la communication entre Claude et l'environnement, envoyant les actions de Claude à l'environnement et retournant les résultats (captures d'écran, sorties de commande) à Claude.
Lorsque vous utilisez le contrôle d'ordinateur, Claude ne se connecte pas directement à cet environnement. Au lieu de cela, votre application :
Pour la sécurité et l'isolation, l'implémentation de référence exécute tout cela à l'intérieur d'un conteneur Docker avec les mappages de ports appropriés pour visualiser et interagir avec l'environnement.
Une implémentation de référence est disponible qui inclut tout ce dont vous avez besoin pour commencer rapidement avec le contrôle d'ordinateur :
Le cœur du contrôle d'ordinateur est la « boucle d'agent » - un cycle où Claude demande des actions d'outil, votre application les exécute et retourne les résultats à Claude. Voici un exemple simplifié :
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})La boucle continue jusqu'à ce que Claude réponde sans demander d'outils (achèvement de la tâche) ou jusqu'à ce que la limite d'itération maximale soit atteinte. Cette protection empêche les boucles infinies potentielles qui pourraient entraîner des coûts API inattendus.
Essayez l'implémentation de référence avant de lire le reste de cette documentation.
Voici quelques conseils sur comment obtenir les meilleures sorties de qualité :
Après chaque étape, prenez une capture d'écran et évaluez soigneusement si vous avez atteint le résultat souhaité. Montrez explicitement votre réflexion : « J'ai évalué l'étape X... » Si ce n'est pas correct, réessayez. Ce n'est que lorsque vous confirmez qu'une étape a été exécutée correctement que vous devriez passer à la suivante.<robot_credentials>. L'utilisation du contrôle d'ordinateur dans les applications qui nécessitent une connexion augmente le risque de mauvais résultats en raison de l'injection de prompt. Consultez le guide sur l'atténuation des injections de prompt avant de fournir au modèle les identifiants de connexion.Si vous rencontrez à plusieurs reprises un ensemble clair de problèmes ou si vous savez à l'avance les tâches que Claude devra compléter, utilisez l'invite système pour fournir à Claude des conseils ou des instructions explicites sur comment faire les tâches avec succès.
Pour les agents qui s'étendent sur plusieurs sessions, exécutez la vérification de bout en bout au début de chaque session, pas seulement après l'implémentation. Les vérifications basées sur le navigateur détectent les régressions des sessions précédentes que l'examen au niveau du code seul manque. Consultez Harnais efficaces pour les agents de longue durée pour plus de détails.
Lorsqu'un des outils du schéma Anthropic est demandé via l'API Claude, une invite système spécifique au contrôle d'ordinateur est générée. Elle est similaire à l'invite système d'utilisation d'outil mais commence par :
Vous avez accès à un ensemble de fonctions que vous pouvez utiliser pour répondre à la question de l'utilisateur. Cela inclut l'accès à un environnement informatique en bac à sable. Vous n'avez actuellement pas la capacité d'inspecter les fichiers ou d'interagir avec les ressources externes, sauf en invoquant les fonctions ci-dessous.
Comme pour l'utilisation régulière d'outils, le champ system_prompt fourni par l'utilisateur est toujours respecté et utilisé dans la construction de l'invite système combinée.
L'outil de contrôle d'ordinateur prend en charge ces actions :
Actions de base (toutes les versions)
[x, y]Actions améliorées (computer_20250124)
Disponible dans les modèles Claude 4 et Claude Sonnet 3.7 :
Actions améliorées (computer_20251124)
Disponible dans Claude Opus 4.6, Claude Sonnet 4.6 et Claude Opus 4.5 :
computer_20250124enable_zoom: true dans la définition de l'outil. Prend un paramètre region avec les coordonnées [x1, y1, x2, y2] définissant les coins supérieur gauche et inférieur droit de la zone à inspecter.| Paramètre | Requis | Description |
|---|---|---|
type | Oui | Version de l'outil (computer_20251124 ou computer_20250124) |
name | Oui | Doit être « computer » |
display_width_px | Oui | Largeur d'affichage en pixels |
display_height_px | Oui | Hauteur d'affichage en pixels |
display_number | Non | Numéro d'affichage pour les environnements X11 |
enable_zoom |
Important : L'outil de contrôle d'ordinateur doit être explicitement exécuté par votre application - Claude ne peut pas l'exécuter directement. Vous êtes responsable de l'implémentation de la capture d'écran, des mouvements de la souris, des entrées au clavier et d'autres actions en fonction des demandes de Claude.
Pour combiner le contrôle d'ordinateur avec la réflexion étendue, consultez Réflexion étendue.
Pour ajouter d'autres outils aux côtés du contrôle d'ordinateur, incluez-les dans le même tableau tools. Le démarrage rapide ci-dessus montre ce modèle avec l'outil bash et l'outil éditeur de texte. Vous pouvez ajouter vos propres définitions d'outils personnalisés de la même manière.
L'implémentation de référence est conçue pour vous aider à démarrer avec l'utilisation informatique. Elle inclut tous les composants nécessaires pour que Claude utilise un ordinateur. Cependant, vous pouvez créer votre propre environnement pour l'utilisation informatique selon vos besoins. Vous aurez besoin de :
tool_use en utilisant vos implémentations d'outilsL'outil informatique est implémenté comme un outil sans schéma. Lors de l'utilisation de cet outil, vous n'avez pas besoin de fournir un schéma d'entrée comme avec d'autres outils ; le schéma est intégré au modèle de Claude et ne peut pas être modifié.
Lors de l'implémentation de l'outil informatique, diverses erreurs peuvent survenir. Voici comment les gérer :
L'API limite les images à un maximum de 1568 pixels sur le bord le plus long et environ 1,15 mégapixels au total (voir redimensionnement d'image pour plus de détails). Par exemple, un écran de 1512x982 est réduit à environ 1330x864. Claude analyse cette image plus petite et retourne les coordonnées dans cet espace, mais votre outil exécute les clics dans l'espace d'écran d'origine.
Cela peut faire que les coordonnées de clic de Claude manquent leurs cibles à moins que vous ne gériez la transformation de coordonnées.
Pour corriger cela, redimensionnez les captures d'écran vous-même et remettez à l'échelle les coordonnées de Claude :
La fonctionnalité d'utilisation informatique est en version bêta. Bien que les capacités de Claude soient à la pointe de la technologie, les développeurs doivent être conscients de ses limitations :
left_mouse_down, et un nouveau support des touches de modification. La sélection de cellules peut être plus fiable en utilisant ces contrôles granulaires et en combinant les touches de modification avec les clics.Examinez et vérifiez toujours attentivement les actions et les journaux d'utilisation informatique de Claude. N'utilisez pas Claude pour les tâches nécessitant une précision parfaite ou des informations utilisateur sensibles sans surveillance humaine.
L'utilisation informatique est un outil côté client. Toutes les captures d'écran, les actions de souris, les entrées au clavier et tous les fichiers impliqués dans une session sont capturés et stockés dans votre environnement, pas par Anthropic. Anthropic traite les images de capture d'écran et les demandes d'action en temps réel dans le cadre de l'appel API mais ne les conserve pas après le retour de la réponse.
Parce que votre application contrôle où et comment les données d'utilisation informatique sont stockées, l'utilisation informatique est admissible à ZDR. Pour l'admissibilité à ZDR dans toutes les fonctionnalités, voir API et conservation des données.
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."
}
]
}'Fournir à Claude l'outil de contrôle d'ordinateur et une invite utilisateur
Claude décide d'utiliser l'outil de contrôle d'ordinateur
stop_reason de tool_use, signalant l'intention de Claude.Extraire l'entrée de l'outil, évaluer l'outil sur un ordinateur et retourner les résultats
user contenant un bloc de contenu tool_result.Claude continue à appeler les outils de contrôle d'ordinateur jusqu'à ce qu'il ait terminé la tâche
stop_reason de tool_use et vous devriez retourner à l'étape 3.| Non |
Activer l'action de zoom (computer_20251124 uniquement). Définir sur true pour permettre à Claude de zoomer dans des régions d'écran spécifiques. Par défaut : false |
Configurer votre environnement informatique
Créez un affichage virtuel ou connectez-vous à un affichage existant avec lequel Claude interagira. Cela implique généralement de configurer Xvfb (X Virtual Framebuffer) ou une technologie similaire.
Implémenter les gestionnaires d'actions
Créez des fonctions pour gérer chaque type d'action que Claude pourrait demander :
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 actionsTraiter les appels d'outils de Claude
Extrayez et exécutez les appels d'outils des réponses 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,
}Implémenter la boucle d'agent
Créez une boucle qui continue jusqu'à ce que Claude termine la tâche :
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)left_mouse_upEn savoir plus sur l'utilisation des outils et la création d'outils personnalisés