← L'édition
IANouveau4 min de lecture

CORS Chat met un navigateur entre vous et vos endpoints OpenAI compatibles

Publié le **15 août 2026**, CORS Chat est un petit outil web de Simon Willison pour tester directement, depuis le navigateur, un endpoint de chat compatible avec l’API Responses d’OpenAI. Pour une équipe qui sert des modèles en local ou derrière une passerelle, l’intérêt est concret : valider rapidement le flux `/models` puis `/responses`, vérifier les en-têtes CORS (Cross-Origin Resource Sharing, le mécanisme du navigateur qui autorise ou bloque les appels entre sites) et rejouer des conversations sans monter un client maison.

Fil « CORS Chat pour tester des endpoints compatibles OpenAI »

Illustration de l'article — simonwillison.net
Image : simonwillison.net

Simon Willison présente CORS Chat comme une interface web qui « chatte directement » avec n’importe quel endpoint compatible OpenAI Responses à condition que ce endpoint expose des en-têtes CORS acceptés par le navigateur. Dans son billet du 15 août 2026, il explique l’avoir construit le jour même pour tester Qwen 3.8 27B dans LM Studio sur un M5 MacBook Pro et sur un NVIDIA DGX Spark. Il dit aussi l’avoir essayé avec LM Studio lancé avec l’option --cors et avec OpenRouter, et indique que ces deux cibles fonctionnent. (simonwillison.net)

Ce que l’outil change concrètement pour un développeur

Le point utile n’est pas le « chat » en soi, mais le fait d’avoir un client de test minimal pour des serveurs compatibles OpenAI. L’interface demande un Base URL — généralement un chemin finissant par /v1 — puis appelle /models et /responses. Elle permet aussi d’ajouter des en-têtes HTTP personnalisés (par exemple une clé d’API), de choisir un modèle, de créer plusieurs conversations et de fixer des réglages par conversation : reasoning.effort (niveau d’effort de raisonnement demandé au modèle), résumé de raisonnement, verbosité du texte, limite de tokens de sortie (les fragments de texte générés) ou encore température (le niveau de variation aléatoire dans les réponses). (tools.simonwillison.net)

Pourquoi c’est pratique pour le débogage d’outils IA

Pour une équipe qui branche des assistants de code, des agents ou des proxies sur des modèles locaux, CORS Chat sert de sonde manuelle : si ça casse ici, le problème vient souvent du serveur, du schéma de l’API ou de CORS, pas de l’IDE ni de votre orchestration. Willison précise que les conversations sont stockées dans le navigateur et peuvent être exportées en JSON à copier-coller, ce qui facilite le partage d’un cas de test. L’outil gère aussi plusieurs sessions et plusieurs configurations d’endpoints, avec un avertissement utile : les réglages, y compris les valeurs d’en-têtes, sont sauvegardés dans le navigateur et encodés dans le fragment d’URL (la partie après #) ; ce fragment n’est pas envoyé au serveur, mais il ne faut pas partager une URL qui contient des secrets. (simonwillison.net)

Le détail technique qui sort du lot

Le billet mentionne une fonction plus rare : CORS Chat détecte les images SVG (Scalable Vector Graphics, un format d’image texte décrivant des formes) générées par le modèle et les affiche progressivement pendant que les tokens arrivent en flux continu. Autrement dit, ce n’est pas seulement un formulaire qui poste du JSON : l’outil expose aussi visuellement ce qu’un modèle produit en streaming (réponse envoyée morceau par morceau), ce qui est utile pour tester des sorties structurées ou semi-visuelles. La capture décrite sur le site montre justement un rendu SVG de carrés qui se chevauchent, affiché à côté de la conversation. (simonwillison.net)

À retenir pour vos pratiques d’équipe

Si vous exploitez des modèles locaux ou des endpoints « compatibles OpenAI », CORS Chat ressemble à un bon outil de validation de premier niveau avant d’impliquer votre stack complète. Le flux de test ressemble à ceci :

# Exemple mentionné par Simon Willison : lancer LM Studio avec CORS activé
lm-studio --cors

Puis, dans l’interface, on renseigne un endpoint du type :

{
  "base_url": "http://localhost:1234/v1",
  "calls": ["/models", "/responses"]
}

En clair : quand vous évaluez un nouveau modèle local, un serveur maison ou une passerelle vers plusieurs fournisseurs, commencez par vérifier compatibilité Responses, support CORS, streaming et export JSON avec un client simple comme celui-ci. Vous éviterez de déboguer à tort votre agent, votre extension d’éditeur ou votre couche MCP (Model Context Protocol, un protocole pour relier outils et modèles) alors que le vrai problème est plus bas dans la pile. Cette dernière conclusion est une inférence de pratique à partir des fonctions décrites par l’outil. (tools.simonwillison.net)