继上一篇帖子:
本文是在寻找 OpenWebUI 如何显示 DeepSeek-R1 思维链问题过程中写的,所以以这个问题为例。
简介
Pipeline 是 Open WebUI 的一个插件框架,它具有通用性,且与 OpenAI API 兼容,通过 Pipeline,你可以构建模块化、可定制的工作流,扩展功能,集成独特的逻辑,并用少量的代码创建动态工作流。
选择 Pipeline 的原因:
- 无限的可能性:可以轻松添加自定义逻辑和集成 Python 库,从 AI 代理到家庭自动化 API。
- 无缝集成:与任何支持 OpenAI API 规范的 UI/客户端兼容。
- 自定义 Hooks:构建和集成自定义 pipelines。
你可以用 Pipelines 实现的示例:
- Function Calling Pipeline:轻松处理函数调用并使用自定义逻辑增强你的应用程序。
- Custom RAG Pipeline:实施根据你的需求量身定制的复杂的检索增强生成 pipelines。
- 使用 Langfuse 进行消息监控:使用 Langfuse 实时监控和分析消息交互。
- 速率限制过滤器:控制请求的流动以防止超过速率限制。
- 使用 LibreTranslate 的实时翻译过滤器:将实时翻译无缝集成到你的LLM交互中。
- Toxic Message Filter:实施过滤器以有效检测和处理有害消息。
总之,Pipeline 可以帮助你定制 AI 集成,添加各种功能,例如函数调用、RAG pipeline、消息监控、速率限制、实时翻译和 toxic message filter 等等。
模型:Gemini-2.0-Flash + GoogleSearch。
部署
本文以和 open webui 联用为例,docker-compose.yml
:
# version: '3'
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui-main
ports:
- "8888:8080"
volumes:
- ./data:/app/backend/data
open-webui-pipelines:
image: ghcr.io/open-webui/pipelines:main
container_name: open-webui-pipelines
ports:
- '9099:9099'
volumes:
- ./pipelines:/app/pipelines
注意自己的端口号和路径。
登录 open webui 后台,打开管理员面板 - 设置 - 外部链接,新建连接:
输入本地 IP 和端口,输入密钥,默认密钥为:0p3n-w3bu!
,点击保存。刷新页面,点击 Pipeline 即可看到设置好的连接:
导入函数
可以在 Pipeline 界面直接导入 python 文件,也可以直接通过 GitHub 连接直接下载。
本文使用从 open webui 社区导入,打开 open webui 官方函数社区:Functions | Open WebUI Community 找到 DeepSeek-R1 函数:
点击 GET
,登录 open webui 账号,然后在弹出来的页面中输入自己的地址:
或者也可以直接复制函数的代码,然后在管理员面板 - 函数 - 新建函数中粘贴进去:
函数名称、函数 ID、函数描述都是必填项。
删除所有模板代码,粘贴复制的函数,保存即可。
然后设置函数值,输入对应的模型 api、id 和密钥:
保存之后打开函数启用按钮,在管理员面板 - 设置 - 模型中即可看到启用函数之后的模型:
点击右侧编辑按钮即可设置模型的头像、名称和描述等。
需要注意的是,请务必确保您的 函数来源 和 代码可靠,保存好您的 API Key。
效果
参考链接
Pipelines | Open WebUI
- GitHub issues #9488
- 如何在 Open WebUI 中显示 DeepSeek-R1 的思考过程 | HADB.ME
- DeepSeek R1 Function | Open WebUI Community
- Open WebUI 和 Ollama 本地模型部署:OpenWebUI部署本地模型
配置优化
OpenWebUI 有时候会非常卡,或者启动白屏啥的,这里推荐一个别的大佬优化并且连接pg数据库的配置文件,可以结合自己的进行修改:
# version: '3'
services:
open-webui:
container_name: open-webui-server
image: ghcr.io/open-webui/open-webui:main
restart: always
ports:
- "8888:8080"
volumes:
- ./open-webui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=false
- SEARXNG_URL=false
- ENABLE_REALTIME_CHAT_SAVE=false
- DATABASE_URL=postgres://openwebui:xxxxxx@postgres:5432/openwebui
- DATABASE_POOL_SIZE=10
- DATABASE_POOL_MAX_OVERFLOW=20
- ENABLE_OLLAMA_API=false
depends_on:
- postgres
- ollama
- pipelines
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
ollama:
image: ollama/ollama:latest
container_name: open-webui-ollama
ports:
- "11434:11434"
volumes:
- ./ollama:/root/.ollama
pipelines:
image: ghcr.io/open-webui/pipelines:main
container_name: open-webui-pipelines
ports:
- '9099:9099'
volumes:
- ./pipelines:/app/pipelines
postgres:
container_name: open-webui-postgres
image: postgres:latest
restart: always
environment:
POSTGRES_USER: openwebui
POSTGRES_PASSWORD: xxxxxx
POSTGRES_DB: openwebui
volumes:
- ./postgres_data:/var/lib/postgresql/data
# ports:
# - "5432:5432"
注意修改
xxxxxx
部分的数据库密码和数据库链接。
参考自: