跳到主要内容

🛠️ Tools & Functions

⚠️ 重要安全警告

Tools、Functions、Pipes、Filters 和 Pipelines 在你的服务器上执行任意 Python 代码。 这是设计上的特性——也是它们强大的原因。但这也意味着:

  1. 只从受信任的来源安装。 切勿从未知或不受信任的来源导入 Tools 或 Functions。恶意代码可能危害你的整个系统。

  2. 导入前审查代码。 安装任何社区 Tool 或 Function 之前,先审查其源代码。如果你不明白它的功能,就不要安装。

  3. 保护你的数据目录。 data 目录(在 Docker 中挂载为 /app/backend/data)包含你的数据库、配置以及缓存的 Tools/Functions。如果攻击者获得该目录的写入权限,他们可以注入将在你服务器上执行的恶意代码。

  4. 限制 Workspace 访问。 只有受信任的管理员才应有权限创建、导入或修改 Tools 和 Functions。普通用户不应该拥有 Workspace 访问权限,除非明确需要。

  5. 定期审查已安装的插件。 定期通过 Workspace → Tools管理面板 → Functions 检查实例中安装的 Tools 和 Functions。

可能出什么问题? 恶意 Tool 或 Function 可能泄露数据、安装恶意软件、挖取加密货币、横向移动到你网络中的其他系统,或损坏你的实例。

简介

  • Tools 扩展 LLM 的能力,使其能够收集天气、股票价格等实时的现实世界数据。
  • Functions 扩展 Open WebUI 本身的能力,使你能够添加新的 AI 模型支持(如 Anthropic 或 Vertex AI)或改善可用性(如创建自定义按钮或过滤器)。
  • Pipelines 更适合高级用户,他们希望将 Open WebUI 功能转换为 API 兼容的工作流——主要用于卸载重量级处理。

上手 Tools 和 Functions 很容易,因为它们都已经内置在核心系统中!你只需点一下按钮,就能直接从社区导入这些功能,无需编写代码或进行深度的技术操作。

插件能做的远超你的想象——也远超这里展示的内容

后续页面记录了插件系统暴露的每项能力:每个类的结构、每个生命周期方法、每个参数、每种事件类型、每个返回契约、每个接触 pipeline 的钩子。这个界面是完整的

记录的——因为无法记录的——是用它来做什么。那些创意、那些创造性的组合、那些"哦,我没意识到只用一个 inlet filter 和 saveState 桥接就能做到这一点"的瞬间,都存在于社区成员的脑海中,不在这些文档里。

这些是开发者文档。所有原语都在这里;创意在于你(还有已经将系统延伸到核心团队没人预测到的形态的数千个社区插件——实时流式 HTML 仪表板、按用户执行成本控制、摘要替换上下文管理器、双向交互式 UI、完整的嵌入式设计系统、对话内 MCP 应用、取证水印等等)。

如果你在权衡功能请求,心想*"这需要核心改动,"先问问"这能成为插件吗?"* 几乎总是肯定的答案。插件系统拥有完整的请求/响应生命周期、持久化状态、用户元数据、事件发射器以及管理员可配置的 valves 系统。实际上,大多数看起来需要核心改动的功能(自定义认证逻辑、按用户限速、响应后处理、提供商专属路由、成本追踪、上下文管理策略)都可以完全以插件形式实现,无需改动核心代码。在社区站上发布插件,也意味着其他用户能立刻受益,无需等待发布周期。

什么是"Tools"和"Functions"?

让我们先把 Open WebUI 看作一个可以完成许多与大型语言模型(LLM)相关任务的"基础"软件。但有时你需要额外的功能或能力,这些功能不是开箱即用的——这就是 ToolsFunctions 发挥作用的地方。

Tools

Tools 是一个令人兴奋的功能,因为它们允许 LLM 做的不仅仅是处理文本。它们提供了 LLM 自身没有的外部能力

Tool 示例

想象你正在和 LLM 聊天,想让它给出最新的天气或实时的股票价格。正常情况下,LLM 是做不到的,因为它只能基于训练时的知识来回答。这就是 Tools 派上用场的地方!

  • Tools 就像插件,LLM 可以用它来获取真实世界、实时的数据。所以,一旦启用了"天气工具",模型就能上网抓取实时天气数据,并把它展示在你的对话中。

本质上,Tools 就是你赋予 AI 的能力,帮助它与外部世界交互。通过添加这些能力,LLM 就能根据对话上下文"抓取"有用的信息或执行特定的任务。

Tools 的更多示例(扩展 LLM 的能力):

  1. 实时天气预报 🛰️。
  2. 股票价格查询 📈。
  3. 航班追踪信息 ✈️。

Functions

Tools 由 AI 在对话过程中使用,而 Functions 则帮助扩展或定制 Open WebUI 本身的能力。想象一下,Tools 就像给菜肴添加新食材,Functions 则是你用来控制厨房的流程!🚪

具体来说:

  • Functions 让你可以在 Open WebUI 内部调整或添加功能
  • 你并不是给 LLM 赋予新能力,而是在扩展平台自身的界面、行为或逻辑

例如,你可能想:

  1. 在 WebUI 中添加像 Anthropic 这样新的 AI 模型。
  2. 在工具栏里创建一个自定义按钮,用来执行某个常用命令。
  3. 实现一个更好的 filter 函数,从输入文本中过滤掉不合适的或垃圾信息

没有 Functions,这些想法都难以落地。但借助 Open WebUI 中的这套框架,你可以轻松扩展这些功能!

在哪里找到和管理 Functions

Functions 与 Tools 不在同一位置。

  • Tools 关于模型访问,位于你的 Workspace 标签页(在那里你添加模型、提示词和知识集合)。如果获得授权,用户可以添加它们。
  • Functions 关于平台定制,位于管理面板。 它们只能由想要为所有用户扩展平台界面或行为的管理员配置和管理。

差异小结:

  • Tools 让 LLM 能在自身能力之外做更多事情(例如获取实时信息或基于外部数据执行自定义任务)。
  • Functions 让 WebUI 本身做更多事情,比如添加新的 AI 模型或用更聪明的方式过滤数据。

两者都被设计成可插拔的,意味着你只需在社区点一下鼠标,就能轻松把它们导入到自己的系统里!🎉 你不需要花几个小时去写代码或折腾它们。

什么是 Pipelines?

接下来,是 Pipelines… 这里听起来可能有些技术门槛——但别被吓到。

Pipelines 是 Open WebUI 的一项计划的一部分,目标是把 WebUI 的每一块能力都做成与 OpenAI 的 API 系统互操作。本质上,它在 ToolsFunctions 已经能做到的事情之上又向前推进了一步,带来了更大的灵活性。它允许你把功能转成与 OpenAI API 兼容的格式。🧠

但关键在于…

除非你在处理非常高级的场景,否则大概率用不到 pipelines。

  • Pipelines 是给谁用的? 通常是专家或正在处理更复杂用例的人。
  • 什么时候需要它? 当你想把处理从主 Open WebUI 实例上卸载到另一台机器上(避免压垮主系统)时。

在大多数情况下,作为初学者甚至是中级用户,你完全不需要担心 pipelines。专心享受 ToolsFunctions 为你的 Open WebUI 体验带来的便利就行!

想要尝试?🚀

进入 Open WebUI,前往社区部分,尝试导入像天气更新这样的工具,或者也许通过 Function 向工具栏添加新功能。探索这些工具将向你展示 Open WebUI 可以有多强大、多灵活!

🌟 总有更多东西可以学习,所以保持好奇心,继续探索!

本内容仅供参考,不构成任何保证、担保或合同承诺。Open WebUI 按“现状”提供。请参阅您的许可协议 以了解适用条款。