Claude peut interagir avec des environnements informatiques grâce à l'outil de contrôle informatique, qui offre des capacités de capture d'écran et un contrôle souris/clavier pour l'interaction autonome du bureau.
Le contrôle informatique est actuellement en version bêta et nécessite un en-tête bêta :
"computer-use-2025-11-24" pour 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é)Le contrôle informatique est une fonctionnalité bêta qui permet à Claude d'interagir avec des environnements de bureau. Cet outil offre :
Bien que le contrôle informatique 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 informatique fait spécifiquement référence à la capacité de l'outil de contrôle informatique à voir et contrôler les environnements de bureau.
Le contrôle informatique est disponible pour les modèles Claude suivants :
| Modèle | Version de l'outil | Drapeau bêta |
|---|---|---|
| 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.5 introduit 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 informatique 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 sensibles et des actions pour é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 informatique, 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 la 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'usage (par exemple, les cas d'usage sans humain dans la boucle), donc si vous souhaitez vous désabonner et l'désactiver, veuillez .
Commencez rapidement avec notre implémentation de référence du contrôle informatique 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 informatique :
Un en-tête bêta n'est requis que pour l'outil de contrôle informatique.
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 informatique.
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 informatique nécessite un environnement informatique en bac à sable où Claude peut interagir en toute sécurité avec les applications et le Web. Cet environnement comprend :
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 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 accomplir 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 informatique, 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 dans un conteneur Docker avec des 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 informatique :
Le cœur du contrôle informatique 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 informatique 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. Envoi des 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": "Tool executed successfully"}
# 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 (achèvement de la 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 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 devez passer à la suivante.<robot_credentials>. L'utilisation du contrôle informatique 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 connaissez à 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 informatique 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 informatique 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.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 |
Important : L'outil de contrôle informatique 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 max_tokens global.
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 se trouve 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 informatique 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 :
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 d'utilisation informatique est implémenté en tant qu'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é.
Lors de l'implémentation de l'outil d'utilisation 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 1512x982 est réduit à environ 1330x864. Claude analyse cette image plus petite et renvoie 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 vous-même les captures d'écran et augmentez 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 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.
Nous suggérons toujours de prendre des précautions pour isoler Claude des données sensibles et des actions pour é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 informatique dans vos propres produits.
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-5", # ou un autre modèle compatible
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. Fournir à Claude l'outil de contrôle informatique et une invite utilisateur
2. Claude décide d'utiliser l'outil de contrôle informatique
stop_reason de tool_use, signalant l'intention de Claude.3. 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.4. Claude continue à appeler les outils de contrôle informatique jusqu'à ce qu'il ait terminé la tâche
stop_reason de tool_use et vous devriez revenir à l'étape 3.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 |
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
}
}'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})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