OpenWebUi-Pipelines 与 Functions 扩展系统

3.8. Pipelines 与 Functions 扩展系统

Open WebUI 提供了两种扩展机制:Functions(函数)和 Pipelines(管道)。理解它们的区别非常重要,选错了会让简单的事情变复杂。

⚠️ 官方明确建议:对于大多数扩展需求(如添加新的 API 提供商、基础过滤器、简单工具),请使用 Functions,不要使用 Pipelines。Pipelines 仅适用于需要将计算密集型任务卸载到独立进程的场景。

Functions vs Pipelines:如何选择

对比项Functions(推荐优先)Pipelines
部署方式内置于 Open WebUI,无需额外服务需要独立部署 Pipelines 服务
适用场景添加 API 提供商、过滤器、工具、按钮动作计算密集型任务(如大规模数据处理、自定义 ML 推理)
管理方式管理员面板 → 函数管理员面板 → 设置 → Pipelines
开发难度简单,直接在 Web 界面编写较复杂,需要独立服务和 Docker 部署
性能影响在主进程中运行独立进程,不影响主服务

简单判断规则:如果你不确定该用哪个,用 Functions。只有当你明确需要在独立进程中运行计算密集型任务时,才考虑 Pipelines。

Functions(函数)

Functions 是 Open WebUI 内置的扩展机制,直接在管理员面板中管理,无需额外部署。

Functions 的四种类型

类型说明使用场景
Filter在消息发送到模型前/后进行处理内容过滤、格式转换、日志记录
Action在消息气泡上添加自定义按钮一键翻译、一键总结、复制格式化内容
Tool为模型提供可调用的工具网络搜索、数据库查询、API 调用
Pipe添加新的模型端点或 API 提供商接入自定义 API、代理转发

管理 Functions

管理员面板 → 函数(Functions)

在这里你可以:

  • 创建新函数(直接在 Web 编辑器中编写 Python 代码)
  • 从社区导入函数
  • 启用/禁用函数
  • 配置函数参数(Valves)

社区函数库

Open WebUI 社区提供了大量现成的函数,访问 https://openwebui.com/functions/ 浏览和导入。

💡 Functions 的详细开发将在后续章节中介绍。本节重点是让管理员了解如何管理和配置。

Pipelines(仅限计算密集型场景)

如果你确实需要将计算密集型任务卸载到独立进程,才需要部署 Pipelines。

部署 Pipelines 服务

在你的 docker-compose.local.yaml 中添加 Pipelines 服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
pipelines:
image: ghcr.io/open-webui/pipelines:main
container_name: pipelines
ports:
- "9099:9099"
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- pipelines-data:/app/pipelines
restart: unless-stopped

open-webui:
# ... 你的现有配置
environment:
- PIPELINES_URLS=http://pipelines:9099

volumes:
pipelines-data:

启动后访问 http://localhost:9099/docs 验证 Pipelines API 是否正常。

在 Open WebUI 中连接

管理员面板 → 设置 → Pipelines → 填入 http://pipelines:9099 → 点击刷新

管理插件

连接成功后,你可以:

  • 上传 Python 插件文件(.py
  • 启用/禁用插件
  • 配置插件参数(Valves)

Pipelines 插件示例

官方示例仓库:https://github.com/open-webui/pipelines/tree/main/examples

插件名称功能使用场景
Langfuse集成 Langfuse 监控平台大规模使用量监控
LLM Guard防止提示词注入攻击安全防护(计算密集)
Detoxify基于 ML 模型的有害内容过滤内容安全(需要 GPU)

💡 像 Rate Limit(限流)、LibreTranslate(翻译)这类轻量级功能,现在推荐使用 Functions 实现,不再需要部署 Pipelines。