Skip to content

chatlas 0.21.0

Choose a tag to compare

@cpsievert cpsievert released this 04 Aug 17:33
· 31 commits to main since this release

New features

  • New ChatBedrock() gives full access to AWS Bedrock's model catalog — Nova, Llama, Mistral, DeepSeek, Qwen, plus the GPT-5 family, Grok 4.3, and Gemma 4 — not just Claude, none of which were previously available through chatlas. It replaces ChatBedrockAnthropic() as the recommended entrypoint; the right request format ("converse", "responses", or "messages") is picked automatically from the model name, or set api explicitly.

Improvements

  • Updated default models to match the latest generation:
    • Anthropic / BedrockAnthropic / Posit: claude-sonnet-5
    • OpenAI / Completions / OpenRouter: gpt-5.6-terra
  • Echoing turns in the console and notebooks got a round of display improvements:
    • Reasoning/thinking content now actually shows up — it used to silently disappear, since it was wrapped in literal <thinking> tags that a markdown renderer treated as an HTML block and dropped. It renders in a collapsible "Thinking" panel (a <details> block in notebooks) that stays open while streaming and collapses once done, and is capped to the most recent lines when long. (#361)
    • Long tool results no longer flood the screen — they collapse/truncate with a clear count of what's hidden, scrolling internally in notebooks beyond a bounded height. (#361)
    • Images from models or tools now render as compact thumbnails instead of raw base64 data.
    • Web search, fetch, and citation activity is now visible too, grouped into a "Searched the web" / "Read the web" panel that marks which sources were actually cited. (#256)
    • All of these size limits are tunable via Chat.set_echo_options() (tool_result_max_lines, tool_result_max_height, thinking_max_lines, image_max_lines, web_activity_max_sources), and can be turned off entirely with None.
  • Registering a built-in tool (tool_web_search(), tool_web_fetch()) with a provider that can't run it now fails immediately with a clear error naming the tool and provider, instead of silently no-op'ing or dying deep inside a later request. (#367)

Bug fixes

  • echo="all" no longer displays tool results twice — once in full as part of the user turn, and again on their own.
  • Chat.set_echo_options(css_styles=) now actually applies in notebooks.
  • Tool names and argument names are now HTML-escaped in notebook/shiny rendering, closing an HTML-injection hole.
  • A tool that reports progress by yielding more than once, or an MCP server that answers a call with several content parts (text plus an image, say), no longer breaks the request.
  • register_mcp_tools_stdio_async() and register_mcp_tools_http_stream_async() no longer fail when an MCP server leaves some tool annotations unset.
  • ContentCitation, ContentToolRequestFetch, and ContentToolResponseFetch now actually render, instead of silently vanishing due to a markdown link-reference parsing quirk.
  • ChatAnthropic() (and ChatBedrockAnthropic()) now bill refusal-fallback turns at the correct (serving model's) rate rather than the originally requested model's, mirroring ellmer's equivalent fix.

Breaking changes

  • ChatGithub() is now defunct: it always raises RuntimeError. GitHub Models was retired on 2026-07-30, so the underlying API no longer works. Use ChatGoogle() (offers a free tier) or ChatPosit() (offers a free trial) instead.