Vous dites ce que vous voulez
Une demande en langage naturel décrit le changement souhaité.
Interaction visuelle & agents Demonstrator de cercetare
World Agent est un démonstrateur pour l’interaction en langage naturel avec une scène visuelle. Nous explorons le lien entre la conversation, l’état d’un objet et des actions visibles dans un environnement 3D.

World Agent
Une demande en langage naturel décrit le changement souhaité.
La demande est liée aux actions disponibles dans le démonstrateur.
L’environnement visuel se met à jour, et les étapes peuvent être suivies.
L’exploration d’un objet et de ses options par la conversation.
Le lien entre les commandes de l’utilisateur et une scène navigable.
Évaluation d’un runtime visuel avant les intégrations commerciales.
La scène et le catalogue du démonstrateur sont conceptuels. Nous ne présentons pas une intégration CRM ni un modèle génératif du monde comme étant connecté dans cette version.
World Agent en détail
World Agent répond à une question d’interface : qu’est-ce qui change si, au lieu d’appuyer sur des boutons, vous dites ce que vous voulez et la scène change sous vos yeux ? Vous parlez, et la machine dans la scène change de couleur, les jantes, l’environnement, la météo, l’heure, l’angle de la caméra, les portes et le coffre.
L’élément intéressant n’est pas qu’il comprend la commande, mais que chaque changement laisse une trace qui indique d’où il vient : du catalogue, de la commande de l’utilisateur, de la couche créative ou du système. Une couche de brouillard sur un tracé alpin est étiquetée « simulation visuelle » ; une couleur issue de la palette de quatre est étiquetée « catalogue ». L’utilisateur n’a pas à deviner ce qui est vrai et ce qui est décor.
Il existe trois répertoires aux noms similaires sur le disque ; deux d’entre eux — `world-agent-v2` et `world-agent-provenance-atlas` — ne sont pas des projets séparés, mais des copies de travail git du même dépôt. La vraie version est `world-agent` sur la branche `main`, qui porte aujourd’hui la reformulation V2 « World Generator » et est identique bit à bit à la branche `v2/world-generator`.
Environ 22 règles de correspondance sur texte roumains traduisent une phrase en une modification d’état typée. « Rendez la voiture blanche et mettez des jantes sport » déclenche deux règles et produit deux événements distincts. Ce n’est pas un modèle de langage : c’est du code qui s’exécute dans le navigateur, donne le même résultat à chaque fois et peut être lu ligne par ligne.
La reconnaissance vocale utilise `webkitSpeechRecognition` dans le navigateur, avec la langue fixée sur `ro-RO`. Lorsque l’interface n’existe pas — ou que l’utilisateur préfère le clavier — la barre de commande reste fonctionnelle, avec les mêmes règles. Nous n’envoyons l’audio nulle part.
Un véhicule construit procéduralement à partir de primitives Three.js (carrosserie, cabine en capsule de verre, quatre roues avec jantes, phares, portes, coffre), sur un socle avec anneau, grille et trois lumières. Rendu avec tone mapping ACES Filmic, rapport de pixels plafonné à 1,75 et arrêt complet de l’animation lorsque le système demande moins de mouvement.
Chaque mutation d’état produit un événement avec l’une de quatre étiquettes : Catalog, User command, Creative layer ou System. L’étiquette « Creative layer » s’affiche littéralement comme « Strat creativ / simulat ». La fiche d’offre apparaît avec le détail « Date fictive marquées — il ne s’agit pas d’une offre commerciale ».
Il existe un runtime normalisé avec huit outils visuels (`visual.inspect`, `visual.highlight`, `visual.move`, `visual.create`, `visual.delete`, `world.query`, `ui.navigate`, `ui.open_panel`) et un journal d’événements avec des numéros de révision du monde. Un appel avec une révision obsolète est rejeté avec `STALE_REVISION`; un appel répété avec le même `actionId` renvoie le reçu original marqué comme reprise. L’adaptateur vocal renvoie lui-même `NOT_CONNECTED` — le contrat est implémenté, le fournisseur n’est pas connecté.
Six bandes, chacune avec son statut déclaré : API documentée à intégrer, composants exécutables ouverts, recherche ouverte à évaluer, fournisseur à contacter, aperçu de recherche sans API publique, et une bande marquée bloquée pour l’UE où les licences examinées n’autorisent pas le lancement. Genie 3 se situe explicitement dans la catégorie aperçu de recherche — pas intégration.
Données et fonctionnement
De l'exploration à l'implémentation
Un produit physique configurable, un espace, une machine. La question de départ est quelle décision le visiteur prend après avoir vu la scène.
On part de la liste des actions sûres, pas de la liste des phrases. Chaque action reçoit les règles de langage qui la déclenchent, dans la langue du public, et l’étiquette de provenance correcte.
Les requêtes valides sont la partie facile. On teste les requêtes ambiguës, celles hors scénario et celles qui combinent plusieurs actions, pour que la réponse « je ne peux pas faire cela, mais je peux faire ceci » soit utile.
Le résultat est un package statique servi par nginx sur un serveur propre, avec certificat Let's Encrypt et possibilité de revenir à la version précédente en changeant un lien symbolique. Il n’a pas besoin de processus serveur.
Un seul : `world-agent`, sur la branche `main`. `world-agent-v2` et `world-agent-provenance-atlas` sont des copies de travail git (`git worktree`) du même dépôt, utilisées pour que plusieurs variantes de design existent simultanément. `main` et `v2/world-generator` sont aujourd’hui au même commit, donc la « version V2 » n’est pas un autre projet, c’est ce qui tourne.
Non. C’est un moteur de scène : les objets et les actions existent déjà, et la commande choisit parmi eux. Genie 3 apparaît dans notre registre des moteurs exactement avec son statut réel — aperçu de recherche, sans API publique à lancer, sans poids publiés. Ce que nous faisons à la place est moins spectaculaire et plus facile à garantir : la même commande donne le même résultat, et chaque changement a une étiquette de provenance.
Non, et c’est un choix. Le compilateur est un ensemble d’environ 22 règles de correspondance sur du texte roumain, exécutées dans le navigateur, qui produisent des changements d’état typés. L’avantage : c’est déterministe, cela ne coûte rien par requête, n’envoie le texte nulle part et peut être audité ligne par ligne. L’inconvénient : le vocabulaire est fini, et lorsqu’une requête en sort, le système le dit au lieu d’improviser.
Avec la reconnaissance vocale du navigateur — `webkitSpeechRecognition`, avec la langue fixée sur `ro-RO`. Cela signifie en pratique les navigateurs sur moteur Chromium. Le reste, la barre de texte fait exactement la même chose, avec les mêmes règles : la voix est un confort, pas une dépendance.
Non, et ils sont marqués comme tels dans l’événement même qui les affiche : « Données fictives marquées — ce n’est pas une offre commerciale ». Il n’y a pas d’intégration avec un catalogue de fabricant ni avec un système de prix. Dans une implémentation pour un client, la source des prix serait son système, et l’étiquette de provenance passerait de « Catalogue démo » à la source réelle.
Pas dans ce build. Les connecteurs apparaissent dans l’interface avec l’étiquette NOT CONNECTED, et le contrat d’outils existe, mais l’adaptateur du fournisseur renvoie lui-même `NOT_CONNECTED`. Il y a cependant déjà écrit la partie lourde : huit outils visuels typés, des numéros de révision du monde, un rejet sur révision obsolète et des reçus idempotents — c’est-à-dire exactement les protections dont vous avez besoin pour qu’un agent n’applique pas deux fois la même action sur un état qui a changé entre-temps.
Oui, avec le travail de configuration décrit ci-dessus : la scène, la liste des actions autorisées et les règles de langage sont réécrites pour l’objet concerné. Ce qui est réutilisé, c’est l’architecture — le compilateur déterministe, le rail de provenance, le contrat d’outils et la discipline de révision de l’état.
Exemple illustratif
Un scénario d’utilisation, sans données client ni résultats commerciaux attribués.
Le visiteur prononce ou écrit la phrase dans la barre de commande.
Le texte est passé par les règles de correspondance en roumain : « alpi » active l’environnement alpin, « noapte » change l’heure, « ploa » active la couche de pluie. Chaque règle produit un événement séparé avec son étiquette de provenance, et la scène Three.js réorganise la caméra, le brouillard et la couleur de fond en conséquence.
La scène change immédiatement, et dans le rail latéral apparaissent trois entrées : « Milieu composé — Couche créative / simulée — Parcours alpin », « Temps simulé — Couche créative / simulée — Éclairage de nuit » et « Météo simulée — Couche créative / simulée — Couche de pluie active ». L’agent répond qu’il a appliqué 3 modifications et a conservé la source de chacune. Aucune entrée ne prétend qu’il s’agit de données réelles.
Ce este necesar:Un browser cu WebGL. Pentru comandă vocală, un browser pe motor Chromium; altfel bara de text face același lucru.
Possibilités de collaboration
Connexion des sources autorisées, organisation de l’information et revue des actions par l’équipe, avec accès séparé par rôles.
Nous définissons un pilote autour d’un processus réel : utilisateurs, données, intégrations, coûts et critères d’acceptation. L’extension suit après l’évaluation du résultat.
Nous établissons les exigences d’accessibilité, d’hébergement, de protection des données et d’interopérabilité. Toute connexion avec des services AGE ou STISC nécessite la validation de l’éligibilité, de l’accès et des approbations.
Ce sont des scénarios d’adaptation, non des déclarations sur des contrats ou partenariats existants. Les fonctions proposées sont confirmées dans le périmètre de travail du projet.
Discuter d'un piloteNous développons des représentations 3D de la ville qui combinent relief, cartes et données sur l'espace bâti.
Prototip & cercetareAccès API à des modèles IA par une interface commune.
PlatformăGrai est notre direction de recherche pour la synthèse vocale et les modèles adaptés aux langues d'ici.
Cercetare & dezvoltareRacontez-nous votre processus. Ensemble, nous décidons ce qui vaut la peine d'être construit, ce que nous pouvons connecter et comment nous vérifions le résultat.