You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASE_NOTES-v3.md
+66-3Lines changed: 66 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,14 @@ The switch to models.dev greatly expands our model selection to not more than 53
22
22
23
23
Please raise an issue to add support for any missing providers from [models.dev](https://models.dev) you would like to use.
24
24
25
+
### Up to Date Providers
26
+
27
+
If your providers.json is older than 1 day, it will be automatically updated when you run `llms`. You can also use the `--update-providers` command at anytime to update your local `providers.json` with the latest provider list from `models.dev`.
28
+
29
+
It filters and saves only the providers that are referenced in your `llms.json`. Any additional providers you want to use that are not included in `models.dev` can be added to your `~/.llms/providers-extra.json` which will be merged into your `providers.json` when updated.
30
+
31
+
This optimization keeps your local configuration file lightweight by only containing the providers you actually use.
32
+
25
33
## New Model Selector UI
26
34
27
35
With over 530 models from 23 providers now available, discovering and selecting the right model required a complete overhaul from a simple Autocomplete. The Model Selector has been completely redesigned as a full-featured dialog offering:
@@ -146,7 +154,7 @@ The provider configuration is now closely aligned with the `models.dev` npm conf
146
154
By standardizing on `models.dev` definitions, the project now shares a compatible configuration model with other AI tools like **OpenCode**. This includes the standardization of environment variables using the `"env"` property, ensuring simpler and more portable configuration across different tools.
147
155
148
156
## Extensions
149
-
To keep the core lightweight while enabling limitless enhancements, we've introduced a flexible Extensions system. This allows you to add features, integrate with new services, and customize the UI without bloating the base application.
157
+
To keep the core lightweight while enabling limitless enhancements, we've introduced a flexible Extensions system. This allows you to add features, register new provider implementations, extend, replace and customize the UI with your own custom features.
150
158
151
159
### Installation
152
160
Extensions can be installed from GitHub or by creating a local folder:
@@ -157,7 +165,7 @@ Extensions can be installed from GitHub or by creating a local folder:
157
165
Extensions are Python modules that plug into the server lifecycle using special hooks defined in their `__init__.py`:
-**`__install__(ctx)`**: Enhance the server instance (e.g., add routes, register filters). `ctx` gives you access to the `ExtensionContext`.
168
+
-**`__install__(ctx)`**: Enhance the server instance (e.g., add routes, register providers, filters, etc). `ctx` gives you access to the `ExtensionContext`.
161
169
-**`__run__(ctx)`**: Execute custom logic when running in CLI mode.
162
170
163
171
### How it Works (UI)
@@ -170,7 +178,7 @@ Extensions can also include a frontend component.
170
178
// ui/index.mjs
171
179
exportdefault {
172
180
install(ctx) {
173
-
// Register components, add routes, etc.
181
+
// Register or replace components, add routes, etc.
174
182
ctx.components({ MyComponent })
175
183
}
176
184
}
@@ -215,6 +223,61 @@ Remove extension:
215
223
llms --remove system_prompts
216
224
```
217
225
226
+
## Tool Support
227
+
228
+
New in v3 is first-class support for Python function calling (Tools), allowing LLMs to interact with your local environment and custom logic.
229
+
230
+
### 1. Python Function Tools
231
+
232
+
Define tools using standard Python functions. The system automatically generates tool definitions from your function's signature, type hints, and docstrings.
233
+
234
+
```python
235
+
defget_current_time(timezone: str="UTC") -> str:
236
+
"""Get current time in the specified timezone"""
237
+
returnf"The time is {datetime.now().strftime('%I:%M %p')}{timezone}"
238
+
```
239
+
240
+
### 2. Registration
241
+
Register your tools within an extension's `install` method. You can register simple functions or provide manual definitions for complex cases.
242
+
243
+
```python
244
+
definstall(ctx):
245
+
# Automatic definition from function signature
246
+
ctx.register_tool(get_current_time)
247
+
```
248
+
249
+
### 3. UI Management
250
+
-**One-Click Enable/Disable**: Use the new Tool Selector in the chat interface (top-right) to control which tools are available to the model.
251
+
-**Dedicated Tools Page**: View all registered tools and their definitions at `/tools` or via the sidebar link.
252
+
-**Granular Control**: Select "All", "None", or specific tools for each chat session.
253
+
254
+
## Available Tools
255
+
256
+
All available tools are maintained in GitHub [llmspy/repositories](https://github.com/orgs/llmspy/repositories), currently:
257
+
258
+
-`core_tools` - Core System Tools providing essential file operations, memory persistence, math expression evaluation, and code execution
259
+
-`duckduckgo` - Add web search tool capabilities using Duck Duck Go
260
+
-`system_prompts` - Enables and includes collection of awesome system prompts
261
+
262
+
```bash
263
+
llms --add core_tools
264
+
```
265
+
266
+
Installing an extension simply clones it into your `~/.llms/extensions` folder and installs any Python `requirements.txt` dependencies (if any). Inversely, you can remove an extension by deleting the folder from `~/.llms/extensions`.
267
+
268
+
You can also install 3rd Party extensions from GitHub using:
269
+
270
+
```bash
271
+
llms --add <user>/<repo>
272
+
```
273
+
274
+
Or by manually cloning it in your `~/.llms/extensions` folder:
Feel free to submit pull requests to add new extensions to the [llmspy/repositories](https://github.com/orgs/llmspy/repositories) organization to make your extension easily discoverable to everyone.
218
281
219
282
## Optimized `--update`
220
283
The `--update` command provides an optimal way to fetch the latest provider list from `models.dev` but saves only a subset to your local `providers.json`. It filters and saves only the providers that are referenced in your `llms.json`. This optimization keeps your local configuration file lightweight and focused on the providers you actually use.
0 commit comments