Spaces:
Running
Running
## Illustrate/test core app functionality without shiny | |
library(tidyverse) | |
library(duckdbfs) | |
library(mapgl) | |
library(ellmer) | |
library(glue) | |
repo <- "https://data.source.coop/cboettig/social-vulnerability" | |
pmtiles <- glue("{repo}/svi2020_us_tract.pmtiles") | |
parquet <- glue("{repo}/svi2020_us_tract.parquet") | |
svi <- open_dataset(parquet, tblname = "svi") |> filter(RPL_THEMES > 0) | |
schema <- read_file("schema.yml") | |
system_prompt <- glue::glue(readr::read_file("system-prompt.md"), | |
.open = "<", .close = ">") | |
# Or optionally test with cirrus | |
chat <- ellmer::chat_vllm( | |
base_url = "https://llm.cirrus.carlboettiger.info/v1/", | |
model = "kosbu/Llama-3.3-70B-Instruct-AWQ", | |
api_key = Sys.getenv("CIRRUS_LLM_KEY"), | |
system_prompt = system_prompt, | |
api_args = list(temperature = 0) | |
) | |
# or use the NRP model | |
chat <- ellmer::chat_vllm( | |
base_url = "https://llm.nrp-nautilus.io/", | |
model = "llama3", | |
api_key = Sys.getenv("NRP_API_KEY"), | |
system_prompt = system_prompt, | |
api_args = list(temperature = 0) | |
) | |
# Test a chat-based response | |
chat$chat("Which columns describes racial components of social vulnerability?") | |
## A query-based response | |
stream <- chat$chat("Which counties in California have the highest average social vulnerability?") | |
response <- jsonlite::fromJSON(stream) | |
con <- duckdbfs::cached_connection() | |
filtered_data <- DBI::dbGetQuery(con, response$query) | |
filter_column <- function(full_data, filtered_data, id_col) { | |
if (nrow(filtered_data) < 1) return(NULL) | |
values <- full_data |> | |
inner_join(filtered_data, copy = TRUE) |> | |
pull(id_col) | |
# maplibre syntax for the filter of PMTiles | |
list("in", list("get", id_col), list("literal", values)) | |
} | |
maplibre(center = c(-102.9, 41.3), zoom = 3) |> | |
add_fill_layer( | |
id = "svi_layer", | |
source = list(type = "vector", url = paste0("pmtiles://", pmtiles)), | |
source_layer = "SVI2000_US_tract", | |
filter = filter_column(full_data, filtered_data, "FIPS"), | |
fill_opacity = 0.5, | |
fill_color = interpolate(column = "RPL_THEMES", | |
values = c(0, 1), | |
stops = c("#e19292c0", "darkblue"), | |
na_color = "lightgrey") | |
) | |