|
1 | 1 | # ellmer (development version) |
2 | 2 |
|
3 | | -* `parallel_chat()` and `batch_chat()` are no longer experimental. |
4 | | -* New set of `claude_file_()` functions for managing file uploads with Claude (@dcomputing, #761). |
5 | | -* `chat_openai_compatible()` replaces `chat_openai()` as the interface to use for OpenAI-compatible APIs, and `chat_openai()` is reserved for the official OpenAI API. Unlike previous versions of `chat_openai()`, the `base_url` parameter is now required (#801). |
6 | | -* `chat_openai()` now uses OpenAI's responses endpoint (#365, #801). This is their recommended endpoint and gives more access to built-in tools. |
7 | | -* `batch_chat()` now retrieves failed results for `chat_openai()` (#830) |
8 | | -* `batch_chat()` now works correctly for `chat_anthropic()` (#835). |
9 | | -* `chat_anthropic()` and `chat_aws_bedrock()` now default to Claude Sonnet 4.5 (#800). |
| 3 | +* `AssistantTurn`s now have a `@duration` slot, containing the total time to complete the request (@simonpcouch, #798). |
10 | 4 | * `batch_chat()` logs tokens once, on retrieval (#743). |
| 5 | +* `batch_chat()` now retrieves failed results for `chat_openai()` (#830). |
| 6 | +* `batch_chat()` now works correctly for `chat_anthropic()` (#835). |
| 7 | +* `batch_chat_*()` and `parallel_chat_*()` now accept a string as the chat object, following the same rules as `chat()` (#677). |
11 | 8 | * `batch_chat_*()` now works correctly when `chat_openai()` fails to process some conversations (#830). |
12 | | -* `params()` gains new `reasoning_effort` and `reasoning_tokens` so you can control the amount of effort a model spends on thinking. Initial support is provided for `chat_claude()`, `chat_google_gemini()`, and `chat_openai()` (#720). |
13 | | -* `chat_anthropic()` gains new `cache` parameter to control caching. By default it is set to "5m". This should (on average) reduce the cost of your chats.(#584) |
| 9 | +* `batch_*()` have a new `ignore_hash` argument that allows you to opt out of the check if you're confident the difference only arises because ellmer itself has changed. |
| 10 | +* `batch_*()` no longer hashes properties of the provider besides the `name`, `model`, and `base_url`. This should provide some protection from accidentally reusing the same `.json` file with different providers, while still allowing you to use the same batch file across ellmer versions. |
| 11 | +* `chat_anthropic()` and `chat_aws_bedrock()` now default to Claude Sonnet 4.5 (#800). |
| 12 | +* `chat_anthropic()` gains new `cache` parameter to control caching. By default it is set to "5m". This should (on average) reduce the cost of your chats (#584). |
| 13 | +* `chat_claude()` is no longer deprecated and is an alias for `chat_anthropic()`, reflecting Anthropic's recent rebranding of developer tools under the Claude name (#758). `models_claude()` is now an alias for `models_anthropic()`. |
| 14 | +* `chat_databricks()` lifts many of its restrictions now that Databricks' API is more OpenAI compatible (#757). |
| 15 | +* `chat_google_gemini()` and `chat_openai()` support image generation (#368). |
14 | 16 | * `chat_openai()` gains a `service_tier` argument (#712). |
| 17 | +* `chat_openai()` now uses OpenAI's responses endpoint (#365, #801). This is their recommended endpoint and gives more access to built-in tools. |
| 18 | +* `chat_openai_compatible()` replaces `chat_openai()` as the interface to use for OpenAI-compatible APIs, and `chat_openai()` is reserved for the official OpenAI API. Unlike previous versions of `chat_openai()`, the `base_url` parameter is now required (#801). |
| 19 | +* `Chat$get_tokens()` gives a brief description of the turn contents to make it easier to see which turn tokens are spent on (#618). |
15 | 20 | * `Chat$get_tokens()` now also returns the cost, and returns one row for each assistant turn, better representing the underlying data received from LLM APIs. Similarly, the `print()` method now reports costs on each assistant turn, rather than trying to parse out individual costs. |
16 | | -* `chat_*()` functions now use a `credentials` function instead of an `api_key` (#613). This means that API keys are never stored in the chat object (which might be saved to disk), but is instead retrieved on demand as needed. You generally shouldn't need to use the `credentials` argument, but when you do, you should use it to dynamically retrieve the API key from some other source (i.e. never inline a secret directly into a function call). |
17 | | -* `chat_databricks()` lifts many of its restrictions now that the DataBrick's API is more OpenAI compatible (#757). |
18 | | -* Updated pricing data (#790). |
| 21 | +* `Chat$chat_structured()` and friends now only warn if multiple JSON payloads found (instead of erroring) (@kbenoit, #732). |
| 22 | +* `chat_*()` functions now use a `credentials` function instead of an `api_key` (#613). This means that API keys are never stored in the chat object (which might be saved to disk), but are instead retrieved on demand as needed. You generally shouldn't need to use the `credentials` argument, but when you do, you should use it to dynamically retrieve the API key from some other source (i.e. never inline a secret directly into a function call). |
| 23 | +* `interpolate_package()` now provides an informative error if the requested prompt file is not found in the package's `prompts/` directory (#763). |
| 24 | +* `interpolate_package()` now works with in-development packages loaded with devtools (#766). |
| 25 | +* `models_mistral()` lists available models (@rplsmn, #750). |
| 26 | +* `models_ollama()` was fixed to correctly query model capabilities from remote Ollama servers (#746). |
| 27 | +* New set of `claude_file_()` functions for managing file uploads with Claude (@dcomputing, #761). |
| 28 | +* New `schema_df()` to describe the schema of a data frame to an LLM (#744). |
| 29 | +* New `type_ignore()` allows you to specify that a tool argument should not be provided by the LLM when the R function has a suitable default value (#764). |
| 30 | +* `parallel_chat()` and `batch_chat()` are no longer experimental. |
| 31 | +* `parallel_chat()` and friends now have a more permissive attitude to errors. By default, they will now return when hitting the first error (rather than erroring), and you can control this behaviour with the `on_error` argument. Or if you interrupt the job, it will finish up current requests and then return all the work done so far. The main downside of this work is that the output of `parallel_chat()` is more complex: it is now a mix of `Chat` objects, error objects, and `NULL` (#628). |
| 32 | +* `parallel_chat_structured()` no longer errors if some results fail to parse. Instead it warns, and the corresponding rows will be filled in with the appropriate missing values (#628). |
| 33 | +* `parallel_chat_structured()` now returns a tibble, since this does a better job of printing more complex data frames (#787). |
| 34 | +* `params()` gains new `reasoning_effort` and `reasoning_tokens` so you can control the amount of effort a model spends on thinking. Initial support is provided for `chat_claude()`, `chat_google_gemini()`, and `chat_openai()` (#720). |
19 | 35 | * The following deprecated functions/arguments/methods have now been removed: |
20 | 36 | * `Chat$extract_data()` -> `chat$chat_structured()` (0.2.0) |
21 | 37 | * `Chat$extract_data_async()` -> `chat$chat_structured_async()` (0.2.0) |
|
28 | 44 | * `chat_gemini()` -> `chat_google_gemini()` (0.2.0) |
29 | 45 | * `chat_openai(seed)` -> `chat_openai(params)` (0.2.0) |
30 | 46 | * `create_tool_def(model)` -> `create_tool_def(chat)` (0.2.0) |
31 | | -* New `schema_df()` to describe the schema of a data frame to an LLM (#744). |
32 | | -* `chat_google_gemini()` and `chat_openai()` support image generation (#368). |
33 | | -* `batch_*()` no longer hashes properties of the provider besides the `name`, `model`, and `base_url`. This should provide some protection from accidentally reusing the same `.json` file with different providers, while still allowing you to use the same batch file across ellmer versions. |
34 | | -* `batch_*()` have a new `ignore_hash` argument that allows you to opt out of the check if you're confident the difference only arises because ellmer itself has changed. |
35 | | -* Turns now have a `@duration` slot. The slot is `NA` for user turns and a numeric giving the total time to complete the request for assistant turns (@simonpcouch, #798). |
36 | | -* `parallel_chat_structured()` now returns a tibble, since this does a better job of printing more complex data frames (#787). |
37 | | -* `parallel_chat()` and friends now have a more permissive attitude to errors. By default, they will now return when hitting the first error (rather than erroring), and you can control this behaviour with the `on_error` argument. Or if you interrupt the job, it will finish up current requests and then return all the work done so far. The main downside of this work is that the output of `parallel_chat()` is more complex: it is now a mix of `Chat` objects, error objects, and `NULL` (#628). |
38 | | -* `parallel_chat_structured()` no longer errors if some results fail to parse. Instead it warns, and the corresponding rows will be filled in with the appropriate missing values (#628). |
39 | | -* `$chat_structured()` and friends now only warn if multiple json payloads found (instead of erroring) (@kbenoit, #732). |
40 | | -* `interpolate_package()` now works with in-development packages loaded with devtools (#766). |
41 | | -* `Chat$get_tokens()` gives a brief description of the turn contents to make it easier to see which turn tokens are spent on (#618). |
42 | | -* New `type_ignore()` allows you to specify that a tool argument should not be provided by the LLM when the R function has a suitable default value (#764). |
43 | | -* New `models_mistral()` to list available models (@rplsmn, #750). |
44 | | -* `batch_chat_*()` and `parallel_chat_*()` now accept a string as the chat object, following the same rules as `chat()` (#677). |
45 | | -* `interpolate_package()` now provides an informative error if the requested prompt file is not found in the package's `prompts/` directory (#763). |
46 | | - |
47 | | -* `models_ollama()` was fixed to correctly query model capabilities from remote Ollama servers (#746). |
48 | | - |
49 | | -* `chat_claude()` is no longer deprecated and is an alias for `chat_anthropic()`, reflecting Anthropic's recent rebranding of developer tools under the Claude name (#758). |
50 | | - `models_claude()` is now an alias for `models_anthropic()`. |
| 47 | +* Updated pricing data (#790). |
51 | 48 |
|
52 | 49 | # ellmer 0.3.2 |
53 | 50 |
|
|
0 commit comments