← Back to all sparks
T

tidyprompt

INFRA · APIS
Velocity0.0

Prompt Large Language Models and Enhance Their Functionality

An R prompting framework hands its provider plumbing to ellmer and inherits MCP tools

llmprompt-engineeringellmermcpstructured-outputr-package
Current state
tidyprompt composes LLM prompts out of stackable 'prompt wraps' — answer_as_json(), answer_as_category(), answer_using_tools() — and validates what comes back. Its recent history is one decision: stop maintaining a provider layer. llm_provider_ellmer() arrived experimental, then became the path through which structured output, tool calling and streaming are done natively. The newest release adds dataframe and numeric extraction wraps and lets send_prompt() take an ellmer chat object directly.
Where it's heading
Two lines run together. One is catalogue growth — every release adds a wrap for another answer shape. The other is consolidation onto ellmer, and that is where the leverage is: because ellmer tool definitions are what mcptools::mcp_tools() returns, tidyprompt gained access to Model Context Protocol servers without writing an MCP client. Its own Gemini provider is already marked superseded. Note the feed's stamps lie — 0.1.0, 0.2.0 and 0.3.0 were all published within two hours of each other in reverse version order.
Prediction
The remaining first-party providers are the obvious next thing to fold in: the Gemini one is already superseded, and the Ollama and OpenAI providers carry the same duplicated plumbing. Expect the wrap catalogue to keep growing on top of an increasingly ellmer-only base.

Recent moves

  1. 3mo ago

    Dataframe and numeric answer wraps, deeper ellmer sync

    Continues both lines at once: answer_as_dataframe() with row schemas and answer_as_numeric() with range validation extend the wrap catalogue, while send_prompt() accepting an ellmer chat object removes another step between the two packages. Chat history now keeps non-replayable native rows for inspection without resending them to the provider.

    View source ↗
  2. 8mo ago

    Category wraps, soft breaks, and a first ellmer provider

    Despite the low version number this is an incremental release, and it is where llm_provider_ellmer() first appears — experimental, one provider among Ollama, OpenAI and Gemini. Read it against the stamps carefully: this tag was published after 0.2.0 and 0.3.0, not before them.

    View source ↗
  3. 8mo ago

    Provider-level wraps, native ellmer output, and MCP server tools

    ⚡ SPARK

    The release where ellmer stops being one provider among several and becomes the substrate. It also introduces provider_prompt_wrap(), which attaches behaviour to a provider rather than to a prompt — the first new composition axis since prompt wraps themselves.

    View source ↗
  4. 8mo ago

    Streaming callbacks and an image prompt wrap

    A stream_callback hook lets streamed tokens be intercepted as they arrive — the new vignette wires it into a Shiny app — and add_image() attaches images to prompts for multimodal models. Both extend what a prompt can carry rather than changing how providers are reached.

    View source ↗