OpenWebUI配置优化与连接Pipe函数

继上一篇帖子:

本文是在寻找 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。

效果

参考链接

配置优化

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 部分的数据库密码和数据库链接。

参考自: