开源 ChatGPT WebUI 整合了 530+ 模型、MCP、RAG、图文音频生成,为开发者提供统一的多功能 AI 交互平台。
主要版本更新,重点聚焦于可扩展性、扩展提供商支持以及增强用户体验。
以可扩展性为核心,即时访问来自 24 个提供商的 530 多个模型:
有关通过 Docker 或源码运行的方式,请参阅安装文档。
为了显著增加可用模型数量,一项重大变更是改用 models.dev 的开放提供商和模型目录,该目录同样由 OpenCode 使用和维护。
llms.json 提供商配置现在是 models.dev/api.json 的超集,其定义会被合并,因此只需使用 "enabled": true 即可启用提供商,并继承来自 models.dev 的配置。
切换到 models.dev 后,模型选择范围大幅扩展至来自 24 个不同提供商的 530 多个模型,其中包括对以下内容的新支持:
不兼容 OpenAI 的 LLM 和图像生成提供商在 providers 扩展中维护,并使用 ctx.add_provider() API 注册。这里包含多种不同的提供商实现,以充分利用各提供商提供的功能,例如 Anthropic Messages API 中的交错思考支持,它使所有 Claude 和 MiniMax 模型都能在工具调用之间进行推理,从而提升智能体性能。
这份持续维护的可用提供商和模型列表每天都会自动更新到你的 providers.json 中,也可以通过以下方式手动更新:
作为一种优化,只会保存你的 llms.json 中引用的提供商。如果你想使用 models.dev 中未包含的其他提供商,可以将其添加到 ~/.llms/providers-extra.json,每次更新时,它们都会合并到你的 providers.json 中。
这样,只包含实际可用的提供商,使你的本地配置文件保持轻量。
按 ID 启用提供商——所有配置都会自动继承:
更多信息请参阅配置文档。
现在已有来自 24 个提供商的 530 多个模型可供使用,因此发现并选择合适的模型需要彻底改造。模型选择器已被完全重新设计为功能完整的对话框,提供:
你还可以快速启用或禁用提供商,自定义可用模型:
更多信息请参阅模型选择器文档。
llms.py 已从头重写,并将可扩展性作为核心理念。现在,所有主要的 UI 和服务端功能都通过公共客户端与服务端扩展 API,在各自封装功能之上分层构建。
扩展只是一些文件夹,可以使用公共客户端和服务端扩展 API 同时添加服务端和 UI 功能。内置功能本身也只是仓库 llms/extensions 文件夹中的扩展,可以通过将它们添加到本地 ~/.llms/extensions 文件夹中来禁用或覆盖。为尽量避免臃肿,只有通常有用且不需要额外依赖的功能才会作为内置扩展提供。
llms 支持从任意 GitHub 仓库安装和卸载扩展。为了提升可发现性,非内置扩展维护在 github.com/llmspy 组织的仓库中,也欢迎任何人贡献自己的仓库,以提高其可发现性。
UI 组件现在作为全局 Vue 组件进行注册和引用。你可以通过注册同名 Vue 组件轻松替换它们,具体方式可参考 xmas 扩展示例。
这种方式让 main.py 能够在单个文件中保留精简的函数式核心,同时仍然具备完全可扩展性,并为快速开发新功能奠定基础——无论这些功能来自核心团队,还是外部第三方扩展——使社区能够以此前未曾预料的方式扩展 llms.py。
对于要求最小占用空间的部署,自定义构建文档介绍了如何创建仅包含所需特定扩展的定制发行版——非常适合仅使用 CLI 或轻量级 API 服务器的部署场景。
为了在保持核心轻量的同时支持无限增强,我们实现了一套受 ComfyUI Custom Nodes 启发的灵活扩展系统。只需添加新的扩展文件夹,就能添加新功能、页面和工具栏图标,注册新的提供商实现,以及使用自己的自定义功能扩展、替换和定制 UI。
列出可用扩展:
安装扩展:
安装第三方扩展:
列出已安装的扩展:
扩展可以从 GitHub 安装,也可以通过创建本地文件夹来安装:
本地:只需在 ~/.llms/extensions/my_extension 创建一个文件夹。
GitHub:将扩展克隆到 ~/.llms/extensions,例如:
更多详情请参阅扩展文档。
扩展是 Python 模块,通过其 __init__.py 中定义的特殊钩子接入服务器生命周期:
ctx 参数提供对 ExtensionContext 的访问。
更多详情请参阅服务端扩展文档。
扩展也可以包含前端组件:
ui 文件夹/ext/<extension_name>/* 提供服务ui/index.mjs 文件。它是入口点,并且必须导出一个 install 函数:更多详情请参阅 UI 扩展文档。
xmas 扩展示范了这些能力,它利用扩展 API 为 llms.py 增添了一抹圣诞气息。它使用 __install__ 注册 API 端点,并为其 UI 功能注册一个 UI 扩展。
xmas 的所有 UI 功能都在其 ui/index.mjs 中实现。它通过注册同名组件覆盖默认的 Brand 和 Welcome 组件,例如:
同时更改主页和左上角的品牌标识,为每个页面的标题增添节日气息:
它还演示了如何在左侧边栏添加一个新图标,用于打开其自定义的 Xmas 页面组件,以及如何添加一个顶部面板组件,用于显示其“Ask Santa”入口:
点击查看完整尺寸
点击查看完整尺寸
Xmas 页面会调用在其 __install__ 钩子中注册的自定义 API 端点,以返回自定义的节日问候。与此同时,当其顶部面板打开时,该面板会修改聊天请求,添加一条 Santa 系统提示词,这足以实现其“Ask Santa”功能。
像 Nano Banana 的 gemini-2.5-flash-image 这样的智能生成模型在这里表现得格外出色,因为它们能够用丰富、详尽的回答和图像输出来回答孩子们的问题。
gemini 扩展为管理 Google Gemini 的 File Search Stores 提供了完整解决方案,可实现 RAG(检索增强生成)工作流,包括自动上传文档、分类组织,以及本地数据库与 Gemini 云存储之间的双向同步。
你可以在 File Stores 中构建自己的知识库,并可选择按类别进行组织,然后查询这些内容,用自己的数据为 AI 对话提供依据——无论是在单个文档、一组相关文档的类别,还是整个文件存储范围内进行搜索。
通过 CLI 安装 gemini 扩展:
之后,你便可以点击侧边栏中的 Gemini 图标,打开 Gemini 扩展页面来管理文件存储。
询问文件存储:与某个文件存储的整个知识库聊天
询问类别:将聊天聚焦于文件存储中的特定类别
询问文档:与单个特定文档聊天
你可以将文件拖放到上传区域,或点击打开文件选择器来上传文档。上传前输入类别名称,即可将上传内容整理到类别文件夹中。
文档会由后台工作线程通过数据库队列异步处理,因此你可以在文档被索引期间继续工作。当新文档上传时,工作线程会自动启动,并高效地处理批量操作,不会阻塞 UI。
上传文档后,你可以启动与你的数据的上下文 RAG 聊天会话。每个会话都预配置了 Gemini 模型和 file_search 工具来查询你选定的文件存储、类别或文档——如下面的元数据示例所示,查询该 v3 文档的最佳特性:
用于回答你的查询的基础来源会显示在每条聊天回复的下方,让你能够验证和探索源文档。
详见 Gemini 扩展文档以获取完整使用说明。
此版本还包括对 Python 函数调用(Tools)的一级支持,允许 LLM 与你的本地环境和自定义功能交互。
工具可以使用标准 Python 函数定义,其工具定义可以从函数的签名、类型提示和文档字符串中隐式定义:
注册函数调用工具
工具可以在扩展的安装钩子中使用 ctx.register_tool 进行注册:
如果没有指定组,工具会注册到默认的自定义组下,或者你可以在你首选的名称下对其进行分组:
当需要更精细的配置时,可以使用显式工具定义,例如:
一键启用/禁用:使用右上角的工具选择器来控制每个请求使用哪些工具
精细控制:为每个聊天会话选择"全部"、"无"或特定工具
专用工具页面:在 /tools 或通过侧边栏查看所有注册工具及其定义
fast_mcp 扩展将 Model Context Protocol (MCP) 支持引入 llms.py,让你能够使用 FastMCP Python Framework 扩展 LLM 功能,集成多种外部工具和服务。
标准化工具访问:无缝连接到任何兼容 MCP 的服务器(Node.js、Python 等)
动态发现:自动发现并注册配置服务器公开的所有工具
并行发现:所有配置的 MCP 服务器会并发发现,以实现快速启动
UI 管理:直接从工具页面添加、编辑和管理 MCP 服务器
点击查看完整尺寸
点击查看完整尺寸
MCP 服务器通过 mcp.json 文件配置。默认情况下,Anthropic 的 Git MCP Server 已预配置:
直接从 UI 添加、编辑或移除 MCP 服务器:
点击查看完整尺寸
点击查看完整尺寸
MCP 工具可以直接从工具页面执行,或在聊天会话期间由 LLM 调用:
点击查看完整尺寸
点击查看完整尺寸
包含 HTML 内容的工具输出会在沙箱化 iframe 内渲染,让你能够与富文本内容交互,甚至玩游戏:
详见 MCP 支持文档以获取完整配置和使用详情。
对于 Omarchy 用户,Omarchy MCP 使 AI 助手能够管理主题——包括列表、切换、预览、安装和移除来自 Omarchy 桌面环境的主题。
内置的 core_tools 扩展为 LLM 提供与其环境交互、执行计算和管理持久数据的基本功能。
get_current_time - 获取 ISO-8601 格式的当前时间。
calc - 计算数学表达式。支持算术、比较、布尔运算符和常见数学函数。
LLMS 包括一套工具,用于在沙箱环境中执行各种语言的代码。这些工具旨在让智能体安全地运行脚本、执行计算和验证逻辑。
run_python(code) - 执行 Python 代码。
run_javascript(code) - 执行 JavaScript 代码(使用 bun 或 node)。
点击查看完整尺寸
点击查看完整尺寸
run_typescript(code) - 执行 TypeScript 代码(使用 bun 或 node)。
run_csharp(code) - 执行 C# 代码(使用 dotnet run 配合 .NET 10+ 单文件支持)。
点击查看完整尺寸
点击查看完整尺寸
内置的 computer 扩展 filesystem.py 工具提供了 Anthropic 的 Node.js Filesystem MCP Server 工具的原生 Python 实现,允许 LLM 以安全且受控的方式与本地文件系统交互,仅读取、写入和搜索允许的文件和目录。
read_text_file - 读取文件的完整内容为文本
read_media_file - 读取图像或音频文件
read_multiple_files - 同时读取多个文件
write_file - 创建新文件或覆盖现有文件(请谨慎使用)
edit_file - 使用高级模式匹配和格式化进行选择性编辑
create_directory - 创建新目录或确保其存在
list_directory - 列出目录内容,使用 [FILE] 或 [DIR] 前缀
list_directory_with_sizes - 列出目录内容,使用 [FILE] 或 [DIR] 前缀,包括文件大小
move_file - 移动或重命名文件和目录
search_files - 递归搜索匹配或不匹配特定模式的文件/目录
directory_tree - 获取目录内容的递归 JSON 树结构
get_file_info - 获取详细的文件/目录元数据
list_allowed_directories - 列出服务器被允许访问的所有目录
内置的 computer 扩展将 AI 智能体转变为自主的计算机操作员。基于 Anthropic 的计算机使用工具,它使智能体能够看到你的屏幕、控制鼠标和键盘、执行 shell 命令和编辑文件——就像一个坐在电脑前的人类。
这解锁了传统基于 API 的工具无法实现的强大功能:
视觉验证:确认代码实际上能在浏览器中正确呈现
桌面自动化:控制任何 GUI 应用程序——网络浏览器、IDE、终端
端到端工作流:在单个任务中链接多个应用程序
遗留应用程序:自动化缺乏 API 的软件
例如,智能体可以编写 web 应用程序、打开浏览器并捕获屏幕截图来证明它能工作:
详见计算机使用文档以获取完整使用详情。
由于某些核心工具本身特别有用,已为 calc 工具添加了专用 UI,支持计算包括算术、比较、布尔运算符、math.* 函数和常数以及 Python 列表推导式的数学 Python 表达式
🖥️ UX 友好的界面 - 清爽、现代、响应式 UI,支持深色模式
💾 持久历史记录 - 计算自动保存到 localStorage,在会话间保留
⚡ 一键交互 - 点击历史记录项目即时加载表达式并复制到剪贴板
⌨️ 免键盘访问 - 数字、运算符、常数和数学函数的完整 UI 按钮
🐍 Python 数学支持 - 完全访问 Python 的数学库,包括三角、统计等
🛡️ 安全评估 - 基于 AST 的评估器防止任意代码执行,确保计算安全
虽然 run_python 工具提供了在沙箱中运行独立 Python、JavaScript、TypeScript 和 C# 代码的草稿板。
UI 使用 CodeMirror 作为代码编辑器,提供更好的用户体验,包括语法高亮、代码补全和其他类似 IDE 的功能来编写代码。
运行 Python、JavaScript、TypeScript 和 C# 程序
点击查看完整尺寸
点击查看完整尺寸
点击查看完整尺寸
点击查看完整尺寸
UI 使用 CodeMirror 作为代码编辑器,提供更好的用户体验,包括语法高亮、代码补全和其他类似 IDE 的功能来编写代码。
详见运行代码 UI 文档以获取更多信息。
KaTeX 数学排版
katex 扩展使用 KaTeX 在 AI 响应中实现 LaTeX 数学表达式的精美呈现。它自动与 markdown 解析器集成,以内联和块级格式呈现数学方程。
快速渲染:使用 KaTeX 高性能渲染数学表达式。
内联数学:使用 $ 或 $$ 分隔符在文本内呈现数学。
块级数学:使用跨多行的 $ 或 $$ 分隔符在其自己的块中呈现复杂方程。
自动集成:自动扩展应用程序中使用的 marked 解析器。
流行的数学表达式
点击查看完整尺寸
基本数学表达式
点击查看完整尺寸
图像生成支持
与文本生成不同,不同提供商之间没有标准的图像生成 API——每个都需要自定义实现。尽管需要额外的工作量,现在通过 UI 和 CLI 提供了无缝的图像生成支持,内置集成包括:
首先从支持图像生成的模型选择器中选择图像生成模型:
选择图像生成模型后,聊天提示将显示选项以指定生成的图像要使用的宽高比:
使用 --out image 修饰符生成图像:
这部分使用 llms.json 中的 out:image 聊天模板来处理图像生成请求。返回前,所有资源都被保存到缓存,并返回其本地路径和 HTTP URL,例如:
通过指定模型的 ID 或名称来使用任何支持图像生成的模型:
音频生成是一项新兴功能,提供商支持有限。目前通过 UI 和 CLI 的文本转语音生成仅支持 Google 的最新 TTS 模型:
通常你可以从模型选择器中选择音频生成模型来找到支持音频生成的模型:
但尽管 models.dev 列出了这些模型能够生成音频,目前只有 Gemini 的 TTS 模型通过 Gemini API 支持音频生成,因为阿里巴巴暂不支持音频模态。
在 UI 和命令行中都可用,使用 --out audio:
音频文件被保存在本地,可通过 HTTP URL 访问:
从命令行:
从浏览器:运行 llms --serve 8000 服务器以在浏览器中播放 URL。
图库扩展拦截所有生成的图像、音频和文件资源,以及上传的文件,存储在 ~/.llms/cache 文件存储中,其元数据保存在 ~/.llms/user/default/gallery/gallery.sqlite 的 SQLite 数据库中。
提供专用 UI 用于快速浏览和导航生成的图像/音频文件,包括用于全尺寸查看的灯箱预览器:
系统提示词支持被重构为可替换的 system_prompts 扩展,该扩展为 AI 请求配置了一个包含 200+ 个精心策划的系统提示词库,可从 UI 中选择。
你可以在以下位置为所有匿名用户维护自己的系统提示词库:~/.llms/user/default/system-prompts.json
或对于已登录用户:~/.llms/user/<github-user>/system-prompts.json
JSON 文件只需包含名称和其系统提示词的数组,例如:
浏览下面可用系统提示词的完整集合:
另一项重大变化是从客户端 IndexedDB 存储迁移到强大的服务器端 SQLite 数据库。这种架构转变确保了更好的数据一致性和改进的性能,可实现并行执行和多设备访问聊天历史。
为了保持数据库高效和便携,二进制资源(图像、音频等)不直接存储在 SQLite 数据库中。相反,所有生成的资源都存储在 ~/.llms/cache 的本地文件系统缓存中,只有引用这些资源的相对 URL 被存储在数据库中。
为了在不需要复杂锁定机制的情况下确保数据完整性和高性能,系统利用单个后台线程来执行对数据库的写操作。这种设计改进了并发处理,消除了高负载场景中的数据库锁定问题。
启用身份验证后,会自动强制执行数据隔离。所有核心表(包括线程和请求)都限定在已认证用户的范围内,确保用户只能访问自己的数据。
为生成的资源以及上传的图像和文件实现了新的缓存系统,现在持久化到 ~/.llms/cache,在消息和会话中保持它们。
高效存储:只有缓存引用与聊天消息一起存储
持久访问:图像在页面重新加载后仍可在预览和下载中访问
自动管理:系统透明地处理文件存储和服务
现在所有持久化都是服务器端的,要转移或备份你的配置、扩展和聊天历史,你只需复制你的 ~/.llms 文件夹。
所有服务器扩展功能,包括工具、自定义提供商、数据库持久化以及图像/音频生成,都可通过命令行完全访问,使 llms.py 成为强大的基于终端的 AI 助手。
所有已注册的工具在 CLI 模式中自动可用。使用 --tools 标志启用特定工具:
直接从命令行生成图像和音频:
所有生成的媒体都自动保存到 ~/.llms/cache,元数据持久化到 SQLite。
所有 CLI 交互都自动持久化到 ~/.llms/user/app/app.sqlite,包括:
聊天线程和消息
工具调用和结果
生成的资源和文件引用
用户偏好和设置
确保你的对话历史从 CLI 和 Web UI 都可保留和访问。
启动 Web UI 同时保持完整的 CLI 访问:
有关更多详情,请参阅 CLI Docs。
llms.py 祝你节日快乐!🎄
llms.py 从头开始重建为可扩展平台,我们希望培养一个蓬勃发展的社区扩展生态系统,开发者可以分享创新解决方案,并以我们还未想象过的方式扩展 llms.py。
由于 llms.py 仍在积极开发中,我们欢迎你对任何能更好地支持第三方扩展和帮助培育这个不断增长社区的功能的反馈。
宣布 llms.py v4 - 最新主要版本,包含众多新功能和更新