Skip to content

tidyprompt 0.2.0

Choose a tag to compare

@lukakoning lukakoning released this 25 Aug 10:26
· 113 commits to main since this release
  • Add provider-level prompt wraps (provider_prompt_wrap()) these are prompt
    wraps which can be attached to a LLM provider object. They can be applied to
    any prompt which is sent through this LLM provider, either before or after
    prompt-specific prompt wraps. This is useful when you want to achieve
    certain behavior for various prompts, without having to re-apply the same
    prompt wrap to each prompt

  • answer_as_json(): support 'ellmer' definitions of structured output
    (e.g., ellmer::type_object()). answer_as_json() can convert between ellmer
    definitions and the previous R list objects which represent JSON schemas; thus,
    'ellmer' and R list object definitions work with both regular and 'ellmer'
    LLM providers. When using an llm_provider_ellmer(), answer_as_json() will
    ensure the native 'ellmer' functions for obtaining structured output are used

  • answer_using_tools(): support 'ellmer' definitions of tools (from
    ellmer::tool()). answer_using_tools() can convert between 'ellmer' tool
    definitions and the previous R function objects with documentation from
    tools_add_docs(); thus, 'ellmer' and tools_add_docs() definitions work
    with both regular and 'ellmer' LLM providers. When using an
    llm_provider_ellmer(), answer_using_tools() will ensure the native 'ellmer'
    functions for registering tools are used.

  • answer_using_tools(): because of the above, and the fact that
    package 'mcptools' returns 'ellmer' tool definitions with
    mcptools::mcp_tools(), answer_using_tools()
    can now also be used with tools from Model Context Protocol (MCP) servers

  • send_prompt() can now return an updated 'ellmer' chat object when using an
    llm_provider_ellmer() (containing for instance the history of 'ellmer' turns
    and tool calls). Additionally fixed issues with how turn history is handled
    in 'ellmer' chat objects

  • send_prompt()'s clean_chat_history argument is now defaulted to FALSE,
    as it may be confusing for users to see cleaned chat histories without
    having actively requested this. If return_mode = "full", $clean_chat_history
    is also no longer included when clean_chat_history = FALSE

  • llm_provider_openai() now supports (as default) the OpenAI responses API,
    which allows setting parameters like 'reasoning_effort' and 'verbosity'
    (relevant for gpt-5). The OpenAI chat completions API is also still supported

  • llm_provider_google_gemini() has been superseded by
    llm_provider_ellmer(ellmer::chat_google_gemini())

  • Add a json_type & tool_type field to LLM provider objects; when
    automatically determining the route towards structured output (in
    answer_as_json()) and tool use (in answer_using_tools()), this can override
    the type decided by the api_type field (e.g., user can use this field to force
    the text-based type, for instance when using an OpenAI type LLM provider but
    with a model which does not support the typical OpenAI API parameters for
    structured output)

  • Update how responses are streamed (with httr2::req_perform_connection(),
    since httr2::req_perform_stream() is being deprecated)

  • Fix bug where the LLM provider object was not properly passed on to
    modify_fn in prompt_wrap(), which could lead to errors when dynamically
    constructing prompt text based on the LLM provider type