## ----------------------------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = identical(tolower(Sys.getenv("LLMR_RUN_VIGNETTES", "false")), "true") ) ## ----------------------------------------------------------------------------- library(LLMR) library(dplyr) cfg_openai <- llm_config("openai", "gpt-5-nano") cfg_cld <- llm_config("anthropic","claude-sonnet-4-20250514", max_tokens = 512) cfg_gem <- llm_config("groq", "openai/gpt-oss-20b") ## ----------------------------------------------------------------------------- experiments <- build_factorial_experiments( configs = list(cfg_openai, cfg_cld, cfg_gem), user_prompts = c("Summarize in one sentence: The Apollo program.", "List two benefits of green tea."), system_prompts = c("Be concise.") ) experiments ## ----------------------------------------------------------------------------- setup_llm_parallel(workers = 10) res_unstructured <- call_llm_par(experiments, progress = TRUE) reset_llm_parallel() res_unstructured |> select(provider, model, user_prompt_label, response_text, finish_reason) |> head() ## ----------------------------------------------------------------------------- schema <- list( type = "object", properties = list( answer = list(type="string"), keywords = list(type="array", items = list(type="string")) ), required = list("answer","keywords"), additionalProperties = FALSE ) experiments2 <- experiments experiments2$config <- lapply(experiments2$config, enable_structured_output, schema = schema) setup_llm_parallel(workers = 10) res_structured <- call_llm_par_structured(experiments2 , .fields = c("answer","keywords") ) reset_llm_parallel() res_structured |> select(provider, model, user_prompt_label, structured_ok, answer) |> head()