Architecture : screenshots, actions, boucle d'interaction
La boucle perception-action
L’architecture de Computer Use repose sur un cycle fondamental : observer → décider → agir → observer. Comprendre cette boucle est essentiel pour construire des automatisations fiables.
Contrairement à un script Selenium qui exécute des commandes séquentielles aveuglement, Computer Use réévalue la situation à chaque étape. Si une popup apparaît, si la page charge lentement, ou si l’interface a changé, l’IA s’adapte.
Les trois composants
1. La capture de screenshots
Le point de départ de chaque itération est une image de l’état actuel de l’écran. Cette capture peut provenir de :
- Un navigateur headless (Chromium, Playwright) — le plus courant pour le web
- Un bureau virtuel (VNC, RDP) — pour les applications desktop
- Un conteneur Docker avec un environnement graphique complet
Le screenshot est envoyé au modèle sous forme d’image encodée en base64. La résolution compte : trop basse et l’IA ne distingue pas les éléments, trop haute et le coût en tokens explose.
import base64
from playwright.sync_api import sync_playwright
def capture_screenshot(page) -> str:
"""Capture un screenshot et retourne le base64."""
screenshot_bytes = page.screenshot()
return base64.b64encode(screenshot_bytes).decode("utf-8")
2. L’analyse et la décision
Le modèle reçoit le screenshot accompagné d’instructions (le system prompt et la tâche demandée). Il analyse l’image et décide de la prochaine action. Cette décision prend en compte :
- Ce qu’il voit : boutons, champs de texte, menus, messages d’erreur
- Ce qu’il doit faire : la tâche définie par l’utilisateur
- L’historique : les actions précédentes et leurs résultats
Le modèle retourne une action structurée, par exemple :
# Réponse typique du modèle
{
"type": "computer_20241022",
"action": "click",
"coordinate": [450, 320]
}
3. L’exécution des actions
Les actions supportées par Computer Use sont :
| Action | Description | Paramètres |
|---|---|---|
| click | Clic gauche à une position | coordinate [x, y] |
| type | Frappe de texte au clavier | text |
| scroll | Défilement vertical/horizontal | coordinate, direction, amount |
| key | Touche spéciale (Enter, Tab, Escape) | key |
| screenshot | Demande un nouveau screenshot | — |
Le flux complet
Voici le cycle complet d’une interaction Computer Use :
import anthropic
client = anthropic.Anthropic()
def computer_use_loop(task: str, page):
"""Boucle principale Computer Use."""
messages = []
while True:
# 1. Capturer le screenshot
screenshot_b64 = capture_screenshot(page)
# 2. Envoyer au modèle avec l'image
messages.append({
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": screenshot_b64,
}
},
{"type": "text", "text": task}
]
})
# 3. Obtenir la décision du modèle
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages,
tools=[{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1280,
"display_height_px": 720,
}]
)
# 4. Exécuter l'action ou terminer
if response.stop_reason == "end_turn":
break
for block in response.content:
if block.type == "tool_use":
execute_action(page, block.input)
# La boucle continue avec un nouveau screenshot
Latence et coûts
Chaque itération de la boucle implique :
- Un envoi d’image (~1500 tokens pour un screenshot 1280x720)
- Un appel API (~0.5-2 secondes de latence)
- L’exécution de l’action (~100-500ms)
Pour une tâche simple (remplir un formulaire de 5 champs), comptez 5 à 10 itérations, soit environ 10 à 30 secondes au total. C’est plus lent qu’un script Selenium, mais beaucoup plus résilient.
Points clés à retenir
- La boucle screenshot → analyse → action est le cœur de Computer Use
- Chaque itération est indépendante : le modèle réévalue la situation à chaque screenshot
- Les actions disponibles sont simples (clic, frappe, scroll, touche) mais combinées, elles couvrent tous les cas
- La latence est de l’ordre de 2 à 5 secondes par action, ce qui est acceptable pour l’automatisation