Un assistant IA sensible à la carte est une interface conversationnelle qui exploite un contexte cartographique structuré — fenêtre visible, lieu sélectionné, filtres et position autorisée — pour interpréter une question et renvoyer une réponse fondée ainsi qu’une action cartographique. Il peut placer des marqueurs, cadrer les résultats, surligner une zone, demander un itinéraire ou cibler une entité. Séparez quatre responsabilités : l’hôte contrôle l’état et les autorisations, les systèmes fiables possèdent les faits, les outils spatiaux effectuent les calculs géographiques et l’IA interprète l’intention puis propose des actions prises en charge.
Les sections suivantes abordent l’état partagé, le vocabulaire d’actions, les adaptateurs de rendu, la connexion de Kaleidr Chat, l’ancrage factuel et les erreurs courantes. Le contexte produit se trouve sur Kaleidr Spatial AI. Pour l’architecture SDK, consultez Qu’est-ce qu’un SDK cartographique d’IA ?. Pour les montages, consultez Chat IA sur Mapbox, Google Maps et MapLibre. Pour les identifiants et données privées, consultez Authentification d’API cartographique et Données de localisation privées pour les flux cartographiques d’IA.
Principes essentiels
- Partager l’état, pas les pixels : transmettez limites, ID de sélection, filtres et ID de résultats ; ne demandez pas au modèle de lire la carte comme une image.
- La fenêtre est un contexte : les limites visibles influencent le classement, sauf demande de recherche dans cette zone.
- Actions sémantiques uniquement : émettez
show_placesoufit_places, jamais du JavaScript de moteur de rendu.- Étiqueter la source : déplacements utilisateur et mouvements de caméra de l’assistant ne doivent pas relancer le modèle.
- Ancrer les faits : horaires, identité, géométrie et temps de trajet viennent de systèmes faisant autorité.

Qu’est-ce qui distingue un assistant IA sensible à la carte ?
Un assistant textuel placé près d’une carte sait peut-être que Paris est en France. Un produit sensible à la carte sait aussi ce que l’utilisateur y fait : centre, limites visibles, zoom, entité sélectionnée, filtres, itinéraire actuel, résultats précédents, position autorisée et état de l’application hôte. « Lequel est le plus proche de l’hôtel ? » reste ambigu sans contrat. « Lequel » renvoie aux résultats actuels, « l’hôtel » à l’hôtel sélectionné ou à l’origine de session, et « le plus proche » à une opération de distance ou de temps de trajet. La sortie utile associe réponse, lieu sélectionné, cadrage et justification.
La recherche traditionnelle part de contrôles comme catégorie, rayon et ouvert maintenant. La conversation aide lorsque la demande combine des conditions difficiles à exprimer en filtres : « cafés calmes dans cette zone, adaptés à une réunion client et ouverts après 19 h ». L’IA interprète catégorie, zone, préférence, heure et usage. Les systèmes déterministes doivent conserver l’identité, les horaires, la géométrie, le temps de trajet, le routage et l’éligibilité. Utilisez le modèle pour interpréter, pas comme unique source de faits géographiques.
| Capacité | Assistant textuel près d’une carte | Assistant sensible à la carte |
|---|---|---|
| Comprend le langage naturel | Oui | Oui |
| Connaît la zone visible | Pas nécessairement | Oui, si fournie |
| Connaît le lieu sélectionné | Pas nécessairement | Oui |
| Utilise les filtres actuels | Généralement non | Possible |
| Applique des actions | Généralement limité | Oui |
| Partage l’état hôte | Faible | Explicite |
Comment concevoir l’état cartographique partagé ?
Une boucle de production suit : question, instantané du contexte hôte, interprétation, récupération autorisée, calcul spatial, réponse fondée, action validée, mise à jour du rendu. Commencez par un contrat d’état explicite plutôt que d’espérer que le modèle infère l’écran. Incluez seulement le nécessaire : ID de l’entité sélectionnée, ID des résultats, filtres pertinents, limites visibles si utiles, contexte d’itinéraire, origine autorisée et version d’état. Définissez la priorité : un lieu sélectionné l’emporte sur une liste ancienne, une destination donnée par l’utilisateur sur l’origine par défaut.
Ne transformez pas la fenêtre en filtre rigide caché. Les limites visibles peuvent classer ou favoriser des résultats sans exclure silencieusement l’extérieur. Conservez des ID stables entre les tours afin que « le deuxième café » désigne le même enregistrement après un déplacement. Séparez identité et explication : l’hôte stocke place_id et les champs source ; le modèle peut expliquer la pertinence, jamais inventer un identifiant.
L’état bidirectionnel est plus solide qu’un chat à sens unique. Déplacements, zooms, sélections et filtres mettent à jour un stockage hôte étiqueté comme événement utilisateur. Les actions afficher des lieux, cadrer les résultats, ouvrir un lieu ou montrer un itinéraire passent par validation et adaptateur, puis sont étiquetées comme événements assistant. Ne renvoyez un nouvel instantané au modèle que si le tour suivant l’exige. Une protection empêche les mouvements de caméra générés par l’assistant de déclencher automatiquement une nouvelle requête.

Comment rendre les actions indépendantes du moteur de rendu ?
Concevez un petit vocabulaire : afficher des lieux, les cadrer, ouvrir un lieu, surligner une entité, montrer un itinéraire et effacer les résultats. Validez chaque action par schéma, contrôlez les permissions d’objet, puis traduisez la carte sémantique en appels Mapbox, Google Maps ou MapLibre dans un adaptateur. N’autorisez pas le modèle à produire du JavaScript arbitraire. Les recommandations OWASP 2025 sur l’injection de prompts indiquent qu’un contenu récupéré ou conversationnel peut tenter de modifier les outils ; même manipulé, le modèle ne doit pouvoir exécuter du code non approuvé ni récupérer des objets interdits.
Séparez les couches temporaires de résultats IA des données persistantes, afin d’effacer une conversation sans supprimer les lieux enregistrés. Traitez absence et ambiguïté avec un ensemble vide explicite et une question, non un marqueur inventé. Le classement doit être explicable par des champs autorisés. Préservez le contrôle utilisateur : l’assistant peut proposer un mouvement de caméra, mais un déplacement ultérieur de l’utilisateur l’emporte. Diffusez les tokens pour réduire la latence et attendez la résolution des lieux avant de bouger la caméra.

Comment Kaleidr Chat se connecte-t-il à une carte existante ?
La documentation Chat actuelle indique que le SDK peut se connecter à une carte Mapbox, MapLibre, Google Maps ou Leaflet active, afficher les lieux résolus et cadrer la caméra à mesure que la conversation résout les positions (Chat attach). L’hôte continue le rendu ; Chat ajoute la couche spatiale conversationnelle. Des guides existent pour Mapbox, Google Maps et MapLibre. Le navigateur utilise une clé publiable avec le scope ai, échangée contre une session courte liée à l’origine (Auth & Scopes). Le mode headless omet map pour les tests ou interfaces de chat seules. Chargez le kaleidr.js actuel, puis montez après la création de l’objet carte actif.
// myMap must already be a live supported map instance
const chatHandle = Kaleidr.mount("#map-chat", {
product: "chat",
publishableKey: "kld_pk_live_REPLACE_ME",
map: myMap,
enabled: true
});
Les données métier privées restent derrière l’autorisation hôte et une récupération minimale (Endpoints). La position utilisateur doit être volontaire. N’envoyez pas de coordonnées précises ou journaux inutiles au navigateur ou à l’analytique. Mettez en cache les faits publics stables, pas les décisions de permission. Mesurez l’accomplissement d’une tâche — sélectionner un lieu, ouvrir un itinéraire, présélectionner un bien — plutôt que le nombre de tours. Testez courses d’état, ambiguïtés géographiques et charges malveillantes avant lancement.

Quelles erreurs les équipes doivent-elles éviter ?
| Erreur | Risque | Meilleure approche |
|---|---|---|
| Assistant textuel près d’une carte inconsciente | « ceci » et « ici » ambigus | Partager l’état structuré |
| Fenêtre utilisée comme filtre silencieux | Résultats valides manquants | Limites comme contexte sauf demande |
| JavaScript de rendu produit par le modèle | Injection et verrou fournisseur | Actions sémantiques + adaptateur |
| Relancer le modèle à chaque mouvement | Boucles et coûts | Étiquettes de source + protection |
| Inventer des ID de lieux dans le texte | Enregistrements faux ou en double | ID stables de données fiables |
| Bouger la caméra au premier token | Carte instable | Attendre les lieux résolus |
| Mélanger couches IA et données sauvegardées | Suppressions accidentelles | Séparer les couches temporaires |
| Envoyer une clé serveur au navigateur | Vol d’identifiants | Clé publiable + scope ai |
| Omettre l’état sans résultat | Marqueurs inventés | Ensemble vide + suivi |
| Mesurer seulement le volume de chat | Indicateurs superficiels | Accomplissement sur la carte |
Verdict final
Un assistant sensible à la carte fonctionne lorsque conversation et carte active partagent un contrat explicite d’état et d’actions. L’hôte contrôle permissions et appels de rendu. Les systèmes fiables possèdent identité et faits opérationnels. Les moteurs spatiaux possèdent distance, routage et géométrie. Le modèle interprète l’intention, coordonne le classement et explique les résultats dans ces limites. Kaleidr Chat connecte actuellement cette couche à une carte déjà rendue par l’hôte, avec clé navigateur publiable et guides Mapbox, Google Maps et MapLibre. Concevez d’abord le contrat d’état ; le panneau de chat est la dernière surface, pas l’architecture.
Ajouter le chat IA à votre carte existante
Connectez Kaleidr Chat à une carte Mapbox, Google Maps, MapLibre ou Leaflet active et gardez l’hôte comme moteur de rendu de référence. Consultez la documentation Kaleidr Chat pour les options de montage, les tests headless et les scopes actuels.
FAQ
Qu’est-ce qu’un assistant IA sensible à la carte ?
Une interface conversationnelle recevant le contexte structuré d’une carte — lieux sélectionnés, zone visible, filtres ou origine — et renvoyant des résultats fondés et des actions prises en charge.
En quoi diffère-t-il d’un assistant textuel ?
L’assistant textuel échange surtout du texte. L’assistant cartographique partage l’état et coordonne récupération géographique, calculs, marqueurs, caméra, itinéraires et sélections.
L’IA doit-elle lire la carte comme une image ?
Généralement non pour l’état applicatif. Fournissez limites, ID d’entités, filtres et ID de résultats. La vision peut aider ailleurs, mais l’état doit rester explicite.
La fenêtre visible doit-elle toujours limiter les résultats ?
Non. Elle peut être un contexte sans filtre rigide. Ne l’utilisez comme limite que si l’utilisateur demande « rechercher dans cette zone ».
Quel état l’assistant doit-il connaître ?
Seulement celui nécessaire : entité sélectionnée, ID de résultats, filtres, limites si besoin, contexte d’itinéraire et origine autorisée.
Comment une IA doit-elle contrôler une carte ?
Avec un vocabulaire structuré tel que show_places, fit_places, open_place ou show_route, validé puis traduit par l’hôte.
Le modèle doit-il produire du JavaScript Mapbox ou Google Maps ?
Pas comme mécanisme principal. Les actions sémantiques sont plus sûres et indépendantes du rendu.
Peut-il utiliser des données métier privées ?
Oui si l’hôte authentifie, applique les permissions de tenant, objet et champ, et ne récupère que les données autorisées nécessaires.
Kaleidr Chat peut-il se connecter à une carte existante ?
Oui, à une carte Mapbox, MapLibre, Google Maps ou Leaflet active, avec affichage des lieux et cadrage de la caméra.
Kaleidr Chat remplace-t-il mon moteur de rendu ?
Non. L’hôte continue le rendu ; Chat ajoute la couche spatiale conversationnelle.
Quelle clé Kaleidr Chat utilise-t-il dans le navigateur ?
Une clé publiable avec scope ai, échangée contre une session courte liée à l’origine.
L’IA sensible à la carte fonctionne-t-elle sans carte ?
La couche conversationnelle, oui. Le mode headless omet map pour les tests ou interfaces de chat seules.
Comment mesurer cet assistant ?
Mesurez les tâches utiles achevées : sélectionner ou sauvegarder un lieu, ouvrir un itinéraire, présélectionner un bien, choisir un magasin, terminer une réservation ou autre résultat propre au produit.
Références
- Kaleidr. AI Maps You Can Talk To — Spatial AI. Consulté le 20 août 2026. https://kaleidr.com/ai
- Kaleidr. Attach Kaleidr AI to a Google Map. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/guides/attach-ai-to-google-maps
- Kaleidr. Attach Kaleidr AI to a Mapbox Map. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/guides/attach-ai-to-mapbox
- Kaleidr. Attach Kaleidr AI to a MapLibre Map. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/guides/attach-ai-to-maplibre
- Kaleidr. Auth & Scopes. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/platform-api/auth-and-scopes
- Kaleidr. Chat — Attach AI to Your Map. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/sdk/chat-attach
- Kaleidr. Endpoints. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/platform-api/endpoints
- Kaleidr. kaleidr.js — the Loader. Kaleidr Developer Docs. Consulté le 20 août 2026. https://docs.kaleidr.com/sdk/kaleidr-js
- Google. Load the Maps JavaScript API. Google Maps Platform documentation. Consulté le 20 août 2026. https://developers.google.com/maps/documentation/javascript/load-maps-js-api
- Mapbox. Get started with Mapbox GL JS using a CDN. Mapbox GL JS documentation. Consulté le 20 août 2026. https://docs.mapbox.com/mapbox-gl-js/guides/get-started/use-with-cdn/
- MapLibre. Display a map. MapLibre GL JS documentation. Consulté le 20 août 2026. https://maplibre.org/maplibre-gl-js/docs/examples/display-a-map/
- OWASP Gen AI Security Project. LLM01:2025 Prompt Injection. Consulté le 20 août 2026. https://genai.owasp.org/llmrisk/llm01-prompt-injection/
@misc{kaleidr_chat_attach_2026,
title = {Chat -- Attach AI to Your Map},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/sdk/chat-attach}
}
@misc{kaleidr_spatial_ai_2026,
title = {AI Maps You Can Talk To -- Spatial AI},
author = {{Kaleidr}},
note = {Accessed 20 August 2026},
url = {https://kaleidr.com/ai}
}
@misc{kaleidr_auth_scopes_2026,
title = {Auth and Scopes},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/platform-api/auth-and-scopes}
}
@misc{kaleidr_attach_mapbox_2026,
title = {Attach Kaleidr AI to a Mapbox Map},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/guides/attach-ai-to-mapbox}
}
@misc{kaleidr_attach_google_2026,
title = {Attach Kaleidr AI to a Google Map},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/guides/attach-ai-to-google-maps}
}
@misc{kaleidr_attach_maplibre_2026,
title = {Attach Kaleidr AI to a MapLibre Map},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/guides/attach-ai-to-maplibre}
}
@misc{kaleidr_endpoints_2026,
title = {Endpoints},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/platform-api/endpoints}
}
@misc{kaleidr_js_loader_2026,
title = {kaleidr.js -- the Loader},
author = {{Kaleidr}},
note = {Kaleidr Developer Docs; accessed 20 August 2026},
url = {https://docs.kaleidr.com/sdk/kaleidr-js}
}
@misc{google_maps_js_loader_2026,
title = {Load the Maps JavaScript API},
author = {{Google}},
note = {Google Maps Platform documentation; accessed 20 August 2026},
url = {https://developers.google.com/maps/documentation/javascript/load-maps-js-api}
}
@misc{mapbox_cdn_guide_2026,
title = {Get started with Mapbox GL JS using a CDN},
author = {{Mapbox}},
note = {Mapbox GL JS documentation; accessed 20 August 2026},
url = {https://docs.mapbox.com/mapbox-gl-js/guides/get-started/use-with-cdn/}
}
@misc{maplibre_display_map_2026,
title = {Display a map},
author = {{MapLibre}},
note = {MapLibre GL JS documentation; accessed 20 August 2026},
url = {https://maplibre.org/maplibre-gl-js/docs/examples/display-a-map/}
}
@misc{owasp_llm01_prompt_injection_2025,
title = {LLM01:2025 Prompt Injection},
author = {{OWASP Gen AI Security Project}},
note = {Accessed 20 August 2026},
url = {https://genai.owasp.org/llmrisk/llm01-prompt-injection/}
}