【2025保姆级】Open-WebUI五大功能区首曝!第二篇:工作空间区打造AI协作中 ...

打印 上一主题 下一主题

主题 1664|帖子 1664|积分 4992

一、引言

在首篇《【2025保姆级】Open-WebUI五大功能区首曝!第一篇:管理员面板深度拆解,手把手讲解&设置AI管理中枢》中,我们完成了 Open-WebUI 的 “中枢神经” 设置——从用户权限到模型质检,从安全防线到多源模型接入,你的AI管理背景已具备全局掌控力。但正如当代战争必要 “指挥中枢” 与 “前线作战室” 的协同,工作空间区正是 Open-WebUI 赋予团队的"多模态作战室",让AI协作从单向指令升级为立体化生产力闭环。
从 “单兵作战” 到 “团体军协同”
如果说管理员面板是体系的 “战略指挥部”,那么工作空间区则是AI协作的战术执行层。这里汇聚了文件管理、知识库增强(RAG)、工具链扩展(Tools/Pipes)等焦点模块,支持:


  • 多模态作战: 图文混合输入、多工具链调用,让AI处置处罚复杂任务时"眼观六路,耳听八方";
  • 团队沙盒: 通过权限组分别(如研发组、数据分析组),实现敏感操作隔离与资源安全共享;
  • 流程工业化: 从知识库动态更新到主动化流水线(Pipeline),将零散AI交互固化为可复用的生产流程;
二 、提示词




  • 功能定位: 也叫提示词模版管理区,通过模板化、社区化设计理念,将零散的提示词调试升级为可复用、可协作的工业化体系,彻底解决 “重复造轮子” 与 “团队知识孤岛” 题目。
  • 如何创建: Open-WebUI 提供了三种方式进行创建:

    • 手动创建:点击右上角的 + 号,会进入到下图所示的创建页面,就可以编写标题、命令、提示词内容信息,最后点击 生存并创建 就会创建我们的提示词模版啦;

    • 手动导出导入:在其它体系导出提示词模版(如下图1所示的 .json 文件,格式内容为下图2所示格式),然后在这里导入;


    • 社区导入 在 Open-WebUI 官方社区 探求适合你的提示词模版

      然后点击 Get

      输入你 Open-WebUI 的地址,并点击 Import to WebUI

      它会跳转到你的 Open-WebUI 提示词创建页面,点击 生存并创建 即可完成导入

      注: 访问控制选择 private 只有管理员可见,选择 public 所有人可见;命名规则如下图二所示



  • 如何使用: 在聊天中,使用 / 即可选择创建好的提示词模版

    选择好提示词模版后,直接发送或者填充模版中的必要信息,就可以与大模型交互了

三 、知识库




  • 功能定位: 知识库是团队的 “第二大脑”——它不仅存储结构化数据,更能通过 RAG(检索增强天生)技能实时增强AI的认知边界,让模型答复提升精准度。Open-WebUI 的工作空间区将知识库从传统的 “文件仓库” 升级为多模态、自进化、可编程的记忆中枢,彻底打破 “文档孤岛” 与 “知识断层”。
  • 如何设置: Open-WebUI 提供了三种方式;第一种是 集成 Google 云端硬盘,第二种是 集成 OneDrive,第三种是手动设置,如下:

    • 创建知识库目录: 点击右上角的 + 号,会进入到下图所示的创建页面,就可以编写知识库名、知识库描述、可见性信息,最后点击 创建知识 就创建好我们的知识库目录啦;
      注: 可见性选择 private 只有管理员可见,选择 public 所有人可见;

    • 上传文档: 进入知识库目录,点击右上角的 + 号,选择对应选项(即可选择单个文件,也可选择整个目录,也可同步之前上传过的目录)

      选择好文件后,会进行文档加载过程(这个过程会对文档切片、向量化、存储)

      加载完成后,会提示 文件成功添加;如果文件加载失败,可以删除文件后多试频频

      点击文件,我们也能看到剖析后的文件内容

    • 修改文档: 如果对上述剖析后的文件内容不满足,可以手动修改剖析后的文档内容,最后点击 生存 就完成了文档的修改;

  • 如何使用: 在聊天中,使用 # 即可选择创建好的知识库目录或单个文件。

    使用效果如下:

注: Open-WebUI 专注于做模型集成和插件扩展功能,对于 RAG 功能实在不是很抱负,特别是在非纯文本的文档内容上;目前开源 RAG 项目公认最好最全的是 RAGFlow,背面等 Open-WebUI 的内容讲完,我会专门讲一档 Open-WebUI 集成 RAGFlow 的内容,打造功能、画面双齐备的体系。
四 、工具


4.1 什么是工具?

工具的本质Python 脚本或预封装服务接口,通过 函数调用(Function Calling) 机制与LLM协作。其焦点价值在于:


  • 能力扩展: 突破LLM的纯文本交互限制,支持代码执行、API调用、硬件控制等物理操作(如控制智能家居、调用摄像头)
  • 动态感知: 实时获取外部数据(如股票行情、天气信息),弥补模型静态知识的滞后性
  • 流程主动化: 将多步骤任务(如“爬取网页→数据清洗→天生报告”)固化为原子化工具链
4.2 工作原理


4.3 作用

工具通过提供广泛的功能来支持交互式对话的多样化用例,比方:


  • Web 搜刮: 执行实时 Web 搜刮以获取实时信息。
  • Image Generation: 根据用户提示天生图像。
  • 外部语音合成: 在聊天中提出 API 请求,以集成外部语音合成服务 ElevenLabs,并根据 LLM 输出天生音频。
4.4 工具创建

Open-WebUI 提供了三种方式进行创建:


  • 手动创建:点击右上角的 + 号,会进入到下图所示的创建页面,就可以编写工具ID、工具名称、工具描述、具体代码(可以自己提需求,让 DeepSeek 帮写,然后复制到这里)信息,最后点击 生存 就会创建我们的工具啦;
    注: Open-WebuUI 在工具代码上下文中提供了 Valves 和 UserValves 等参数,如果有必要或者想详细了解的,可以参考官网说明

  • 社区导入 在 Open-WebUI 官方社区 探求你中意的工具,接下来的操作步骤与提示词中的步骤一致;

    这里补充一点,如果无法通过 Import to WebUI 主动创建,可以点击下图一中的 Download as JSON export ,会导出一个下图二所示的 .json 文件,最后通过第三种方式导入也是可以的;

  • 手动导出导入:在其它体系导出工具或通过上述第二种方式导出 .json 文件,然后在这里导入;

注: 访问控制选择 private 只有管理员可见,选择 public 所有人可见;
4.5 工具使用

在聊天中,点击聊天框左下角的 + ,然后根据场景开启符合的工具(可多选),就可在接下来的聊天中使用这些启用的工具;

4.6 使用案例

原始的大模型是不能捕获当前时间的

但在提问的时,如果勾选上获取当前时间的工具,就可以实时获取当前时间啦;


而且通过日记也能看到,在处置处罚聊天时有调用工具进行处置处罚的日记记载

五 、函数


5.1 什么是函数?

函数 是 Open-WebUI 的轻量级插件,通过预定义逻辑与动态执行环境实现三大焦点价值


  • 交互增强: 通过输入输出过滤、上下文修饰,提升用户与模型的沟通效率(如主动补全代码、格式化相应)
  • 流程工业化: 将多步骤任务封装为原子化操作单位,形成可复用的AI工作流(如"数据清洗→模型推理→报告天生"管道)
  • 生态扩展: 支持第三方函数库的即插即用,快速集成 HuggingFace、GitHub 等平台的优质资源
5.2 函数类型

5.2.1 管道函数



  • 功能定位: 构建多模型/多工具协作流水线,形成"虚拟署理";
  • 工作原理: 如下图:

    从图中看出,管道函数,可以干预 调用大模型前的逻辑处置处罚、流式相应中的逻辑处置处罚、最终相应后的逻辑处置处罚
  • 代码框架:
    1. from pydantic import BaseModel, Field
    2. class Pipe:
    3.     class Valves(BaseModel):
    4.         MODEL_ID: str = Field(default="")
    5.     def __init__(self):
    6.         self.valves = self.Valves()
    7.     def pipe(self, body: dict):
    8.         # Logic goes here
    9.         print(self.valves, body)  # This will print the configuration options and the input body
    10.         return "Hello, World!"
    复制代码
5.2.2 过滤器函数



  • 功能定位: 动态修饰输入提示词与输出效果,实现交互优化;
  • 工作原理: 如下图:

    从图中看出,过滤器函数,可以干预 调用大模型前的逻辑处置处罚、流式相应中的逻辑处置处罚、最终相应后的逻辑处置处罚
  • 代码框架:
    1. from pydantic import BaseModel
    2. from typing import Optional
    3. class Filter:
    4.     # Valves: Configuration options for the filter
    5.     class Valves(BaseModel):  
    6.         pass
    7.     def __init__(self):
    8.         # Initialize valves (optional configuration for the Filter)
    9.         self.valves = self.Valves()
    10.     def inlet(self, body: dict) -> dict:
    11.         # This is where you manipulate user inputs.
    12.         print(f"inlet called: {body}")
    13.         return body  
    14.     def stream(self, event: dict) -> dict:
    15.         # This is where you modify streamed chunks of model output.
    16.         print(f"stream event: {event}")
    17.         return event
    18.     def outlet(self, body: dict) -> None:
    19.         # This is where you manipulate model outputs.
    20.         print(f"outlet called: {body}")
    复制代码
注: 通过上述管道函数和过滤器函数的工作原理及代码框架,不难发现,过滤器是将管道函数细分成更小的功能块;管道函数能完成的功能过滤器函数也是可以做到的,反之亦然;但是官方拆成两个函数一定是有意义的(功能职责分别),所以还是保举按照职责分别使用(过滤器函数的职责是对输入输出内容进行敏感词等过滤;管道函数的职责是对本次交互过程进行增强,如集成外部 API、自定义模型行为和创建创新功能等)
5.2.3 操作函数



  • 功能定位: 在 UI 界面添加自定义按钮,扩展用户侧快捷操作;
  • 代码框架:
    1. """
    2. title: Example Action
    3. author: open-webui
    4. author_url: https://github.com/open-webui
    5. funding_url: https://github.com/open-webui
    6. version: 0.1.0
    7. required_open_webui_version: 0.3.9
    8. """
    9. from pydantic import BaseModel, Field
    10. from typing import Optional, Union, Generator, Iterator
    11. import os
    12. import requests
    13. import asyncio
    14. class Action:
    15.     class Valves(BaseModel):
    16.         pass
    17.     def __init__(self):
    18.         self.valves = self.Valves()
    19.         pass
    20.     async def action(
    21.         self,
    22.         body: dict,
    23.         __user__=None,
    24.         __event_emitter__=None,
    25.         __event_call__=None,
    26.     ) -> Optional[dict]:
    27.         print(f"action:{__name__}")
    28.         response = await __event_call__(
    29.             {
    30.                 "type": "input",
    31.                 "data": {
    32.                     "title": "write a message",
    33.                     "message": "here write a message to append",
    34.                     "placeholder": "enter your message",
    35.                 },
    36.             }
    37.         )
    38.         print(response)
    39.         if __event_emitter__:
    40.             await __event_emitter__(
    41.                 {
    42.                     "type": "status",
    43.                     "data": {"description": "adding message", "done": False},
    44.                 }
    45.             )
    46.             await asyncio.sleep(1)
    47.             await __event_emitter__({"type": "message", "data": {"content": response}})
    48.             await __event_emitter__(
    49.                 {
    50.                     "type": "status",
    51.                     "data": {"description": "added message", "done": True},
    52.                 }
    53.             )
    复制代码
5.3 函数创建

Open-WebUI 提供了三种方式进行创建:


  • 手动创建:点击右上角的 + 号,会进入到下图所示的创建页面(默认是过滤器函数的代码框架,如果要改成其它函数,可以复制上面对应的函数代码框架),然后完成相应的代码编写(可以自己提需求,让 DeepSeek 帮写,然后复制到这里),最后点击 生存 就成功创建我们的函数啦;
    注: Open-WebuUI 在函数代码上下文中提供了 Valves 和 UserValves 等参数,如果有必要或者想详细了解的,可以参考官网说明

  • 社区导入 在 Open-WebUI 官方社区 探求你中意的函数,接下来的操作步骤与提示词中的步骤一致;

    注: Open-WebUI 官方社区 提供了非常丰富的函数供大家选择,强烈建议一定去逛逛(可能打开新天下的大门额
    继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表