OpenWebUi-Pipelines 与 Functions 扩展系统
OpenWebUi-Pipelines 与 Functions 扩展系统
Prorise3.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 | services: |
启动后访问 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。



