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.
Le contrôle d'ordinateur est actuellement en bêta et nécessite un en-tête bêta :
"computer-use-2025-11-24" pour Claude Opus 4.6, Claude Opus 4.5"computer-use-2025-01-24" pour Claude Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, Opus 4, et Sonnet 3.7 (déprécié)Veuillez nous contacter via notre formulaire de retours d'expérience pour partager vos commentaires sur cette fonctionnalité.
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.
Le contrôle d'ordinateur est disponible pour les modèles Claude suivants :
| Modèle | Version de l'outil | Drapeau bêta |
|---|---|---|
| Claude Opus 4.6, Claude Opus 4.5 | computer_20251124 | computer-use-2025-11-24 |
| Tous les autres modèles supportés | computer_20250124 | computer-use-2025-01-24 |
Claude Opus 4.6 et Claude Opus 4.5 introduisent la version d'outil computer_20251124 avec de nouvelles capacités incluant l'action de zoom pour l'inspection détaillée des régions d'écran. Tous les autres modèles (Sonnet 4.5, Haiku 4.5, Sonnet 4, Opus 4, Opus 4.1, et Sonnet 3.7) utilisent la version d'outil computer_20250124.
Les versions d'outil plus anciennes ne sont pas garanties d'être rétro-compatibles avec les modèles plus récents. Utilisez toujours la version d'outil qui correspond à votre version de modèle.
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. Nous suggérons de prendre des précautions pour isoler Claude des données et actions sensibles afin d'éviter les risques liés à l'injection de prompt.
Nous avons entraîné le modèle à résister à ces injections de prompt et avons ajouté une couche de défense supplémentaire. Si vous utilisez nos outils de contrôle d'ordinateur, nous exécuterons automatiquement des classificateurs 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 une confirmation de l'utilisateur avant de procéder à l'action suivante. Nous reconnaissons que cette protection supplémentaire ne sera pas idéale pour tous les cas d'utilisation (par exemple, les cas d'utilisation sans humain dans la boucle), donc si vous souhaitez vous désabonner et l'éteindre, veuillez nous contacter.
Nous suggérons toujours de prendre des précautions pour isoler Claude des données et actions sensibles afin d'éviter les risques liés à l'injection de prompt.
Enfin, veuillez informer les utilisateurs finaux des risques pertinents et obtenir leur consentement avant d'activer le contrôle d'ordinateur dans vos propres produits.
Commencez rapidement avec notre 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 dépôt pour accéder à ces nouvelles fonctionnalités.
Veuillez utiliser ce formulaire pour fournir des commentaires sur la qualité des réponses du modèle, l'API elle-même, ou la qualité de la documentation - nous avons hâte de vous entendre !
Voici comment commencer avec le contrôle d'ordinateur :
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-6", # ou un autre modèle compatible
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": "Enregistrer une image d'un chat sur mon bureau."}],
betas=["computer-use-2025-11-24"]
)
print(response)Un en-tête bêta est uniquement requis 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.
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 d'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.Nous nous référons à la répétition des étapes 3 et 4 sans entrée utilisateur comme 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) fonctionnant sur Linux, qui fournit une interface graphique cohérente pour que Claude interagisse.
Applications : Des applications Linux pré-installées comme Firefox, LibreOffice, des éditeurs de texte, et des gestionnaires de fichiers que Claude peut utiliser pour accomplir des 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 port appropriés pour visualiser et interagir avec l'environnement.
Nous avons construit une implémentation de référence 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, # Ajouter une limite d'itération pour prévenir les boucles infinies
):
"""
Une boucle d'agent simple pour les interactions de contrôle d'ordinateur Claude.
Cette fonction gère l'aller-retour entre :
1. Envoyer des messages utilisateur à Claude
2. Claude demandant d'utiliser des outils
3. Votre application exécutant ces outils
4. Envoyer les résultats de l'outil à Claude
"""
# Configurer les outils et les paramètres 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"
# Configurer les outils - vous devriez déjà les avoir initialisés ailleurs
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"}
]
# Boucle d'agent principale (avec limite d'itération pour prévenir les coûts API incontrôlés)
iterations = 0
while True and iterations < max_iterations:
iterations += 1
# Configurer le paramètre de réflexion optionnel (pour Claude Sonnet 3.7)
thinking = None
if thinking_budget:
thinking = {"type": "enabled", "budget_tokens": thinking_budget}
# Appeler l'API Claude
response = client.beta.messages.create(
model=model,
max_tokens=max_tokens,
messages=messages,
tools=tools,
betas=[beta_flag],
thinking=thinking
)
# Ajouter la réponse de Claude à l'historique de conversation
response_content = response.content
messages.append({"role": "assistant", "content": response_content})
# Vérifier si Claude a utilisé des outils
tool_results = []
for block in response_content:
if block.type == "tool_use":
# Dans une application réelle, vous exécuteriez l'outil ici
# Par exemple : result = run_tool(block.name, block.input)
result = {"result": "Outil exécuté avec succès"}
# Formater le résultat pour Claude
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Si aucun outil n'a été utilisé, Claude a terminé - retourner les messages finaux
if not tool_results:
return messages
# Ajouter les résultats de l'outil aux messages pour la prochaine itération avec Claude
messages.append({"role": "user", "content": tool_results})La boucle continue jusqu'à ce que Claude réponde sans demander d'outils (fin de tâche) ou 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.
Nous recommandons d'essayer 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 bon résultat. 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. Veuillez consulter notre 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 accomplir, utilisez l'invite système pour fournir à Claude des conseils explicites ou des instructions sur comment accomplir les tâches avec succès.
Lorsqu'un des outils définis par 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 avec l'utilisation régulière d'outil, 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 supporte 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 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, computer_20250124, ou computer_20241022) |
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 | Non | Activer l'action de zoom (computer_20251124 uniquement). Définir à true pour permettre à Claude de zoomer dans des régions d'écran spécifiques. Par défaut : false |
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 souris, des entrées au clavier, et d'autres actions en fonction des demandes de Claude.
Claude Sonnet 3.7 a introduit une nouvelle capacité de « réflexion » qui vous permet de voir le processus de raisonnement du modèle au fur et à mesure qu'il travaille sur des tâches complexes. Cette fonctionnalité vous aide à comprendre comment Claude aborde un problème et peut être particulièrement précieuse pour le débogage ou à des fins éducatives.
Pour activer la réflexion, ajoutez un paramètre thinking à votre demande API :
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}Le paramètre budget_tokens spécifie combien de jetons Claude peut utiliser pour la réflexion. Ceci est soustrait de votre budget global max_tokens.
Lorsque la réflexion est activée, Claude retournera son processus de raisonnement dans le cadre de la réponse, ce qui peut vous aider à :
Voici un exemple de ce que la sortie de réflexion pourrait ressembler :
[Réflexion]
Je dois enregistrer une image d'un chat sur le bureau. Décomposons cela en étapes :
1. D'abord, je vais prendre une capture d'écran pour voir ce qui est sur le bureau
2. Ensuite, je vais chercher un navigateur Web pour rechercher des images de chat
3. Après avoir trouvé une image appropriée, je devrai l'enregistrer sur le bureau
Commençons par prendre une capture d'écran pour voir ce qui est disponible...L'outil de contrôle d'ordinateur peut être combiné avec d'autres outils pour créer des flux de travail d'automatisation plus puissants. Ceci est particulièrement utile lorsque vous avez besoin de :
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-opus-4-6",
"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": "Obtenir la météo actuelle dans un lieu donné",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "La ville et l'état, par exemple San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "L'unité de température, soit « celsius » soit « fahrenheit »"
}
},
"required": ["location"]
}
}
],
"messages": [
{
"role": "user",
"content": "Trouver des vols de San Francisco vers un endroit avec un temps plus chaud."
}
],
"thinking": {
"type": "enabled",
"budget_tokens": 1024
}
}'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 Claude et ne peut pas être modifié.
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(...)
# 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})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 des coordonnées.
Pour corriger cela, redimensionnez les captures d'écran vous-même et augmentez les coordonnées de Claude :
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)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, left_mouse_up, et le 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.
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.
Démarrez rapidement avec notre implémentation complète basée sur Docker
En savoir plus sur l'utilisation des outils et la création d'outils personnalisés
Was this page helpful?