{
  "_id": "6a290f9e732311cd87595e95",
  "Package": "LLMR",
  "Title": "Interface for Large Language Model APIs in R",
  "Version": "0.8.4",
  "Authors@R": "person(\"Ali\", \"Sanaei\", , \"sanaei@uchicago.edu\", role = c(\"aut\", \"cre\"))",
  "Description": "Provides a unified interface to large language models\nacross multiple providers. Supports text generation, tidy data\nworkflows, structured output with optional JSON Schema\nvalidation, XML-like tag extraction, and embeddings. Includes\nchat sessions, consistent error handling, and parallel batch\ntools.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "URL": "https://github.com/asanaei/LLMR, https://asanaei.github.io/LLMR/",
  "BugReports": "https://github.com/asanaei/LLMR/issues",
  "VignetteBuilder": "knitr",
  "NeedsCompilation": "no",
  "Author": "Ali Sanaei [aut, cre]",
  "Maintainer": "Ali Sanaei <sanaei@uchicago.edu>",
  "Config/pak/sysreqs": "libicu-dev libssl-dev",
  "Repository": "https://asanaei.r-universe.dev",
  "Date/Publication": "2026-06-10 05:50:20 UTC",
  "RemoteUrl": "https://github.com/asanaei/llmr",
  "RemoteRef": "HEAD",
  "RemoteSha": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
  "Packaged": {
    "Date": "2026-06-10 07:12:42 UTC",
    "User": "root"
  },
  "MD5sum": "1fe0e1a42659804cd23e0fcc859f6574",
  "_user": "asanaei",
  "_type": "src",
  "_file": "LLMR_0.8.4.tar.gz",
  "_fileid": "20d97ad169b2b84787bc9a353ced1785df5b2a0d6f5107913c1d6184444ec60b",
  "_filesize": 4512545,
  "_sha256": "20d97ad169b2b84787bc9a353ced1785df5b2a0d6f5107913c1d6184444ec60b",
  "_created": "2026-06-10T07:12:42.000Z",
  "_published": "2026-06-10T07:17:50.078Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 80502165420,
      "time": 145,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "7528932572"
    },
    {
      "job": 80502165422,
      "time": 156,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7528935576"
    },
    {
      "job": 80502165436,
      "time": 113,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7528967486"
    },
    {
      "job": 80502165403,
      "time": 122,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7528926149"
    },
    {
      "job": 80501667680,
      "time": 195,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7528887307"
    },
    {
      "job": 80502165378,
      "time": 120,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7528924556"
    },
    {
      "job": 80502165413,
      "time": 164,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "7528937828"
    },
    {
      "job": 80502165449,
      "time": 101,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "7528918740"
    },
    {
      "job": 80502165447,
      "time": 110,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "NOTE",
      "artifact": "7528921510"
    }
  ],
  "_buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/asanaei/llmr",
  "_commit": {
    "id": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
    "author": "Ali Sanaei <20296004+asanaei@users.noreply.github.com>",
    "committer": "Ali Sanaei <20296004+asanaei@users.noreply.github.com>",
    "message": "Fix five patch bugs\n",
    "time": 1781070620
  },
  "_maintainer": {
    "name": "Ali Sanaei",
    "email": "sanaei@uchicago.edu",
    "login": "asanaei",
    "description": "",
    "uuid": 20296004
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "httr2",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "curl",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "memoise",
      "role": "Imports"
    },
    {
      "package": "future",
      "role": "Imports"
    },
    {
      "package": "future.apply",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "base64enc",
      "role": "Imports"
    },
    {
      "package": "mime",
      "role": "Imports"
    },
    {
      "package": "glue",
      "version": ">= 1.6.0",
      "role": "Imports"
    },
    {
      "package": "cli",
      "version": ">= 3.6.0",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "vctrs",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "roxygen2",
      "version": ">= 7.1.2",
      "role": "Suggests"
    },
    {
      "package": "httptest2",
      "role": "Suggests"
    },
    {
      "package": "progressr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "R.rsp",
      "role": "Suggests"
    },
    {
      "package": "jsonvalidate",
      "role": "Suggests"
    },
    {
      "package": "stringi",
      "role": "Suggests"
    },
    {
      "package": "kableExtra",
      "role": "Suggests"
    }
  ],
  "_owner": "asanaei",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-25",
      "n": 1
    },
    {
      "week": "2025-26",
      "n": 4
    },
    {
      "week": "2025-27",
      "n": 5
    },
    {
      "week": "2025-28",
      "n": 5
    },
    {
      "week": "2025-29",
      "n": 6
    },
    {
      "week": "2025-30",
      "n": 2
    },
    {
      "week": "2025-33",
      "n": 2
    },
    {
      "week": "2025-35",
      "n": 1
    },
    {
      "week": "2025-37",
      "n": 2
    },
    {
      "week": "2025-40",
      "n": 1
    },
    {
      "week": "2025-41",
      "n": 1
    },
    {
      "week": "2025-45",
      "n": 1
    },
    {
      "week": "2026-17",
      "n": 1
    },
    {
      "week": "2026-18",
      "n": 1
    },
    {
      "week": "2026-21",
      "n": 1
    },
    {
      "week": "2026-23",
      "n": 4
    },
    {
      "week": "2026-24",
      "n": 8
    }
  ],
  "_tags": [],
  "_stars": 8,
  "_contributors": [
    {
      "user": "asanaei",
      "count": 81,
      "uuid": 20296004
    }
  ],
  "_userbio": {
    "uuid": 20296004,
    "type": "user",
    "name": "Ali Sanaei"
  },
  "_downloads": {
    "count": 448,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/LLMR"
  },
  "_devurl": "https://github.com/asanaei/llmr",
  "_pkgdown": "https://asanaei.github.io/LLMR/",
  "_searchresults": 55,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/LLMR.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/asanaei/llmr",
  "_realowner": "asanaei",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2024-10-21"
    },
    {
      "version": "0.1.2",
      "date": "2025-01-17"
    },
    {
      "version": "0.2.1",
      "date": "2025-02-11"
    },
    {
      "version": "0.2.3",
      "date": "2025-03-13"
    },
    {
      "version": "0.2.5",
      "date": "2025-03-22"
    },
    {
      "version": "0.3.0",
      "date": "2025-05-27"
    },
    {
      "version": "0.4.2",
      "date": "2025-06-26"
    },
    {
      "version": "0.5.0",
      "date": "2025-07-17"
    },
    {
      "version": "0.6.0",
      "date": "2025-08-26"
    },
    {
      "version": "0.6.3",
      "date": "2025-10-11"
    },
    {
      "version": "0.6.4",
      "date": "2026-05-21"
    }
  ],
  "_exports": [
    "bind_tools",
    "build_factorial_experiments",
    "cache_llm_call",
    "call_llm",
    "call_llm_broadcast",
    "call_llm_compare",
    "call_llm_par",
    "call_llm_par_structured",
    "call_llm_par_tags",
    "call_llm_robust",
    "call_llm_stream",
    "call_llm_sweep",
    "call_llm_tools",
    "chat_session",
    "disable_structured_output",
    "enable_structured_output",
    "expand_llm_config",
    "finish_reason",
    "get_batched_embeddings",
    "is_truncated",
    "llm_agreement",
    "llm_api_key_env",
    "llm_batch_cancel",
    "llm_batch_fetch",
    "llm_batch_status",
    "llm_batch_submit",
    "llm_config",
    "llm_cross_design",
    "llm_failures",
    "llm_fn",
    "llm_fn_structured",
    "llm_fn_tags",
    "llm_judge",
    "llm_log_disable",
    "llm_log_enable",
    "llm_log_status",
    "llm_logprobs",
    "llm_methods_text",
    "llm_mutate",
    "llm_mutate_structured",
    "llm_mutate_tags",
    "llm_par_resume",
    "llm_parse_batch_tags",
    "llm_parse_structured",
    "llm_parse_structured_col",
    "llm_parse_tags",
    "llm_parse_tags_col",
    "llm_preview",
    "llm_render_messages",
    "llm_replicate",
    "llm_tool",
    "llm_usage",
    "llm_validate_structured_col",
    "log_llm_error",
    "parse_embeddings",
    "reset_llm_parallel",
    "setup_llm_parallel",
    "tokens",
    "tool_calls"
  ],
  "_help": [
    {
      "page": "bind_tools",
      "title": "Bind tools to a config (provider-agnostic)",
      "topics": [
        "bind_tools"
      ]
    },
    {
      "page": "build_factorial_experiments",
      "title": "Build Factorial Experiment Design",
      "topics": [
        "build_factorial_experiments"
      ]
    },
    {
      "page": "call_llm",
      "title": "Call an LLM (chat/completions or embeddings) with optional multimodal input",
      "topics": [
        "call_llm",
        "call_llm.ollama"
      ]
    },
    {
      "page": "call_llm_broadcast",
      "title": "Parallel API calls: Fixed Config, Multiple Messages",
      "topics": [
        "call_llm_broadcast"
      ]
    },
    {
      "page": "call_llm_compare",
      "title": "Parallel API calls: Multiple Configs, Fixed Message",
      "topics": [
        "call_llm_compare"
      ]
    },
    {
      "page": "call_llm_par",
      "title": "Parallel LLM Processing with Tibble-Based Experiments (Core Engine)",
      "topics": [
        "call_llm_par"
      ]
    },
    {
      "page": "call_llm_par_structured",
      "title": "Parallel experiments with structured parsing",
      "topics": [
        "call_llm_par_structured"
      ]
    },
    {
      "page": "call_llm_par_tags",
      "title": "Parallel experiments with tag parsing",
      "topics": [
        "call_llm_par_tags"
      ]
    },
    {
      "page": "call_llm_robust",
      "title": "Robustly Call LLM API (Simple Retry)",
      "topics": [
        "call_llm_robust"
      ]
    },
    {
      "page": "call_llm_stream",
      "title": "Stream a chat completion token by token",
      "topics": [
        "call_llm_stream"
      ]
    },
    {
      "page": "call_llm_sweep",
      "title": "Parallel API calls: Parameter Sweep - Vary One Parameter, Fixed Message",
      "topics": [
        "call_llm_sweep"
      ]
    },
    {
      "page": "call_llm_tools",
      "title": "Call an LLM with tools and run the tool loop",
      "topics": [
        "call_llm_tools"
      ]
    },
    {
      "page": "disable_structured_output",
      "title": "Disable Structured Output (clean provider toggles)",
      "topics": [
        "disable_structured_output"
      ]
    },
    {
      "page": "enable_structured_output",
      "title": "Enable Structured Output (Provider-Agnostic)",
      "topics": [
        "enable_structured_output"
      ]
    },
    {
      "page": "expand_llm_config",
      "title": "Expand an LLM Config Grid",
      "topics": [
        "expand_llm_config"
      ]
    },
    {
      "page": "get_batched_embeddings",
      "title": "Generate Embeddings in Batches",
      "topics": [
        "get_batched_embeddings"
      ]
    },
    {
      "page": "llm_agreement",
      "title": "Agreement across replicated LLM annotations",
      "topics": [
        "llm_agreement"
      ]
    },
    {
      "page": "llm_api_key_env",
      "title": "Declare an API key sourced from an environment variable",
      "topics": [
        "llm_api_key_env"
      ]
    },
    {
      "page": "llm_batch_cancel",
      "title": "Cancel a batch job",
      "topics": [
        "llm_batch_cancel"
      ]
    },
    {
      "page": "llm_batch_fetch",
      "title": "Fetch the results of a batch job",
      "topics": [
        "llm_batch_fetch"
      ]
    },
    {
      "page": "llm_batch_status",
      "title": "Check the status of a batch job",
      "topics": [
        "llm_batch_status"
      ]
    },
    {
      "page": "llm_batch_submit",
      "title": "Submit a batch job to a provider's batch API",
      "topics": [
        "llm_batch_submit"
      ]
    },
    {
      "page": "llm_chat_session",
      "title": "Chat Session Object and Methods",
      "topics": [
        "as.data.frame.llm_chat_session",
        "chat_session",
        "head.llm_chat_session",
        "llm_chat_session",
        "print.llm_chat_session",
        "summary.llm_chat_session",
        "tail.llm_chat_session"
      ]
    },
    {
      "page": "llm_config",
      "title": "Create an LLM configuration (provider-agnostic)",
      "topics": [
        "llm_config"
      ]
    },
    {
      "page": "llm_cross_design",
      "title": "Cross a data frame with LLM configs",
      "topics": [
        "llm_cross_design"
      ]
    },
    {
      "page": "llm_failures",
      "title": "List the rows of an LLM run that failed or were truncated",
      "topics": [
        "llm_failures"
      ]
    },
    {
      "page": "llm_fn",
      "title": "Apply an LLM prompt over vectors/data frames",
      "topics": [
        "llm_fn"
      ]
    },
    {
      "page": "llm_fn_structured",
      "title": "Vectorized structured-output LLM",
      "topics": [
        "llm_fn_structured"
      ]
    },
    {
      "page": "llm_fn_tags",
      "title": "Vectorized LLM with tag extraction",
      "topics": [
        "llm_fn_tags"
      ]
    },
    {
      "page": "llm_judge",
      "title": "LLM-as-a-Judge Evaluation",
      "topics": [
        "llm_judge"
      ]
    },
    {
      "page": "llm_log_enable",
      "title": "Record every LLM call in a local audit log",
      "topics": [
        "llm_log_disable",
        "llm_log_enable",
        "llm_log_status"
      ]
    },
    {
      "page": "llm_logprobs",
      "title": "Extract token log-probabilities from a response",
      "topics": [
        "llm_logprobs"
      ]
    },
    {
      "page": "llm_methods_text",
      "title": "Draft a methods-section paragraph from an LLM run",
      "topics": [
        "llm_methods_text"
      ]
    },
    {
      "page": "llm_mutate",
      "title": "Mutate a data frame with LLM output",
      "topics": [
        "llm_mutate"
      ]
    },
    {
      "page": "llm_mutate_structured",
      "title": "Data-frame mutate with structured output",
      "topics": [
        "llm_mutate_structured"
      ]
    },
    {
      "page": "llm_mutate_tags",
      "title": "Data-frame mutate with XML-like tag output",
      "topics": [
        "llm_mutate_tags"
      ]
    },
    {
      "page": "llm_par_resume",
      "title": "Resume failed parallel LLM calls",
      "topics": [
        "llm_par_resume"
      ]
    },
    {
      "page": "llm_parse_batch_tags",
      "title": "Parse a batched, row-wrapped tag response into per-row field lists",
      "topics": [
        "llm_parse_batch_tags"
      ]
    },
    {
      "page": "llm_parse_structured",
      "title": "Parse structured output emitted by an LLM",
      "topics": [
        "llm_parse_structured"
      ]
    },
    {
      "page": "llm_parse_structured_col",
      "title": "Parse structured fields from a column into typed vectors",
      "topics": [
        "llm_parse_structured_col"
      ]
    },
    {
      "page": "llm_parse_tags",
      "title": "Parse XML-like tags emitted by an LLM",
      "topics": [
        "llm_parse_tags"
      ]
    },
    {
      "page": "llm_parse_tags_col",
      "title": "Parse XML-like tag fields from a column",
      "topics": [
        "llm_parse_tags_col"
      ]
    },
    {
      "page": "llm_preview",
      "title": "Preview a tidy LLM call without spending anything",
      "topics": [
        "llm_preview"
      ]
    },
    {
      "page": "llm_render_messages",
      "title": "Render tidy messages without calling any API",
      "topics": [
        "llm_render_messages"
      ]
    },
    {
      "page": "llm_replicate",
      "title": "Run the same prompt several times per row",
      "topics": [
        "llm_replicate"
      ]
    },
    {
      "page": "llm_tool",
      "title": "Define a tool the model may call",
      "topics": [
        "llm_tool"
      ]
    },
    {
      "page": "llm_usage",
      "title": "Summarize token usage and outcomes of an LLM run",
      "topics": [
        "llm_usage"
      ]
    },
    {
      "page": "llm_validate_structured_col",
      "title": "Validate structured JSON objects against a JSON Schema (locally)",
      "topics": [
        "llm_validate_structured_col"
      ]
    },
    {
      "page": "llmr_response",
      "title": "LLMR Response Object",
      "topics": [
        "as.character.llmr_response",
        "finish_reason",
        "is_truncated",
        "llmr_response",
        "print.llmr_response",
        "tokens"
      ]
    },
    {
      "page": "parse_embeddings",
      "title": "Parse Embedding Response into a Numeric Matrix",
      "topics": [
        "parse_embeddings"
      ]
    },
    {
      "page": "print.llm_config",
      "title": "Print an LLM configuration with the API key masked",
      "topics": [
        "format.llm_config",
        "print.llm_config"
      ]
    },
    {
      "page": "reset_llm_parallel",
      "title": "Reset Parallel Environment",
      "topics": [
        "reset_llm_parallel"
      ]
    },
    {
      "page": "setup_llm_parallel",
      "title": "Setup Parallel Environment for LLM Processing",
      "topics": [
        "setup_llm_parallel"
      ]
    },
    {
      "page": "tool_calls",
      "title": "Extract tool calls from a response",
      "topics": [
        "tool_calls"
      ]
    }
  ],
  "_readme": "https://github.com/asanaei/llmr/raw/HEAD/README.md",
  "_rundeps": [
    "askpass",
    "base64enc",
    "cachem",
    "cli",
    "codetools",
    "cpp11",
    "curl",
    "digest",
    "dplyr",
    "fastmap",
    "future",
    "future.apply",
    "generics",
    "globals",
    "glue",
    "httr2",
    "jsonlite",
    "lifecycle",
    "listenv",
    "magrittr",
    "memoise",
    "mime",
    "openssl",
    "parallelly",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "rappdirs",
    "rlang",
    "stringi",
    "stringr",
    "sys",
    "tibble",
    "tidyr",
    "tidyselect",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "trolley-dilemma-experiment.Rmd",
      "filename": "trolley-dilemma-experiment.html",
      "title": "Frictionless Science: The Trolley Dilemma",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Designing the Experiment",
        "Vectorised Execution with Soft Structuring",
        "Conclusion"
      ],
      "created": "2026-06-05 14:43:57",
      "modified": "2026-06-05 14:43:57",
      "commits": 1
    },
    {
      "source": "about-schema.Rmd",
      "filename": "about-schema.html",
      "title": "Schema-validated output in LLMR",
      "engine": "knitr::rmarkdown",
      "headings": [
        "TL;DR",
        "What the major providers actually support",
        "Why prefer schema output?",
        "Why JSON-only still matters",
        "Quirks you will hit in practice",
        "LLMR helpers to blunt those edges",
        "Minimal patterns (guarded code)",
        "1) JSON mode, no schema (works across OpenAI-compatible providers)",
        "2) Schema mode that actually works (Groq, open model)",
        "3) DeepSeek: force a schema",
        "4) Groq: another structured output example",
        "Defensive patterns (no API calls)",
        "Pro tip: Combine with parallel execution",
        "Choosing the mode",
        "References"
      ],
      "created": "2025-08-27 23:00:09",
      "modified": "2026-06-10 03:54:08",
      "commits": 8
    },
    {
      "source": "quickstart.Rmd",
      "filename": "quickstart.html",
      "title": "LLMR in 5 minutes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Install",
        "2. Set an API key",
        "3. Your first call",
        "4. Apply a model to a data frame",
        "5. Generative calls over a vector",
        "6. Tagged fields and row batching",
        "7. Embeddings",
        "8. Look before you spend, summarize after",
        "Where to go next"
      ],
      "created": "2026-06-09 15:30:30",
      "modified": "2026-06-10 05:50:20",
      "commits": 4
    },
    {
      "source": "presidential_embeddings.Rmd",
      "filename": "presidential_embeddings.html",
      "title": "Presidential Speech Analysis with Embeddings",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Prepare the Text Data",
        "Configure Embedding Model",
        "Generate Embeddings",
        "Analyze Similarity",
        "Expected Results"
      ],
      "created": "2025-05-27 14:30:29",
      "modified": "2026-06-09 15:58:36",
      "commits": 7
    },
    {
      "source": "reproducibility-and-cost.Rmd",
      "filename": "reproducibility-and-cost.html",
      "title": "Reproducibility and cost: logging, replication, caching, batch jobs",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. An audit trail for every call",
        "2. Replication and reliability",
        "3. A methods paragraph you can edit",
        "4. What did it cost?",
        "5. Prompt caching",
        "6. Batch jobs at half price",
        "7. Seeds, versions, and honest limits"
      ],
      "created": "2026-06-10 03:54:08",
      "modified": "2026-06-10 03:54:08",
      "commits": 1
    },
    {
      "source": "chat-basics.Rmd",
      "filename": "chat-basics.html",
      "title": "Simple chat with LLMR",
      "engine": "knitr::rmarkdown",
      "headings": [
        "DeepSeek: deepseek-chat",
        "DeepSeek: deepseek-reasoner",
        "Groq: llama-3.1-8b-instant",
        "Groq: openai/gpt-oss-20b",
        "Using the chat history",
        "Inspect the full conversation",
        "Structured chat in one call (DeepSeek example)"
      ],
      "created": "2025-08-27 23:00:09",
      "modified": "2026-06-05 14:43:57",
      "commits": 4
    },
    {
      "source": "experiments.Rmd",
      "filename": "experiments.html",
      "title": "Small experiment with LLMR",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Build a factorial design",
        "Run unstructured",
        "Structured version"
      ],
      "created": "2025-08-27 23:00:09",
      "modified": "2026-06-05 14:43:57",
      "commits": 4
    },
    {
      "source": "tidy-and-structured.Rmd",
      "filename": "tidy-and-structured.html",
      "title": "Tidy pipelines and structured output",
      "engine": "knitr::rmarkdown",
      "headings": [
        "llm_fn: unstructured (DeepSeek)",
        "llm_fn: unstructured (Groq)",
        "llm_fn_structured: schema-first (DeepSeek)",
        "llm_mutate: unstructured (Groq)",
        "llm_mutate: shorthand syntax",
        "llm_mutate with .structured flag",
        "Soft structured output with tags",
        "Row batching: many rows per call",
        "Preview before you spend, summarize after",
        "llm_mutate_structured: structured with shorthand (Groq)"
      ],
      "created": "2025-08-27 23:00:09",
      "modified": "2026-06-10 03:54:08",
      "commits": 8
    }
  ],
  "_score": 7.475961589192424,
  "_indexed": true,
  "_nocasepkg": "llmr",
  "_universes": [
    "asanaei"
  ],
  "_previous": "0.8.0",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.8.4",
      "date": "2026-06-10T07:15:04.000Z",
      "distro": "noble",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "0aa5897e308b3a31dcd0aaf654207e072e5b2efb1d6307dd11533c217b1cc616",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.8.4",
      "date": "2026-06-10T07:15:08.000Z",
      "distro": "noble",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "50618988f719e0852cd90015626d97c892f890160cb378e79818848c83b8a366",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.8.4",
      "date": "2026-06-10T07:16:59.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "f240af0699e6dcb237688daddc2488ce63179b66359eabe5bdb807d304c0baa6",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.8.4",
      "date": "2026-06-10T07:14:40.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "f1ace6b064aaf7f7b2dc83a883097baeeb0ae4aeddb0fa03984fa5ac43604113",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.8.4",
      "date": "2026-06-10T07:15:03.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "4da2c21cfb77fac110d74159a82b4f6673664c94771bf572019a84aefe5d9c45",
      "status": "success",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.8.4",
      "date": "2026-06-10T07:14:59.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "528177a13899307cb9fb9c7e403d200f24c914f6a996606819a71e380108746f",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.8.4",
      "date": "2026-06-10T07:14:01.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "8d406f4dd02f1da6e076323a4c44093de5bee863d50d206757dccca1a48456a2",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.8.4",
      "date": "2026-06-10T07:14:10.000Z",
      "commit": "d39114d3716ab36b1418ba0c79edeaabbc6d8478",
      "fileid": "fe98b144c8b9ba7baafbc7d17ae050f65af996efc56cbdbc1fff9c689c1c7f43",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/asanaei/actions/runs/27259533986"
    }
  ]
}