TabbitBlog

Utiliser Schematron V2 Small avec un navigateur connecté

Capturez du HTML ciblé avec Tabbit CLI, puis envoyez-le avec un schéma typé à Schematron V2 Small pour en extraire les données.

Dans cet article
  1. À retenir
  2. Schematron V2 Small en bref
  3. Séparez la capture et l’extraction
  4. Contrôlez différemment les pages publiques et connectées
  5. Capturer localement avec Tabbit CLI
  6. Quand Small convient et où il s’arrête

Schematron V2 Small extrait du JSON typé à partir de HTML, mais n’ouvre pas de site et ne commande pas de navigateur. Utilisez d’abord un navigateur local autorisé, comme Tabbit Browser, pour capturer uniquement le contenu utile, puis envoyez ce HTML avec un JSON Schema à Inference.net. L’API ne reçoit ni consigne libre ni outil de navigation : le schéma doit décrire l’extraction. La documentation officielle présente ce fonctionnement.

Pour une page connectée, demandez à un agent local capable d’utiliser Tabbit CLI de travailler dans un onglet de tâche distinct et de lire uniquement l’enregistrement demandé. Validez ensuite le résultat et enregistrez-le comme brouillon nommé pour relecture. N’envoyez pas de données de compte ou de page à une API externe sans autorisation et accord de traitement.

À retenir

  • Small extrait des données du HTML ; il ne navigue pas, ne clique pas et ne se connecte pas.

  • L’identifiant API documenté est inference-net/schematron-v2-small.

  • Capturez et limitez le contenu dans le navigateur. Tabbit CLI sert de relais depuis un client local.

  • Placez les règles dans le schéma, pas dans un prompt système.

  • Séparez pages publiques et pages connectées, puis vérifiez les valeurs avec la source.

Schematron V2 Small en bref

BesoinCe que fait SmallCe qu’un autre composant doit faire
Lire une pageExtrait les champs du HTML fourniTabbit Browser ou un collecteur autorisé récupère le HTML
Appliquer des règlesRenvoie les valeurs selon le JSON SchemaLe schéma définit champs, types, descriptions et obligations
Ouvrir une URLImpossible ; l’API reçoit du HTMLL’agent local ouvre une page autorisée
Utiliser une sessionLe modèle n’accède pas à la sessionTabbit ouvre un onglet dans l’environnement autorisé
Vérifier l’exactitudeRespecte la structure demandéeLe code ou une personne compare les valeurs à la source

Inference.net présente Small comme l’option axée sur la qualité pour les schémas complexes et les pages longues. Sa documentation annonce un contexte de 128K tokens et recommande de nettoyer le HTML avec lxml. Les pages très longues doivent être réduites ou découpées. Ce sont les indications du fournisseur, pas un test effectué ici. Consultez la documentation.

Séparez la capture et l’extraction

  1. Capture. Une tâche de navigateur locale ouvre une page publique ou autorisée, attend son rendu et renvoie un fragment HTML limité. N’incluez ni cookies, ni profil, ni champs masqués, ni contenu sans rapport.

  2. Extraction. L’application envoie le HTML comme message utilisateur et le JSON Schema comme response_format. Le client valide ensuite les valeurs structurées renvoyées.

Schematron ne reçoit ni URL, ni session de navigateur, ni consigne de navigation. Une page rendue côté client peut renvoyer une coquille vide par HTTP ; affichez-la d’abord dans le navigateur. L’exemple ci-dessous suit la documentation d’Inference.net et décrit les champs d’une note de version.

import os
from pathlib import Path
from typing import Optional

from openai import OpenAI
from pydantic import BaseModel, Field

class ReleaseNote(BaseModel):
    record_id: str = Field(description="Identifiant stable exact affiché sur la page.")
    title: str = Field(description="Titre visible exact de l’enregistrement.")
    status: Optional[str] = Field(description="Statut visible ; null s’il est absent.")
    date: Optional[str] = Field(description="Date affichée dans la source ; ne pas l’inférer.")

client = OpenAI(
    base_url="https://api.inference.net/v1",
    api_key=os.environ["INFERENCE_API_KEY"],
)

bounded_html = Path("approved-record.html").read_text(encoding="utf-8")
response = client.chat.completions.parse(
    model="inference-net/schematron-v2-small",
    messages=[{"role": "user", "content": bounded_html}],
    response_format=ReleaseNote,
    temperature=0,
)
record = response.choices[0].message.parsed
if record is None:
    raise ValueError("No parsed record returned")
print(record.model_dump_json())

bounded_html est le fragment renvoyé par le navigateur. Le message contient le HTML, sans instruction ; les descriptions du schéma précisent les champs. Consultez le guide de démarrage et la documentation du modèle pour la configuration et les accès actuels. Ne placez pas de vraie clé API dans un prompt, une page ou un fichier Git.

Contrôlez différemment les pages publiques et connectées

SourceRègle de captureAvant l’envoi à l’APIVérification
Page publique de produit ou documentationGardez la zone utile et ses libellésRetirez scripts, styles, navigation et autres enregistrementsComparez chaque valeur à la source visible
Page de travail connectéeLisez seulement le compte et l’enregistrement autorisésExcluez données personnelles, identifiants, champs cachés et contenu sans rapportVérifiez l’ID et les champs clés dans l’onglet source

Commencez par une petite page publique et un schéma explicite. Pour les données privées, la limite de partage compte plus que le confort. Vous devez avoir le droit de lire la page et celui d’en transmettre le contenu au fournisseur. En cas de doute, gardez le traitement local ou demandez à l’administrateur.

Capturer localement avec Tabbit CLI

Installez Tabbit Browser et son CLI local, puis choisissez un client d’agent qui peut lancer des outils locaux. L’appel du Skill dépend du client : /tabbit s’il prend en charge les Skills nommés, /skill:tabbit dans Pi, ou la syntaxe indiquée par le client. La découverte du Skill, l’accès au lanceur CLI et la connexion au site sont trois vérifications distinctes. Consultez la connexion d’un agent à un navigateur existant et la configuration Tabbit CLI pour Codex.

Donnez un nom à la tâche et utilisez son propre onglet. Par exemple, demandez à l’agent local d’ouvrir une page publique de notes de version, de ne lire que le conteneur principal et de renvoyer le HTML avec l’URL. L’appel nodejs du CLI utilise un identifiant de requête unique :

"$HOME/.local/bin/tabbit-cli" nodejs \
  --task "Relecture de l’extraction des notes de version" \
  --request-id release-notes-capture-20261110 <<'JS'
await page.goto('https://example.com/release-notes', {waitUntil: 'domcontentloaded'});
const result = await page.evaluate(() => {
  const record = document.querySelector('[data-record-id="GEO-104"]');
  if (!record) return null;

  const fields = [
    ['Record ID', '[data-field="record-id"]'],
    ['Title', 'h1'],
    ['Status', '[data-field="status"]'],
    ['Date', 'time'],
  ];
  const fragment = document.createElement('section');
  for (const [label, selector] of fields) {
    const element = record.querySelector(selector);
    if (!element || !element.checkVisibility({ visibilityProperty: true })) continue;
    const row = document.createElement('p');
    row.textContent = label + ': ' + element.innerText.trim().slice(0, 500);
    fragment.append(row);
  }
  return fragment.childElementCount ? fragment.outerHTML : null;
});
return {url: page.url(), html: result};
JS

Relisez le fragment et enregistrez le HTML autorisé dans approved-record.html avant d’exécuter l’exemple Python. La capture reconstruit le HTML à partir des champs visibles autorisés.

Le sélecteur est illustratif. Inspectez la page, choisissez un conteneur stable et limitez le HTML renvoyé. Dans cet environnement, n’ajoutez pas --group : le Skill CLI installé indique que le runtime ne l’accepte pas sans valeur. Si le site exige une connexion, utilisez uniquement l’environnement Tabbit autorisé et confirmez le compte. Un test local antérieur a confirmé qu’une seconde tâche pouvait lire une page de test après la création d’une session temporaire. Cela vérifie la réutilisation dans ce test, pas l’accès à un site tiers ni l’intégration d’un agent externe.

Comparez l’ID et les champs importants du résultat à l’onglet source. Enregistrez-le sous le nom Relecture des notes de version — GEO-104. Gardez la source accessible au relecteur pendant que l’agent continue dans son onglet. La liste de contrôle de première tâche aide à limiter cette transmission.

Quand Small convient et où il s’arrête

Small est à considérer lorsque le HTML est déjà disponible et que la sortie doit avoir une structure stable. Il ne remplace pas un agent de navigateur. Le navigateur local gère la navigation autorisée, Schematron extrait du HTML limité, le code valide types et sources, et une personne examine les exceptions.

Inference.net positionne Turbo pour le débit et le coût, et Small pour les schémas complexes et les pages longues. Comparez-les sur vos propres données annotées. Pour une mise en page stable, des sélecteurs ou une API peuvent être plus simples et moins coûteux. Sur du HTML désordonné, l’extraction par schéma peut réduire les parseurs propres au site, mais elle exige une surveillance.

Dans une discussion Reddit, une personne travaillant sur plus de 2 000 fichiers HTML irréguliers explique que les tables imbriquées et les formulations variables rendent XPath fragile. Un autre professionnel du scraping décrit l’usage du LLM en production comme couche de raisonnement légère sur des éléments DOM déjà extraits. Ce sont des expériences individuelles, pas des tests de Schematron V2 Small : discussion sur le HTML irrégulier et discussion sur l’usage en production.

Pour les tâches répétées, consultez le guide Tabbit CLI, la comparaison CLI et Browser MCP, et les profils, espaces de travail et groupes d’onglets. Si le résultat guide une décision, conservez sa valeur, l’URL, l’ID, l’horodatage et l’état de revue. Un JSON conforme au schéma facilite le transfert, mais ne prouve pas que la page a été comprise correctement.

Commencez par un pilote autorisé portant sur un seul enregistrement public. Définissez les champs nécessaires, appelez l’API avec votre compte, puis comparez chaque valeur à la source avant d’élargir le processus.

Pour choisir les tâches confiées à un agent, lisez ce qu’est un navigateur agentique et le guide de l’automatisation du navigateur. Ils présentent la couche d’interaction qui précède l’extraction.

Questions fréquentes

Schematron V2 Small peut-il ouvrir un site Web seul ?

Non. Inference.net présente Schematron comme un modèle d’extraction depuis du HTML. Un navigateur ou un outil autorisé doit d’abord récupérer la page, puis envoyer le HTML et le schéma à l’API.

Schematron V2 Small accepte-t-il des consignes en langage libre ?

La documentation indique que le modèle n’utilise pas de consignes système ou utilisateur. Décrivez les règles dans le JSON Schema, avec les types, champs requis et descriptions.

Puis-je l’utiliser sur une page où je suis connecté ?

Oui, si la tâche de navigateur locale est autorisée à lire la page et si son contenu peut être transmis à Inference.net. Limitez la capture et retirez les données personnelles ou sensibles.

Quel est l’identifiant de Schematron V2 Small ?

La documentation d’Inference.net indique inference-net/schematron-v2-small. Vérifiez la liste de modèles et l’accès de votre compte avant le déploiement.

Quand choisir Small plutôt que Turbo ?

Inference.net positionne Small pour les schémas complexes et les pages longues, et Turbo pour le débit et le coût à grande échelle. Comparez les deux sur un échantillon annoté de vos propres pages.

Peut-on utiliser le JSON sans vérification ?

Non. Validez la réponse selon le schéma et comparez les valeurs importantes à la source. Faites examiner les valeurs absentes ou ambiguës par une personne. Un format valide ne prouve pas l’exactitude.

Passez à la suite

Laissez Tabbit travailler à vos côtés.

Faites des recherches entre les onglets, automatisez les tâches répétitives du navigateur et gardez chaque élément de contexte à portée de main.