Un seul envoi.
Du JSON validé, prêt à intégrer.
OneShotAiPanel exécute une tâche en un tour : il se connecte au LLM que vous configurez (opencode, shadcn, fallback ou votre adaptateur), streame et valide le JSON contre des schémas, puis plug les contenus dans votre stack.
Présentation
Comment ça marche
Un composant React qui se connecte au LLM de votre choix et transforme une demande en livrables validés, sans copier-coller manuel.
1. Décrivez la tâche
Un prompt utilisateur, un prompt système et les fichiers de contexte. Le composant assemble le prompt final.
2. Configurez la connexion au modèle
Le composant se connecte au provider que vous configurez via l'adapter (opencode, shadcn, fallback) ou votre propre onSend. Sans cette connexion, rien ne fonctionne.
3. Un envoi unique
Le modèle répond en streaming JSON. Les tickets attendent chacun une structure précise, contrôlée par schéma.
4. Validation automatique
La réponse est validée contre les schémas. En cas d'écart, un feedback ciblé est renvoyé pour un second tour.
5. Diff & review
Si du contenu existe déjà, un diff ligne à ligne vous montre ce qui change avant d'intégrer.
6. Plug
Récupérez les contenus sélectionnés via onPlug et branchez-les dans votre code, votre adapter ou votre SDK.
Wireframe
Explorez le composant
Le vrai composant, en lecture seule. Survolez et cliquez les points numérotés pour comprendre chaque zone.
Chaque fichier doit pointer vers un chemin absolu ou une URL (fichier local, CDN, serveur, drive...) que l'agent pourra consulter.
Les tickets décrivent les tâches concrètes à réaliser par l'agent. Chaque ticket peut avoir une description, une explication, et un schéma de réponse attendu. Un ticket marqué « fait » est exclu du prompt.
Email + mot de passe, gestion des erreurs.
Création de compte avec validation.
Middleware pour les routes privées.
Cliquez sur un point numéroté pour explorer chaque zone. Survolez pour un aperçu.
En-tête
Le bandeau d'en-tête porte le titre de la tâche, un bouton d'aide (points d'intégration et crédits) et le bouton de configuration. Tout est configurable par props (title, showInfoButton, showSettingsButton…).
Configuration
Toutes les options, par props
La configuration se fait au niveau de la couche d'intégration. Voici les options principales.
Contenu
titlestringTitre affiché dans l'en-tête du composant.
systemPromptstringLe rôle et les règles donnés au modèle.
initialUserPromptstringLa demande initiale pré-remplie dans le champ utilisateur.
Contexte
filesAiPanelContextFile[]Fichiers du projet fournis comme contexte au modèle.
ticketsAiPanelTicket[]Découpage de la tâche, chaque ticket avec son schéma JSON.
Contrat
parserAiPanelResponseParserPersonnalise le parsing et la validation de la réponse.
invalidMode'warn' | 'block'Avertir ou bloquer quand la réponse ne valide pas les schémas.
Adapter
adapterAiAdapterConfigProvider (opencode, shadcn, fallback), modèle et clé API.
onSendAiPanelSendHandlerRemplacer l'envoi par votre propre logique (SDK, proxy…).
Événements
onPlugfn(response, keys)Appelé quand l'utilisateur intègre les contenus sélectionnés.
i18n
language'fr' | 'en'Langue de l'interface.
labelsPartial<AiPanelLabels>Surcharge fine de n'importe quel libellé.
UI
actionLabelstringLibellé du bouton principal d'exécution.
showInfoButtonbooleanAffiche le bouton d'aide / intégration / crédits.
showSettingsButtonbooleanAffiche le bouton de configuration.
showInfoIntegrationbooleanAffiche le point d'intégration dans le panneau d'aide.
showInfoCreditsbooleanAffiche les crédits dans le panneau d'aide.
Diff
Voir avant d'intégrer
Quand un ticket possède déjà un contenu, le composant compare et laisse choisir.
Un ticket avec un contenu existant ?
Le composant calcule un diff ligne à ligne entre le contenu existant et la proposition du modèle. Vous gardez, remplacez ou mélangez avant d'intégrer.
Playground
Essayez-le ici
Le composant tourne réellement sur cette page. Réglez les props, choisissez l'affichage, lancez.
Types JSON autorisés dans le format de réponse des tickets :
Le format de réponse décrit la valeur attendue pour chaque ticket. Exemple :{ "type": "object", "properties": { "email": { "type": "string" } }, "required": ["email"] }
Prêt à jouer
La génération est simulée de bout en bout (streaming + validation), sans serveur.
Compteurs
Le site en chiffres
Des compteurs publics, alimentés en temps réel. Un clic, un chiffre.
Comptage best-effort · 1 visite par session.