sliderInput("n", ...)
- checkboxInput("forecast", ...)
series <- head(pasajeros$pasajeros, input$n)
- plot(forecast::forecast(series), ...)
input → renderPatrones progresivos para conectar conversación, datos e interfaz
2026-11-01
Primero, una interfaz reactiva con inputs, outputs y un estado que conecta ambos.
Espacio reservado para una demo de Shinylive
app-00 · sin API key · integración posterior
sliderInput("n", ...)
- checkboxInput("forecast", ...)
series <- head(pasajeros$pasajeros, input$n)
- plot(forecast::forecast(series), ...)
selectInput("continente", ...)
+ textOutput("n_filas")
+ data <- reactive({ ... })
+ output$n_filas <- renderText(nrow(data()))
Después, una conversación con un modelo: cliente, prompt y respuesta.
Antes de la interfaz
ellmer organiza la conversación con el modelo.
La clave se lee desde el entorno y nunca se escribe en el código.
Conectamos conversación, datos reactivos y acciones de interfaz, una capacidad por vez.
Agregamos conversación, pero mantenemos una frontera explícita.
El modelo responde sin conocer filtros ni valores visibles.
El modelo consulta un resumen calculado desde los países visibles.
La tool lee el estado. Todavía no modifica el dashboard.
La tool acepta consultas acotadas y devuelve resultados verificables.
Solo SELECT, una tabla conocida y un límite de filas.
La conversación modifica el estado reactivo que alimenta el dashboard.
La validación ocurre antes de cambiar lo que ve la persona.
Una tool abre una tabla o un gráfico sin recargar la aplicación.
El modal también entrega contexto de vuelta al modelo.
Predecibles y visibles para preguntas conocidas.
El chat controla el dato y la perspectiva desde la que se observa.
La cámara se actualiza como proxy. El globo no se reconstruye.
ir_a_pais <- function(pais, zoom = 4) {
ubicacion <- DBI::dbGetQuery(
con,
paste(
"SELECT DISTINCT p.pais, g.longitud, g.latitud",
"FROM paises p JOIN paises_geo g USING (codigo)",
"WHERE lower(p.pais) = lower(?)"
),
params = list(pais)
)
if (!nrow(ubicacion)) stop("No encontré ese país.")
mapgl::maplibre_proxy("map", session) |>
mapgl::fly_to(
center = c(ubicacion$longitud[1], ubicacion$latitud[1]),
zoom = zoom
)
paste("Mapa centrado en", ubicacion$pais[1])
}Demo de Shiny, video corto o captura interactiva
Reservado para una integración futura con Shinylive
La interfaz conserva su función y suma una nueva forma de expresar intención.
input → render