Principe de fonctionnement
Jev Ultrafast, développé par TypeSafe, expose un espace d’actions indexé à chaque observation du navigateur. Le moteur crée une table d’éléments numérotés : chaque ligne associe un type d’élément (bouton, combobox, textbox, …) à son contenu actuel. Sur cette base, le système propose une opération parmi huit possibles : CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT, DONE et BLOCKED. Le choix de l’opération et du target est renvoyé à un petit LLM qui ne génère du texte que pour TYPE_TEXT. Ainsi, un seul appel réseau suffit à décider à la fois l’action et l’élément cible.
Architecture et flux de décision
Le processus s’articule autour d’un cycle : le navigateur fournit l’état DOM, le serveur Typesafe reçoit l’état, le LLM calcule les probabilités d’opération et de cible, puis le client exécute l’action. Le diagramme simplifié est :
page → element table → operation
│ ├─ click_target
│ ├─ type_text_target
│ └─ select_target (si présent)
└─► browserChaque head d’opération ne contient que les éléments compatibles, ce qui élimine les prédictions inutiles. Les menus déroulants natifs renvoient un indice d’option déjà observé, évitant les scripts spécifiques au site. Le système ne dépend pas de captures d’écran pour la prise de décision ; les captures sont optionnelles et séparées du flux principal.Le code d’initialisation montre l’API simple :
from jev_ultrafast import Agent
agent = Agent(
"https://www.google.com/travel/flights?hl=en",
"Find one-way flights from Zurich to London on September 20, 2026 for one adult in economy.",
"Stop when matching flight options are visible."
)
for state in agent.run():
print(state["elapsed_ms"], state["status"])Le script utilise les variables d’environnement TYPESAFE_API_KEY et TEXT_MODEL_API_KEY. Le modèle texte par défaut est inception/mercury-2.5 via OpenRouter, mais Gemini, GLM ou DeepSeek sont compatibles via l’interface OpenAI.Performances et limites
Dans la démonstration « Flights », le système réalise la recherche de vol Zurich → London en 7,1 secondes, incluant le temps d’attente du réseau et le rendu de la page. Cette mesure repose sur un seul appel réseau par décision, ce qui minimise la latence mais impose une granularité fixe : chaque interaction nécessite un tour complet de prédiction.
Le moteur attend après chaque saisie : 200 ms pour les suggestions d’un combobox, au plus deux frames d’animation (≈ 33 ms) ou 50 ms pour les autres actions. Ces seuils limitent le nombre de prédictions inutiles, mais peuvent ralentir les scénarios où le DOM change plus lentement que les seuils prévus.
Jev Ultrafast ne sélectionne ni ne réserve de vol ; il s’arrête dès que les options de vol sont visibles. Cette restriction reflète l’absence de scripts de paiement ou de logique métier spécifique. Le modèle ne possède pas de connaissance du site au-delà de l’état DOM, ce qui réduit les risques de comportements inattendus mais limite la capacité à gérer des flux complexes nécessitant plusieurs pages ou des captchas.
En résumé, Jev Ultrafast propose une architecture légère, basée sur un espace d’actions indexé et un LLM minimaliste. La performance de 7,1 s pour une tâche de recherche montre l’efficacité du modèle à faible nombre d’appels. Les limites résident dans la granularité du cycle décision‑action et l’absence de prise en charge de scénarios multi‑étapes avancés.