Asistente de IA
El asistente de IA es un panel de “converse con sus datos” que convierte peticiones en lenguaje natural en operaciones propias de MappView — SQL espacial, estilizado de capas, control del mapa y más — y las aplica a través de la aplicación, igual que lo haría a mano. Ábralo desde Procesamiento → AI Assistant (parte superior del menú) o desde la paleta de comandos. Se acopla como un panel redimensionable en la parte inferior de la ventana (arrastre su borde superior para cambiar el tamaño, ✕ para cerrar).
Como el asistente actúa a través del store en lugar de manipular el mapa directamente, casi todo lo que hace es deshacible con Ctrl/Cmd + Z, y cada llamada a herramientas (incluido el SQL que genera) se muestra en la transcripción para que pueda ver exactamente qué se ejecutó.
El asistente es opcional y permanece desactivado hasta que configure un proveedor o hasta que el operador del despliegue active el proxy de IA gestionado. Ningún dato sale de su equipo hasta que envíe un mensaje al proveedor configurado.
Configuración: elegir un proveedor de IA
El asistente admite proveedores intercambiables — usa el SDK de Strands Agents. Configure uno o más proveedores en Configuración → AI Providers:
| Proveedor | Variable(s) de entorno | Modelo por defecto |
|---|---|---|
| Google Gemini | GEMINI_API_KEY o GOOGLE_API_KEY | gemini-3.6-flash |
| Anthropic | ANTHROPIC_API_KEY | claude-opus-5 |
| OpenAI | OPENAI_API_KEY | Elegir entre los modelos GPT actuales |
| Ollama (local) | OLLAMA_BASE_URL (p. ej., http://localhost:11434) | gemma4 |
| Amazon Bedrock | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY (+ AWS_REGION, opcionalmente AWS_SESSION_TOKEN) | global.anthropic.claude-opus-5 |
| Personalizado (compatible con OpenAI) | OPENAI_COMPATIBLE_BASE_URL (+ opcionalmente OPENAI_COMPATIBLE_API_KEY) y OPENAI_COMPATIBLE_MODEL | — |
- Ollama ejecuta modelos en su propia máquina — sin clave de API y nada sale de
su equipo. Apunte
OLLAMA_BASE_URLa su host de Ollama (el sufijo/v1se añade automáticamente); fijeOLLAMA_MODELpara elegir qué modelo descargado usar. - Bedrock llama a AWS desde el navegador con sus credenciales (y el id del modelo
es un id de perfil de inferencia como
global.anthropic.claude-sonnet-4-6; fijeBEDROCK_MODELpara elegir otro). - Personalizado cubre cualquier endpoint compatible con OpenAI — LiteLLM, vLLM, OpenRouter, Groq, Together, un servidor local, etc. — mediante su API chat-completions.
Las claves alojadas (y las credenciales AWS) se usan directamente desde su navegador para llamar al proveedor; nunca se envían a los servidores de MappView. Al guardar la configuración se habilita el panel inmediatamente — sin necesidad de recargar.
IA gestionada en un despliegue Docker protegido con contraseña
Un operador del despliegue puede proporcionar IA sin distribuir claves de API de proveedores.
En esta configuración, el navegador llama a la ruta /ai del mismo origen. El nginx de Docker
comprueba el usuario y la contraseña de HTTP Basic Auth de la instancia cuando el
operador los ha configurado, y después añade un token de instancia exclusivo del servidor y reenvía
la solicitud al proxy de IA configurado. El navegador no recibe ni el token de
instancia ni el token de Cloudflare AI Gateway.
Los usuarios solo necesitan iniciar sesión en la instancia MappView; no configuran una clave de
proveedor de IA. Las solicitudes enviadas directamente al proxy configurado sin el
token exclusivo del servidor reciben 401 Unauthorized.
El operador debe arrancar el contenedor con todas las variables de IA gestionada:
docker run --rm -p 8080:80 \
-e MAPPVIEW_AUTH_USER=admin \
-e MAPPVIEW_AUTH_PASSWORD='change-me' \
-e MAPPVIEW_AI_URL=/ai \
-e MAPPVIEW_AI_MODEL=openai/gpt-5.5 \
-e MAPPVIEW_AI_PROXY_URL=http://host.docker.internal:8791 \
-e MAPPVIEW_AI_PROXY_TOKEN="$MAPPVIEW_AI_PROXY_TOKEN" \
mapptech/mappview:local
Si MAPPVIEW_AI_URL no está definida, el entrypoint de Docker deja el proxy gestionado
desactivado y no inyecta ninguna URL de proxy de IA en la aplicación.
Variables opcionales:
| Variable | Propósito |
|---|---|
MAPPVIEW_ASSISTANT_PROVIDER | Forzar un proveedor (google / anthropic / openai) cuando hay varias claves definidas. |
MAPPVIEW_ASSISTANT_MODEL | Fijar un id de modelo concreto, anulando el valor por defecto y el selector. |
TAVILY_API_KEY | Habilitar una búsqueda web fiable (el mecanismo alternativo sin clave es best-effort y puede ser bloqueado por el navegador). |
Cuando hay más de una clave de proveedor configurada, aparece un desplegable de proveedor en el encabezado del panel; un desplegable de modelo permite cambiar de modelo para el proveedor seleccionado. Su elección se recuerda entre sesiones.
Leer claves del entorno de su sistema (escritorio)
En la aplicación de escritorio, MappView también lee las claves del asistente directamente de
las variables de entorno de su sistema operativo — las que exporta desde su perfil
de shell o define en el cuadro de diálogo Variables de entorno de Windows. Defina una variable
compatible en el entorno de su SO, reinicie la aplicación, y el proveedor correspondiente
queda configurado automáticamente: nunca teclea la clave en Configuración y,
como no se introduce allí, nunca se escribe en el archivo de proyecto .mappview.json
guardado. Esta es la forma recomendada de mantener las claves de API fuera de los archivos
de proyecto que comparte o confirma en git.
Solo se leen de su entorno los siguientes nombres de lista blanca — MappView
nunca lee ninguna otra variable del sistema (su PATH, HOME, etc., nunca llegan a
la aplicación), y esta lista blanca se aplica en el backend nativo, no solo
en la interfaz:
| Grupo | Variables leídas del entorno del OS |
|---|---|
| Overrides de proveedor/modelo | MAPPVIEW_ASSISTANT_PROVIDER, MAPPVIEW_ASSISTANT_MODEL |
| Google Gemini | GEMINI_API_KEY, GOOGLE_API_KEY, GOOGLE_GENAI_API_KEY |
| Anthropic | ANTHROPIC_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Ollama | OLLAMA_BASE_URL, OLLAMA_MODEL |
| Personalizado (compatible con OpenAI) | OPENAI_COMPATIBLE_BASE_URL, OPENAI_COMPATIBLE_API_KEY, OPENAI_COMPATIBLE_MODEL |
| Búsqueda web | TAVILY_API_KEY |
Precedencia: un valor introducido en Configuración → Environment Variables siempre gana; el entorno del SO solo rellena los huecos. En la configuración de IA, cualquier campo suministrado por el entorno muestra una nota nombrando la variable que lo respalda — deje ese campo vacío para seguir usando el valor del entorno.
!!! warning “Amazon Bedrock no proviene del entorno del SO”
Las credenciales AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY de Bedrock (y el
OLLAMA_HOST ambiental) están deliberadamente excluidas de la lectura del
entorno del SO: los desarrolladores suelen tener credenciales AWS exportadas en su shell
para trabajo no relacionado, y adoptarlas silenciosamente podría activar Bedrock automáticamente
y facturar a su cuenta AWS llamadas LLM que nunca pretendió. Para usar Bedrock,
introduzca las credenciales en Configuración → Environment Variables.
!!! note “Solo escritorio” Leer variables de entorno del SO requiere el backend nativo, así que se aplica solo a la aplicación de escritorio. Las builds de navegador y Jupyter no pueden leer el entorno del sistema; allí, introduzca las claves en Configuración → Environment Variables (u hornéelas en tiempo de build). Los cambios en las variables del SO se recogen en el siguiente arranque de la aplicación.
Uso
Escriba una petición y pulse Ctrl/Cmd + Enter (o haga clic en Send). El asistente transmite su respuesta en streaming, ejecuta herramientas según sea necesario e informa de lo que hizo. Mientras trabaja, Send pasa a ser Stop — haga clic para cancelar. Clear (el icono de goma de borrar) inicia una conversación nueva.
show me all parcels larger than 1 hectare within 500 m of a river
color the counties by population using a graduated red ramp
buffer the roads by 100 m, then clip them to the county boundary
load the latest Sentinel-2 scene over this view
zoom to Africa, then switch to a dark basemap
add an OpenTopoMap basemap
Qué puede hacer
El asistente funciona llamando a un conjunto fijo de herramientas — no puede inventar operaciones, así que sus acciones se mantienen dentro de la superficie validada de MappView.
| Capacidad | Qué hace |
|---|---|
| Inspeccionar capas | Lista las capas cargadas, su geometría, campos de atributos y nombres de tablas SQL (solo esquema — nunca sus datos completos). |
| LN → SQL espacial | Genera y ejecuta una consulta DuckDB Spatial SQL de solo lectura a través del espacio de trabajo SQL, y puede añadir el resultado como capa. |
| Geoprocesamiento | Ejecuta los algoritmos de procesamiento registrados (buffer, clip, dissolve, intersección, diferencia, unión, unión espacial, simplificar, rejillas H3, …) y los encadena en pipelines de varios pasos, añadiendo cada resultado como capa. |
| Simbología | Aplica una rampa de color graduada (numérica) o categorizada (texto) a una capa. |
| Añadir datos | Añade una capa desde una URL GeoJSON pública, o un mapa base de teselas XYZ por nombre (osm, opentopomap, carto-dark) o una URL personalizada {z}/{x}/{y}. |
| Observación de la Tierra | Busca en el catálogo STAC de Planetary Computer de Microsoft (Sentinel-2, Landsat, NAIP, DEM, …) y añade un elemento sobre la vista actual como capa ráster — las teselas se firman en el servidor, así que no se necesitan credenciales. |
| Control del mapa | Mueve la cámara (ajustar a una capa o a un rectángulo delimitador), cambia el mapa base, alterna visibilidad/opacidad de capas y elimina capas. |
| Búsqueda web | Consulta información actualizada en línea (mejor con TAVILY_API_KEY). |
| Alternativa con código | Para tareas sin herramienta dedicada, ejecuta un pequeño fragmento JavaScript contra el mapa en vivo (p. ej., proyección de globo) o un fragmento Python en el runtime Pyodide. |
Prompts de ejemplo
Los prompts son de forma libre — estos son puntos de partida, no comandos fijos. Refiérase a las capas por nombre; el asistente averigua el resto. También puede encadenar pasos en un solo mensaje (“buffer the roads by 100 m and then clip to the county boundary”) o seguir refinando entre turnos (“now color it by area”).
Explorar y consultar
what layers are loaded, and what fields does the parcels layer have?
how many parcels are larger than 1 hectare?
list the 10 most populous counties with their population
show parcels within 500 m of a river and add them as a layer
count points in each polygon of the districts layer
Geoprocesamiento y análisis
buffer the roads by 100 meters
buffer the roads by 100 m, then clip the buffer to the county boundary
dissolve the parcels by zoning type
find where the floodplain overlaps the buildings (intersection)
create an H3 hex grid at resolution 8 over the points and count points per cell
compute centroids of the counties and add them as a layer
Simbología
color the counties by population with a graduated red ramp
style the parcels categorized by land-use type
shade the tracts by median income using a viridis ramp with 7 classes
Añadir datos e imágenes
load the latest Sentinel-2 scene over this view
add the most recent cloud-free Landsat image for this area
search the Planetary Computer for NAIP imagery here
add an OpenTopoMap basemap
add this GeoJSON: https://example.com/data.geojson
Control del mapa y estilizado
zoom to the parcels layer
fly to San Francisco
switch to a dark basemap
hide the buildings layer and set the parcels opacity to 0.5
remove the temporary buffer layer
Avanzado (alternativa con código)
switch the map to a 3D globe projection
enable terrain with hillshade exaggeration of 1.5
load a CSV from a URL with pandas and summarize its columns
Seguridad y privacidad
- Actúa a través del store. Las acciones sobre capas, estilo, mapa base y adición/eliminación pasan por el mismo flujo de datos unidireccional que el resto de la aplicación, así que se reconcilian de forma consistente y quedan cubiertas por deshacer/rehacer.
- Auditable. El SQL generado y cada llamada a herramientas aparecen en la transcripción.
- SQL de solo lectura. La herramienta
run_sqlrechaza cualquier cosa que no sea una consultaSELECT/WITH. - Contexto acotado. Solo los nombres de capas/tablas, los nombres de campos de atributos y la vista actual se envían al modelo — no los datos de sus geometrías.
- Lo que sale de su navegador. Cuando envía un prompt, este (más ese contexto acotado) se envía a su proveedor LLM elegido usando su propia clave. No habilite el asistente sobre datos sensibles que no pueda compartir con ese proveedor.
!!! note “Advertencia sobre la ejecución de código” Las alternativas JavaScript y Python ejecutan código generado por el modelo dentro de la aplicación para cubrir peticiones que ninguna herramienta dedicada atiende. Sus cambios directos sobre el mapa omiten el store y no son deshacibles. El código se muestra en la transcripción.
Limitaciones
- Requiere una clave de API de un proveedor; no se soporta el uso sin conexión.
- Sujeto al coste y límites de tasa de cada proveedor y a la política CORS/CSP de su red (llamadas del lado del navegador).
- Los endpoints de teselas no oficiales de Google Maps están deliberadamente excluidos; use los mapas base oficialmente soportados listados o suministre su propia URL XYZ.