Retour aux articles
9 MIN READ

Claude Computer Use : Contrôler un Ordinateur avec l'IA

By Learnia Team

Claude Computer Use : Contrôler un Ordinateur avec l'IA

📅 Dernière mise à jour : 10 mars 2026 — Couvre Computer Use API, actions disponibles et bonnes pratiques de sécurité.

🔗 Article pilier : API Claude : Guide Complet


Qu'est-ce que Computer Use ?

Computer Use est une fonctionnalité révolutionnaire qui permet à Claude d'interagir directement avec un ordinateur via des captures d'écran. Contrairement au Tool Use classique (qui appelle des fonctions), Computer Use permet à Claude de :

  • Voir l'écran de l'ordinateur via des captures d'écran
  • Comprendre les interfaces graphiques (boutons, menus, formulaires)
  • Agir sur l'ordinateur (cliquer, taper, faire défiler)
  • Vérifier le résultat de ses actions via de nouvelles captures

La Boucle d'Interaction

1. Votre code → Capture d'écran → Claude
2. Claude analyse l'écran → Décide une action
3. Claude → Action (clic, saisie...) → Votre code
4. Votre code exécute l'action → Nouvelle capture → Retour à l'étape 1

Cette boucle continue jusqu'à ce que la tâche soit accomplie ou que Claude détermine qu'il ne peut pas continuer.

Quickstart : Premier Exemple

import anthropic

client = anthropic.Anthropic()

# Configuration de l'outil Computer Use
tools = [{
    "type": "computer_20250124",
    "name": "computer",
    "display_width_px": 1920,
    "display_height_px": 1080,
    "display_number": 0  # Écran principal
}]

# Première requête avec une capture d'écran
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    tools=tools,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": take_screenshot()  # Votre fonction de capture
                }
            },
            {
                "type": "text",
                "text": "Ouvre le navigateur Chrome et va sur google.com"
            }
        ]
    }]
)

# Traiter les actions retournées par Claude
for block in response.content:
    if block.type == "tool_use" and block.name == "computer":
        action = block.input
        execute_action(action)  # Exécuter l'action sur l'ordinateur

Actions Disponibles

Claude peut effectuer les actions suivantes sur l'ordinateur :

ActionDescriptionParamètres
clickClic sourisx, y, button (left/right/middle)
double_clickDouble-clicx, y
typeSaisir du textetext
keyAppuyer sur une touchekey (ex: "Enter", "Tab", "ctrl+c")
scrollFaire défilerx, y, direction (up/down), amount
moveDéplacer la sourisx, y
screenshotDemander une nouvelle capture
dragGlisser-déposerstart_x, start_y, end_x, end_y

Exemples d'Actions

# Clic sur un bouton
{"action": "click", "coordinate": [960, 540]}

# Double-clic pour ouvrir un fichier
{"action": "double_click", "coordinate": [200, 300]}

# Saisie de texte
{"action": "type", "text": "Hello World"}

# Raccourci clavier
{"action": "key", "key": "ctrl+s"}

# Défilement vers le bas
{"action": "scroll", "coordinate": [960, 540], "direction": "down", "amount": 3}

# Demande de nouvelle capture d'écran
{"action": "screenshot"}

Implémentation Complète

Boucle d'Agent Computer Use

import anthropic
import base64
import subprocess

client = anthropic.Anthropic()

def take_screenshot():
    """Capture l'écran et retourne le base64."""
    # Linux avec scrot
    subprocess.run(["scrot", "/tmp/screenshot.png"])
    with open("/tmp/screenshot.png", "rb") as f:
        return base64.standard_b64encode(f.read()).decode("utf-8")

def execute_action(action):
    """Exécute une action Computer Use sur l'ordinateur."""
    action_type = action.get("action")
    
    if action_type == "click":
        x, y = action["coordinate"]
        subprocess.run(["xdotool", "mousemove", str(x), str(y), "click", "1"])
    
    elif action_type == "type":
        subprocess.run(["xdotool", "type", "--clearmodifiers", action["text"]])
    
    elif action_type == "key":
        subprocess.run(["xdotool", "key", action["key"]])
    
    elif action_type == "scroll":
        x, y = action["coordinate"]
        direction = action["direction"]
        button = "4" if direction == "up" else "5"
        subprocess.run(["xdotool", "mousemove", str(x), str(y)])
        for _ in range(action.get("amount", 3)):
            subprocess.run(["xdotool", "click", button])
    
    elif action_type == "screenshot":
        pass  # Sera capturé au prochain tour de boucle

def computer_use_loop(task, max_steps=20):
    """Boucle principale Computer Use."""
    messages = [{
        "role": "user",
        "content": [
            {"type": "image", "source": {
                "type": "base64", "media_type": "image/png",
                "data": take_screenshot()
            }},
            {"type": "text", "text": task}
        ]
    }]
    
    tools = [{
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1920,
        "display_height_px": 1080,
        "display_number": 0
    }]
    
    for step in range(max_steps):
        response = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=4096,
            tools=tools,
            messages=messages
        )
        
        if response.stop_reason == "end_turn":
            # Tâche terminée
            for block in response.content:
                if block.type == "text":
                    print(f"✅ Terminé : {block.text}")
            return
        
        # Exécuter les actions
        messages.append({"role": "assistant", "content": response.content})
        
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                execute_action(block.input)
                
                # Nouvelle capture après l'action
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": [{
                        "type": "image",
                        "source": {
                            "type": "base64",
                            "media_type": "image/png",
                            "data": take_screenshot()
                        }
                    }]
                })
        
        messages.append({"role": "user", "content": tool_results})
    
    print("⚠️ Nombre maximum d'étapes atteint")

# Utilisation
computer_use_loop("Ouvre Firefox, va sur wikipedia.org et cherche 'intelligence artificielle'")

Cas d'Usage

1. Tests d'Interface Utilisateur

Automatisez les tests UI sans écrire de sélecteurs fragiles.

computer_use_loop("""
Test du formulaire d'inscription :
1. Remplis le champ "Nom" avec "Jean Dupont"
2. Remplis le champ "Email" avec "jean@test.com"  
3. Remplis le champ "Mot de passe" avec "SecurePass123!"
4. Coche la case "J'accepte les conditions"
5. Clique sur "S'inscrire"
6. Vérifie qu'un message de succès apparaît
""")

2. Saisie de Données dans des Systèmes Legacy

ScénarioApproche traditionnelleAvec Computer Use
ERP sans APIDéveloppement d'un connecteur custom (semaines)Script en quelques heures
Application Windows legacyRPA avec règles fragilesVision adaptative
Formulaires web complexesSelenium avec sélecteurs qui cassentClaude s'adapte aux changements UI

3. Automatisation de Workflows

computer_use_loop("""
Workflow de reporting mensuel :
1. Ouvre l'application de comptabilité
2. Exporte le rapport des ventes du mois dernier en CSV
3. Ouvre Excel et importe le CSV
4. Crée un tableau croisé dynamique par région
5. Sauvegarde le fichier sur le Bureau
""")

Sécurité : Points Critiques

Risques Identifiés

RisqueNiveauMitigation
Actions non intentionnelles⚠️ ÉlevéEnvironnement sandbox, supervision
Injection via contenu écran⚠️ MoyenNe pas naviguer sur des sites non fiables
Accès à des données sensibles⚠️ ÉlevéLimiter les permissions du compte utilisé
Boucle infinie d'actions⚠️ MoyenLimiter max_steps, timeout global

Checklist de Sécurité

  1. Environnement isolé — VM ou conteneur Docker dédié
  2. Compte non privilégié — L'utilisateur ne doit pas être admin
  3. Réseau limité — Restreindre l'accès réseau au strictement nécessaire
  4. Supervision humaine — Toujours avoir un moyen d'interrompre la session
  5. Durée limitée — Définir un timeout maximum pour chaque tâche
  6. Logs complets — Enregistrer toutes les captures d'écran et actions
  7. Pas de credentials — Ne jamais demander à Claude de saisir des mots de passe réels

Docker Quickstart (Recommandé)

FROM ubuntu:22.04

# Environnement graphique minimal
RUN apt-get update && apt-get install -y \
    xvfb x11vnc fluxbox \
    firefox scrot xdotool \
    python3 python3-pip

# Installer le SDK Anthropic
RUN pip3 install anthropic

# Script de démarrage
COPY start.sh /start.sh
RUN chmod +x /start.sh

EXPOSE 5900
CMD ["/start.sh"]
# start.sh
#!/bin/bash
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
fluxbox &
x11vnc -display :99 -forever -nopw &
python3 /app/computer_use_agent.py

Limitations Actuelles

LimitationImpactContournement
Latence (~2-5s par action)Workflows longs sont lentsRegrouper les instructions
Résolution fixeDoit correspondre à l'écran réelConfigurer display_width_px correctement
Pas de drag-and-drop complexeCertaines interactions impossiblesCombiner avec des raccourcis clavier
Erreurs de coordonnéesClics parfois imprécisDemander une capture de vérification
Coût élevéChaque capture = ~2500 tokensLimiter le nombre d'étapes

Comparaison avec les Alternatives

AspectComputer Use (Claude)Selenium/PlaywrightRPA (UiPath, etc.)
SetupMinimal (juste l'API)Drivers, sélecteursInstallation lourde
FragilitéFaible (vision adaptative)Élevée (sélecteurs cassent)Moyenne
VitesseLente (~2-5s/action)RapideRapide
FlexibilitéTrès hauteMoyenne (web seulement)Haute
Coût par exécutionÉlevé (API tokens)Quasi nulLicense logicielle
Applications supportéesToutes (via écran)Web seulementDesktop + Web

GO DEEPER — FREE GUIDE

Module 0 — Prompting Fundamentals

Build your first effective prompts from scratch with hands-on exercises.

Newsletter

Weekly AI Insights

Tools, techniques & news — curated for AI practitioners. Free, no spam.

Free, no spam. Unsubscribe anytime.

FAQ

Qu'est-ce que Claude Computer Use ?+

Computer Use est une fonctionnalité qui permet à Claude d'interagir avec un ordinateur via des captures d'écran. Claude voit l'écran, décide quelles actions effectuer (clic, saisie, scroll) et reçoit de nouvelles captures pour continuer.

Comment fonctionne Computer Use techniquement ?+

C'est une boucle : votre code prend une capture d'écran, l'envoie à Claude, Claude retourne une action (clic à x,y ou saisie de texte), votre code exécute l'action, prend une nouvelle capture, et le cycle recommence.

Computer Use est-il sûr à utiliser ?+

Computer Use doit être utilisé avec précaution. Anthropic recommande de l'exécuter dans un environnement isolé (machine virtuelle, conteneur), de ne jamais l'utiliser avec des comptes admin privilégiés, et de superviser les sessions.

Quels sont les cas d'usage principaux de Computer Use ?+

Tests d'interface utilisateur automatisés, saisie de données dans des systèmes legacy, démonstrations de produits, automatisation de workflows sur des applications sans API, et scraping de données complexes.

Comment faire pour que Claude contrôle mon PC ?+

Claude Computer Use fonctionne via l'API. Vous devez configurer un environnement Docker ou une VM avec les outils anthropiques installés. Claude prend ensuite des captures d'écran, les analyse, et envoie des commandes (clic, clavier, défilement). Un guide de démarrage est disponible dans la documentation officielle d'Anthropic.

Claude est-il facile à utiliser pour contrôler un ordinateur ?+

L'utilisation de Computer Use nécessite des connaissances techniques (API, Docker, Python). Ce n'est pas un simple clic dans l'interface — il faut configurer un environnement dédié. Cependant, avec le SDK Python d'Anthropic, le code de base tient en 20 lignes et de nombreux tutoriels sont disponibles.