跳到主要内容

🛠️ 工具与函数 (Tools & Functions)

⚠️ 关键安全警告

工具 (Tools)、函数 (Functions)、管道 (Pipes)、过滤器 (Filters) 以及流水线 (Pipelines) 会在您的服务器上执行任意 Python 代码。 这是系统本身的设计使然 —— 这正是赋予它们无限威力的根源。然而,这也意味着:

  1. 务必仅从可信赖的来源进行安装。 切勿从未经证实或不可信的渠道导入 Tool 或 Function。恶意代码可能会控制并危害您的整台物理服务器。

  2. 在导入前仔细审核代码。 在从社区安装任何 Tool 或 Function 插件之前,请务必仔细阅读并理解其源码。如果看不懂它具体在执行什么逻辑,请坚决不要安装。

  3. 妥善保护您的数据目录。 您的数据目录(在 Docker 部署中挂载在 /app/backend/data 路径下)包含您的核心数据库、关键配置以及缓存的 Tools/Functions。如果攻击者获得了对该目录的写权限,他们将能够植入恶意代码并在您的服务器上执行。

  4. 严格限制工作区 (Workspace) 的访问权限。 只有百分之百信任的系统管理员才应当被赋予创建、导入或修改 Tools 与 Functions 的权限。除非业务上存在明确要求,否则普通用户不应当被赋予工作区的管理权限。

  5. 定期审计已安装的插件。 定期通过 Workspace(工作区) → Tools(工具)Admin Panel(管理员面板) → Functions(函数) 审核您实例中已安装的所有 Tool 和 Function 插件。

会引发什么严重后果? 恶意编写的 Tool 或 Function 可能会窃取您的核心数据、在后台植入木马病毒、偷偷开采加密货币、将其作为跳板横向渗透您局域网中的其他机器,或者彻底破坏您的 Web UI 运行实例。

一分钟速览 (TL;DR)

  • 工具 (Tools):用于拓宽大语言模型 (LLM) 的能力边界,使其能够主动获取真实世界中的实时数据(如天气预报、实时股票行情等)。
  • 函数 (Functions):用于扩展 Open WebUI 平台本身的系统特性,使您能够为 WebUI 接入全新的大模型提供商(如 Anthropic 或 Google Vertex AI)或优化前端使用体验(如打造自定义工具栏动作按钮或全局消息过滤器)。
  • 流水线 (Pipelines):主要面向那些希望将 Open WebUI 功能解耦为标准 OpenAI API 兼容工作流的高级玩家 —— 其最核心的应用在于将重度计算和高负荷任务从主实例中彻底卸载。

在 Open WebUI 中尝试 Tools 和 Functions 非常简单,因为系统已经在底层为您内置了全部的运行机制!您只需轻轻点击鼠标,便能直接从社区一键导入这些特性插件,完全不需要您编写任何代码或拥有深厚的开发功底。

插件系统的实际能力远比文档所能展示的更为强大

接下来的页面将为您详尽记录并演示完整的插件 API 接口规范:类的结构、生命周期钩子方法、入参要求、事件类型、返回契约,以及每一次流水线管道处理的拦截入口。参考文档是绝对详实和完整的。

但官方文档无法完全罗列出社区开发者实际上用它打造了多少令人惊叹的黑科技。许多社区插件已被用于生成实时流式的 HTML 交互式看板、执行针对单用户的对话消费额度限制、实现自动总结并裁剪替换久远对话的上下文管理器、开发双向可交互的 UI 界面、实现在聊天框里直接运行 MCP 应用,乃至进行防泄密的法治司法水印追踪等等。

当您在考虑向我们提交某项特性请求并感叹“这需要修改系统底层的核心代码”时,请务必先思考它是否能够通过编写一个插件来独立解决。插件系统拥有对完整请求/响应生命周期的拦截权限,并支持持久化状态、用户元数据读取、前端事件发射器(Event Emitter)以及管理员可直接配置的 Valves(阀门)参数系统。在实际开发中,绝大多数听起来必须伤筋动骨去重构底层的需求(如自定义的单点登录逻辑、针对单用户的频次控制、消息响应的后置重排、指定大模型服务商的细粒度路由、消费成本追踪统计、上下文压缩算法等),都可以完全通过编写一个插件来实现,而无需改动一行底层的核心代码。此外,将您写好的插件提交到社区站点中,也能让其他用户无需等待官方发布新版本,便能立刻享受这一成果。

什么是“工具 (Tools)”与“函数 (Functions)”?

让我们首先把 Open WebUI 理解为一个“基石”系统,它提供了与大语言模型 (LLM) 进行各种交互的核心基础架构。但很多时候,您的业务工作流往往需要许多系统开箱即用状态下并不提供的新特性或超能力 —— 这便是**工具 (Tools)函数 (Functions)**闪亮登场的时刻。

工具 (Tools)

工具 (Tools) 是一个令人振奋的功能特性,因为它们允许大语言模型不再局限于单纯处理文本的方寸之间。它们为大模型赋予了原本完全不具备的外部感知与操作能力

工具的应用示例:

假设您在与大模型聊天,并希望它为您提供当前的实时天气信息或最新股市报价。在常规情况下,大模型对此无能为力,因为它的认知全部停留在其训练数据的截止期前。但这正是工具能够帮上忙的地方!

  • 工具就像给大模型外接的插件,模型可以使用它们来主动采集现实世界中的实时数据。例如,一旦开启了“天气预测工具”,模型就可以主动发起互联网访问,抓取实时的天气指标,并将排版好的数据呈现在您的聊天界面中。

简单来说,工具是您赋能给 AI 的超能力,引导它更好地与外界的事物进行联动。通过引入这些工具,大模型能够基于对话的上下文自动“抓取”极其有用的外界信息或执行极度专业化的计算任务。

工具示例(扩展 LLM 的能力范围):

  1. 实时天气趋势预测 🛰️。
  2. 股票行情分析与数据读取 📈。
  3. 航班实时轨迹与状态查询 ✈️。

函数 (Functions)

与大模型在对话执行期间自主调用的工具不同,函数 (Functions) 的职责是帮助您扩展或定制 Open WebUI 平台本身的系统能力。如果说工具是往盘子里添加新的食材,那么函数便是您用来掌控整个后厨的标准作业流程! 🚪

让我们来具体拆解一下:

  • 函数赋予了您调整或添加 Open WebUI 内部核心系统特性的能力。
  • 您并不是在为 LLM 引入某种超能力,而是在扩展和重塑平台的交互界面、运行行为或业务逻辑

举例来说,您可以使用函数来:

  1. 在 WebUI 界面中,无缝接入类似 Anthropic 这样的非原生大模型服务商。
  2. 在工具栏里创建一个自定义快捷动作按钮,用来一键执行某些高频调用的复杂操作。
  3. 部署一个精密的过滤器 (Filter) 函数,用来在所有入站文本中,自动甄别并拦截不当言论或垃圾灌水广告

没有函数,这些进阶定制都无从谈起。但有了 Open WebUI 完善的函数开发框架,扩展这些特性将变得轻而易举!

从何处查找与管理函数

请注意,函数与工具并不放置在同一个管理区域中:

  • 工具 (Tools) 侧重于模型层面的赋能,存放在您的 Workspace(工作区) 标签页中(在该区域您还可以管理自定义模型、Prompt 模板和知识检索库)。如果有管理员授权,普通用户也拥有添加和编辑工具的权限。
  • 函数 (Functions) 侧重于系统级的自定义与重塑,位于系统后台的 Admin Panel(管理员面板) 中。 它们仅允许系统管理员进行配置与维护,以重构所有用户都能看到的平台界面表现或底层拦截行为。

核心差异总结:

  • 工具:是让大模型能够做更多的事情,突破其天然的能力瓶颈(如抓取实时公开数据或基于外部接口完成特定计算)。
  • 函数:是让 WebUI 平台本身能够做更多的事情,例如无缝接入更多模型商或引入更聪明的全局消息过滤拦截机制。

它们在设计上都被高度模块化(可插拔),这意味着您无需花费数小时编写冗长的代码或苦苦调试,直接在社区一键导入即可立刻使用! 🎉


什么是流水线 (Pipelines)?

最后,我们来聊聊流水线 (Pipelines)…… 这听起来是个非常具有技术门槛的专有名词 —— 但先不用为此感到焦虑。

Pipelines 是由 Open WebUI 社区发起的一个核心技术举措,它的使命是让 WebUI 平台上的每一处能力,都能够无缝对接并完全兼容 OpenAI 的标准 API 系统架构。本质上,它们进一步放大了工具 (Tools)函数 (Functions) 所具备的能力上限,并引入了超乎想象的工程灵活性。它能帮助您将一系列极其复杂的系统功能,打包输出为完全兼容 OpenAI 规范的 API 格式。 🧠

但需要指出的是……

除非您在构建非常复杂的企业级分布式架构,否则在大多数日常业务中,您不太需要去碰流水线 (Pipelines)。

  • 谁会用到流水线? 通常是资深系统架构师,或者正在部署非常繁重和复杂生产场景的开发团队。
  • 何时需要流水线? 如果您遇到服务器负载过高,希望将繁重的嵌入计算、语义检索或插件逻辑从 Open WebUI 主服务器上彻底卸载并迁移到另一台专用算力机器上运行(防止主服务被计算挤爆)。

在大多数普通或中级开发场景中,您完全不用为流水线而感到头疼。轻松愉悦地探索 工具 (Tools)函数 (Functions) 为您的 Open WebUI 实例所带来的惊人提升即可!


想要尝试一下吗? 🚀

立即打开您的 Open WebUI 实例,跳往社区生态中心,尝试导入一个类似实时天气查询的工具,或者尝试部署一个能在工具栏上添加快捷操作按钮的函数。动手探索这些精巧的插件,您将真切感受到 Open WebUI 在扩展性与灵活性上是多么的强大与不可思议!

🌟 创意的边界永无止境,保持好奇,尽情探索与实践吧!

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.