Skip to content

0.5a0

Pre-release
Pre-release

Choose a tag to compare

@simonw simonw released this 03 Nov 23:13
17e51e9
  • Choose a model when starting a new conversation. The model is pinned for the life of that conversation and shown next to its title. The list comes from datasette-llm's agent purpose configuration and can be fetched from /-/agent/api/models; POST /-/agent/api/conversations accepts an optional "model". #40
  • Tag tables, databases and stored queries in chat messages by typing #, with autocomplete. Tags show as pills linking to the Datasette page for that item, and give the model context such as a table's schema or a query's details. Permission checks run as the user sending the message.
  • New register_agent_reference_types() plugin hook, letting plugins add their own types of # reference, with their own search, links, model instructions and context. The search and context functions can be plain or async.
  • New panel next to the chat that shows Datasette pages. The agent opens pages there with the new show_in_panel tool, and same-site links in the chat open there too. On narrow screens a Chat | Panel switch alternates between the two. Pages that refuse to be framed show an error with a link to open them in a new tab. #45
  • New Stop button, which replaces Send while the agent is working. Text the model has already streamed is kept. A tool that has already started is allowed to finish, since it may have written to a database, and the agent stops before its next step. #13, #52
  • Conversations keep running if you navigate away. Coming back to a running conversation now shows what the agent has done so far and continues live, with the Stop button available. Only one turn can run in a conversation at a time. #52
  • Conversations that are still running show an animated indicator in the list at /-/agent. #52
  • The message box stays editable while the agent is working, so you can type your next message. Only the Send button is disabled.
  • Fixed a bug where the system prompt never reached models whose plugins build requests from the message list alone, including llm's OpenAI models, OpenAI-compatible local servers, llm-ollama and llm-mistral. This needs llm 0.37.1 or later. Thanks, Niall Smart. #25
  • The system prompt no longer lists every database and table. It is now the same for every user and schema, which keeps provider prompt caches valid. list_databases_and_tables copes with large instances by returning table counts, and a new list_tables tool lists the tables in one database. #49
  • New describe_query tool for reading the details of a stored query.
  • sql_query now accepts named parameters, as a list of {"name": ..., "value": ...} objects. execute_write_sql uses the same format, while still accepting dictionaries and null. #38
  • sql_query results now include a query_ms timing. #36
  • Links to other sites in the chat now ask for confirmation before they open. Markdown images are no longer rendered.
  • The conversations list at /-/agent now has search and pagination, and a new layout.
  • Removed the "Explore with AI agent" table and database action, its /-/agent/explore/ pages and the datasette-agent-explore permission. #48
  • New /-/patterns/agent page showing the agent's UI controls with sample content. Like Datasette's own /-/patterns, it is available to anyone with the view-instance permission.
  • Datasette's base_url setting is now respected throughout the agent UI.
  • Display fixes: Markdown handles underscores correctly, empty message bubbles are no longer shown, tool names drop their "Tool" prefix, and the "View SQL query" link stays visible below tall result tables.
  • Now requires Python 3.11 or later, and adds support for Python 3.15. Minimum versions are now datasette>=1.0a41, datasette-llm>=0.1a9 and llm>=0.37.1.