agentic_huge_data_base / wiki
页面 Open WebUI · 19.3 提示词与工具管理·DeepWiki 中文全文译文

19.3 · 提示词与工具管理(Prompts and Tools Management)

多模型对话工作台与知识应用入口 · 本章是 Open WebUI DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Open WebUI 章节19.3 状态全文译文 模块工具、记忆与模型调用、界面与交互、频道、笔记与协作、系统架构
源码线索
  • backend/open_webui/models/files.py
  • backend/open_webui/models/knowledge.py
  • backend/open_webui/models/prompt_history.py
  • backend/open_webui/models/prompts.py
  • backend/open_webui/models/tools.py
  • scripts/prepare-pyodide.js
  • src/lib/apis/prompts/index.ts
  • src/lib/components/ImportModal.svelte
  • src/lib/components/admin/Functions.svelte
  • src/lib/components/admin/Functions/FunctionEditor.svelte
模块标签
  • 工具、记忆与模型调用
  • 界面与交互
  • 频道、笔记与协作
  • 系统架构
  • 检索、召回与知识系统

中文译文

提示词与工具管理(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/19.3-prompts-and-tools-management
翻译时间:2026-06-09T16:12:38.290Z
翻译模型:deepseek-chat
原文字符数:10513
项目:Open WebUI (open-webui)

---

提示词与工具管理

相关源文件

以下文件用于生成此 Wiki 页面:

  • backend/open_webui/models/files.py
  • backend/open_webui/models/knowledge.py
  • backend/open_webui/models/prompt_history.py
  • backend/open_webui/models/prompts.py
  • backend/open_webui/models/tools.py
  • scripts/prepare-pyodide.js
  • src/lib/apis/prompts/index.ts
  • src/lib/components/ImportModal.svelte
  • src/lib/components/admin/Functions.svelte
  • src/lib/components/admin/Functions/FunctionEditor.svelte
  • src/lib/components/workspace/Knowledge.svelte
  • src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
  • src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte
  • src/lib/components/workspace/Models.svelte
  • src/lib/components/workspace/Prompts.svelte
  • src/lib/components/workspace/Prompts/PromptEditor.svelte
  • src/lib/components/workspace/Skills/SkillEditor.svelte
  • src/lib/components/workspace/Tools.svelte
  • src/lib/components/workspace/Tools/ToolkitEditor.svelte
  • [src/routes/(app)/workspace/prompts/[id]/+page.svelte](src/routes/(app)/workspace/prompts/[id]/+page.svelte)
  • src/routes/(app)/workspace/prompts/create/+page.svelte/workspace/prompts/create/+page.svelte)
  • static/pyodide/pyodide-lock.json

Open WebUI 的工作区提供了一个集中式界面,用于管理系统在原始模型推理之外的"智能"和"能力"。这包括提示词库(允许用户保存复杂系统指令并进行版本管理)和工具/函数系统(使模型能够通过基于 Python 的扩展与外部数据交互或执行代码)。

1. 提示词库管理

提示词库允许用户创建、共享和版本化管理可复用的提示词模板。这些提示词可以在聊天界面中使用命令前缀(通常是 /)来调用。

1.1 数据结构与 API

提示词由后端的 Prompt 模型定义,并在创建时通过 PromptForm 进行管理。

字段类型描述
commandstring唯一触发命令(例如 translatebackend/open_webui/models/prompts.py:29
namestring提示词的显示名称 backend/open_webui/models/prompts.py:31
contentstring实际的提示词文本 backend/open_webui/models/prompts.py:32
access_grantslist用于共享的 RBAC 设置 backend/open_webui/models/prompts.py:55
version_idstring指向 prompt_history 中当前生产版本的引用 backend/open_webui/models/prompts.py:37
1.2 提示词生命周期流程

Prompts.svelte 中的管理界面使用 getPromptItems API 处理列表展示、筛选和 CRUD 操作 src/lib/components/workspace/Prompts.svelte:82-93

图示:提示词创建与存储流程

sequenceDiagram
    participant U as "用户(UI)"
    participant PE as "PromptEditor.svelte"
    participant API as "apis/prompts/index.ts"
    participant BE as "FastAPI 后端"
    participant DB as "SQL 表(Prompt)"

    U->>PE: 输入名称、命令、内容
    PE->>API: createNewPrompt(token, prompt)
    API->>BE: POST /prompts/create
    Note over BE: 生成 UUID 和时间戳
    BE->>DB: insert_new_prompt()
    Note over DB: 同时在 PromptHistories 中创建条目
    DB-->>BE: 成功
    BE-->>API: 200 OK
    API-->>PE: 响应
    PE->>U: 显示成功提示并重定向

来源:src/lib/components/workspace/Prompts.svelte:77-110, backend/open_webui/models/prompts.py:112-170, src/routes/(app)/workspace/prompts/create/+page.svelte:21-31

1.3 版本管理与历史记录

PromptEditor.svelte 组件包含版本历史系统。用户可以查看之前的快照、比较变更,并将特定版本设为"生产版本" src/lib/components/workspace/Prompts/PromptEditor.svelte:172-186

  • 快照加载:通过 getPromptHistory 获取历史记录,支持分页 src/lib/components/workspace/Prompts/PromptEditor.svelte:130-147
  • 生产版本切换setProductionPromptVersion API 更新 prompt 表中的 version_idbackend/open_webui/models/prompts.py:37
  • 元数据更新:对提示词名称、命令或标签的修改会进行防抖处理,并通过 updatePromptMetadata 保存 src/lib/components/workspace/Prompts/PromptEditor.svelte:213-250

来源:src/lib/components/workspace/Prompts/PromptEditor.svelte:121-151, backend/open_webui/models/prompt_history.py:1-20

2. 工具与函数编辑器

工具系统支持"动作"能力(客户端或服务端执行),而函数(过滤器/动作/管道)则允许拦截请求/响应管道。

2.1 界面编排

工具通过 Tools.svelte 进行管理,提供已安装工具包的视图。函数(可作为过滤器或流形执行任意 Python 代码)在管理区域的 Functions.svelte 中管理 src/lib/components/admin/Functions.svelte:71-73

2.2 工具与函数数据流

工具和函数使用"阀门"(Valves)进行用户可配置的设置,使用"清单"(Manifests)存储元数据。

图示:代码实体空间 - 工具/函数管理

graph TD
    subgraph "前端组件"
        TS["Tools.svelte"]
        FS["Functions.svelte"]
        TKE["ToolkitEditor.svelte"]
        FE["FunctionEditor.svelte"]
        VM["ValvesModal.svelte"]
    end

    subgraph "API 层(代码实体)"
        GT["getToolList"]
        GF["getFunctionList"]
        CNT["createNewTool"]
        CNF["createNewFunction"]
        UG["toggleGlobalById"]
    end

    subgraph "后端服务"
        TPS["/api/v1/tools"]
        FPS["/api/v1/functions"]
    end

    TS --> GT
    FS --> GF
    TKE -- "onSave" --> CNT
    FE -- "onSave" --> CNF
    CNT --> TPS
    CNF --> FPS
    FS --> UG
    VM -- "配置" --> TKE

来源:src/lib/components/workspace/Tools.svelte:159-162, src/lib/components/admin/Functions.svelte:209-214, src/lib/components/workspace/Tools/ToolkitEditor.svelte:160-169, src/lib/components/admin/Functions.svelte:181-207

2.3 实现细节
  • Python 样板代码ToolkitEditor.svelte 提供了一个基础 Python 类 Tools,包含 calculatorget_current_weather 等示例 src/lib/components/workspace/Tools/ToolkitEditor.svelte:53-158
  • 代码格式化:编辑器在保存前使用 codeEditor.formatPythonCodeHandler() 确保符合 PEP8 规范,利用 Pyodide 环境中的 blacksrc/lib/components/workspace/Tools/ToolkitEditor.svelte:176-188, scripts/prepare-pyodide.js:1-19
  • 全局函数:管理员可以将函数设为"全局",使其应用于所有交互(例如全局过滤器)。此功能由 toggleGlobalById 处理 src/lib/components/admin/Functions.svelte:181-207
  • 工具克隆:通过获取完整定义、在 ID 后追加 _clone 并存储到 sessionStorage 中来实现工具克隆 src/lib/components/workspace/Tools.svelte:117-131

3. 知识库集成

知识库管理界面位于工作区内,用于组织用于 RAG 的文档集合。

3.1 知识管理操作

Knowledge.svelte 组件管理文档集合。

  • 搜索与分页:使用带防抖查询的 searchKnowledgeBases src/lib/components/workspace/Knowledge.svelte:48-53
  • 导出:通过 exportKnowledgeById 将知识库导出为包含文档集合的 .zip 文件 src/lib/components/workspace/Knowledge.svelte:127-144
  • 文件管理KnowledgeBase.svelte 处理单个文件上传、通过 processWeb 进行网页抓取以及文本内容添加 src/lib/components/workspace/Knowledge/KnowledgeBase.svelte:188-262

图示:自然语言空间到知识实体

graph LR
    subgraph "自然语言概念"
        Web["网页 URL"]
        Doc["文档文件"]
        Text["原始文本"]
    end

    subgraph "代码实体(apis/knowledge/index.ts)"
        PW["processWeb"]
        UF["uploadFile"]
        AFK["addFileToKnowledgeById"]
        SKF["searchKnowledgeFilesById"]
    end

    subgraph "存储"
        FDB["文件表(SQL)"]
        KDB["知识表(SQL)"]
    end

    Web --> PW
    Doc --> UF
    Text --> UF
    PW --> UF
    UF --> AFK
    AFK --> KDB
    KDB --> SKF

来源:src/lib/components/workspace/Knowledge.svelte:84-112, backend/open_webui/models/files.py:21-34, src/lib/components/workspace/Knowledge/KnowledgeBase.svelte:142-169

4. 工作区实体汇总表

实体主要存储创建路由关键 API / 模型文件
提示词无(直接 API)/workspace/prompts/createbackend/open_webui/models/prompts.py
工具tools/workspace/tools/createbackend/open_webui/models/tools.py
函数functions/admin/functions/createbackend/open_webui/models/functions.py
知识库knowledge/workspace/knowledge/createbackend/open_webui/models/knowledge.py

来源:src/lib/stores/index.ts:6-14, src/lib/components/workspace/Prompts.svelte:16, src/lib/components/workspace/Tools.svelte:12-20, src/lib/components/admin/Functions.svelte:10-20