This release comes with improvements to AI integration and support for multiple models. While these changes include several breaking changes to how models are configured (see below), they provide more flexibility for using different models for different tasks.
✨ Highlights
Use different models for different tasks
You can now configure separate models for chat, code editing, and autocomplete in an improved UI (#6018, #6011). Models use provider prefixes like ollama/qwen-coder
or azure/gpt-4o
.
Keyboard shortcuts for AI suggestions
Accept AI suggestions with Tab
, reject with Escape
(#6094).
Tables in AI chat
The chat sidebar now renders markdown tables (#6006).
🚨 Breaking changes
-
Use fully qualified model ids (#6003): Model IDs must now include provider prefixes (e.g.,
gpt-4o
becomesopenai/gpt-4o
). Old IDs will show warnings but still work temporarily.# Before (marimo.toml) [ai.models] chat_model = "gpt-4o" autocomplete_model = "codestral-latest"
# After (marimo.toml) [ai.models] chat_model = "openai/gpt-4o" autocomplete_model = "mistral/codestral-latest"
-
Multiple models for different roles (#6018): Config paths have moved -
ai.open_ai.model
is nowai.models.chat_model
,completion.model
is nowai.models.autocomplete_model
. Thecompletion.base_url
andcompletion.api_key
fields are removed in favor of provider-specific configs.# Before (marimo.toml) [ai.open_ai] model = "gpt-4o" [completion] model = "gpt-3.5-turbo" base_url = "https://api.openai.com/v1" api_key = "sk-..."
# After (marimo.toml) [ai.models] chat_model = "openai/gpt-4o" autocomplete_model = "openai/gpt-3.5-turbo" [ai.openai] api_key = "sk-..."
-
More AI config settings for different providers (#6011): Provider-specific endpoints (
azure
,ollama
,open_ai_compatible
) now have their own config sections.# Before (marimo.toml) [ai.openai] base_url = "https://myazure.openai.azure.com/openai/deployments/gpt-4o" model = "gpt-4o"
# After (marimo.toml) [ai.models] chat_model = "azure/gpt-4o" [ai.azure] base_url = "https://myazure.openai.azure.com" api_version = "2024-02-01"
✨ Enhancements
- Forward
Ctrl+Escape
from CodeMirror to parent elements (#6114) - Add thinking tag and a model card for dropdown (#6106)
- More lenient AI config, and more descriptive error (#6096)
- Add hotkeys to AI completion (#6094)
- Use descriptive link text instead of 'here' (#6090)
- Support -h flag for help in CLI (#6089)
- update logic for determining when AI is enabled (#6081)
- Add AI model dropdown for "Generate with AI" (#6064)
- Patch fetch with more leniant file matching (#6073)
- Handle blob protocol in runtime manager (#6071)
- Update AI provider and conversion functions for async support (#6070)
- Cache sql parsing (#6068)
- Add GitHub as a provider, add OpenAI models (#6044)
- Update dropdown for model select (#6029)
- Non-blocking formatting and auto-export (#6022)
- Better fill-in-the-middle prompting (#6028)
- Add send button for 'Generate with AI' (#6017)
- Fallback to os.environ for AI API keys (#6016)
- Add svgs and improve ui for chat config (#6013)
- Include code for 'Generate with AI' by default & fix flakey test (#6014)
- Support tables in AI chat sidebar (#6006)
- Using
XDG_STATE_HOME
environment variable to support the Linux XDG Base Directory (#6048)
🐛 Bug fixes
- Correct command mode handling for vim vs non-vim modes (#6092)
- Remove tools if empty (#6109)
- Properly detect Linux platform for hotkeys (#6099)
- Check for module type for sql engine (#6103)
- "No outline-solid" -> "No outline found" (#6091)
- Clean up finder/module logic for recursion (#6075)
- Only use max_completion_tokens on reasoning models (#6082)
- Clamp height for prompt input in generate height (#6083)
- Don't do health check in static notebooks (#6079)
- Clean up pytest default name (#6077)
- Stdout and stderr should not be stoppable by users (#5955)
- Ignore table filters from unknown columns (#6069)
- Close completion without going into command mode (#6059)
- Fix borderless cell dividers after Tailwind v4 migration (#6051)
- Fix Tailwind v4 shadow colors (#6050)
- Fix rtc null pointer (#6047)
- Check for array types better in duckdb (#6030)
- Refactor so that sql engines uses the same logic for returning df (#5991)
- Stub and restore cache meta values (#5996)
- Convert time duration to numeric for column explorer (#6087)
📚 Documentation
- Document command mode vim bindings (Mac, Windows, Linux) (#6004)
- Update and fix Spanish README translation (#6036)
- Add dataflow blog, fix reddit link (#6037)
- Add warning about Ollama /v1 endpoint to prevent 404 errors (#6009)
🔬 Preview features
📝 Other changes
- Tools being empty (#6110)
- Revert "add thinking tag and a model card for dropdown" (#6111)
- Update
@marimo-team/codemirror-ai
to v0.3.2 (#6102) - Cleanup docs on mode dropdown (#6095)
- Update dependency mermaid to v11.10.0 [security] (#6078)
- Use
as_series=False
inassert_frame_equal
to compare Narwhals dataframes (#6035) - Update react-aria dependencies (#6040)
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @AldoHdz97, @dmadisetti, @FBruzzesi, @jonathanyale, @Light2Dark, @manzt, @mscolnick, @TDYQ-Liu, @thliang01
And especially to our new contributors:
- @AldoHdz97 made their first contribution in #6036
- @jonathanyale made their first contribution in #6089
- @TDYQ-Liu made their first contribution in #6048
Full Changelog: 0.14.17...0.15.0