agentic_huge_data_base / wiki
页面 Open WebUI · 19.1 模型编辑器·DeepWiki 中文全文译文

19.1 · 模型编辑器(Model Editor)

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

项目Open WebUI 章节19.1 状态全文译文 模块工具、记忆与模型调用、系统架构、界面与交互、可观测性与治理
源码线索
  • src/lib/apis/knowledge/index.ts
  • src/lib/components/admin/Functions.svelte
  • src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte
  • src/lib/components/admin/Settings/Evaluations/Model.svelte
  • src/lib/components/workspace/Knowledge.svelte
  • src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte
  • src/lib/components/workspace/Models.svelte
  • src/lib/components/workspace/Models/Capabilities.svelte
  • src/lib/components/workspace/Models/Knowledge.svelte
  • src/lib/components/workspace/Models/ModelEditor.svelte
模块标签
  • 工具、记忆与模型调用
  • 系统架构
  • 界面与交互
  • 可观测性与治理
  • 检索、召回与知识系统

中文译文

模型编辑器(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/19.1-model-editor
翻译时间:2026-06-09T16:12:31.987Z
翻译模型:deepseek-chat
原文字符数:9971
项目:Open WebUI (open-webui)

---

模型编辑器

相关源文件

以下文件为本 wiki 页面的生成提供了上下文:

  • src/lib/apis/knowledge/index.ts
  • src/lib/components/admin/Functions.svelte
  • src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte
  • src/lib/components/admin/Settings/Evaluations/Model.svelte
  • src/lib/components/workspace/Knowledge.svelte
  • src/lib/components/workspace/Knowledge/CreateKnowledgeBase.svelte
  • src/lib/components/workspace/Models.svelte
  • src/lib/components/workspace/Models/Capabilities.svelte
  • src/lib/components/workspace/Models/Knowledge.svelte
  • src/lib/components/workspace/Models/ModelEditor.svelte
  • src/lib/components/workspace/Prompts.svelte
  • src/lib/components/workspace/Tools.svelte
  • src/lib/components/workspace/common/AccessControl.svelte
  • src/lib/components/workspace/common/AccessControlModal.svelte

模型编辑器是创建和配置自定义模型定义(在 Ollama 语境中常称为"Modelfiles",或"系统角色")的主要界面。它允许用户将基础 LLM 模型与特定的系统提示词、RAG(检索增强生成)知识库、工具集和能力标志进行封装。

组件概览

模型编辑器主要在 ModelEditor.svelte src/lib/components/workspace/Models/ModelEditor.svelte:1-264 中实现。它作为一个统一的表单,既可用于创建新模型,也可用于编辑现有模型。该组件协调多个子组件来管理模型元数据和行为的各个方面。

关键数据结构

编辑器管理一个复杂的 info 对象,该对象映射到后端模型模式:

字段类型描述
idstring模型的唯一标识符,自动从名称进行 slug 化处理 src/lib/components/workspace/Models/ModelEditor.svelte:59-71
namestring在 UI 中显示的人类可读名称 src/lib/components/workspace/Models/ModelEditor.svelte:60-60
params.systemstring系统提示词/指令 src/lib/components/workspace/Models/ModelEditor.svelte:73-86
meta.knowledgeArray关联的知识库文档或集合 src/lib/components/workspace/Models/ModelEditor.svelte:147-153
meta.capabilitiesObject功能标志布尔值,如 visionweb_search src/lib/components/workspace/Models/ModelEditor.svelte:100-100
meta.toolIdsArray关联的工具 ID 列表 src/lib/components/workspace/Models/ModelEditor.svelte:155-161
meta.skillIdsArray关联的技能 ID 列表 src/lib/components/workspace/Models/ModelEditor.svelte:163-169
meta.filterIdsArray关联的过滤器/函数 ID 列表 src/lib/components/workspace/Models/ModelEditor.svelte:171-177
access_grantsArray用户和组的权限列表 src/lib/components/workspace/Models/ModelEditor.svelte:105-105

来源:src/lib/components/workspace/Models/ModelEditor.svelte:59-241

数据流与逻辑

编辑器处理 UI 状态与 API 需求之间的数据转换。例如,在创建模型时,id 会自动从 name 进行 slug 化处理,将空格替换为连字符并移除非字母数字字符 src/lib/components/workspace/Models/ModelEditor.svelte:64-71

模型配置流程

下图展示了模型编辑器如何将来自各个工作区实体的数据编排成一个统一的模型定义。

模型定义组装

graph TD
    subgraph "工作区实体"
        T["Tools.svelte"]
        K["Knowledge.svelte"]
        F["Functions.svelte"]
        S["SkillsSelector.svelte"]
    end

    subgraph "模型编辑器逻辑"
        ME["ModelEditor.svelte"]
        SH["submitHandler()"]
        AC["AccessControl.svelte"]
    end

    T -- "toolIds" --> ME
    K -- "knowledge" --> ME
    F -- "filterIds" --> ME
    S -- "skillIds" --> ME

    ME --> SH
    AC -- "accessGrants" --> SH

    SH --> API["onSubmit(info)"]

来源:src/lib/components/workspace/Models/ModelEditor.svelte:109-243src/lib/components/workspace/Tools.svelte:159-162src/lib/components/workspace/Knowledge.svelte:84-114src/lib/components/workspace/Models/ModelEditor.svelte:93-97

界面组件

编辑器由多个专门的子组件组成:

1. 功能选择器

Capabilities.svelte 组件管理功能标志,这些标志告知前端和后端如何处理模型的请求。

  • 视觉(Vision):模型接受图像输入 src/lib/components/workspace/Models/Capabilities.svelte:10-13
  • 网络搜索(Web Search):启用网络搜索引擎集成 src/lib/components/workspace/Models/Capabilities.svelte:22-25
  • 代码解释器(Code Interpreter):启用 Pyodide/Jupyter 执行 src/lib/components/workspace/Models/Capabilities.svelte:30-33
  • 内置工具(Builtin Tools):在原生函数调用模式下自动注入系统工具 src/lib/components/workspace/Models/Capabilities.svelte:54-59

来源:src/lib/components/workspace/Models/Capabilities.svelte:9-60

2. 访问控制

通过 AccessControl.svelteAccessControlModal.svelte 管理访问权限。该系统处理用户和组的 readwrite 权限。

  • 公共访问:由 principal_id* 且具有 read 权限的条目表示 src/lib/components/workspace/common/AccessControl.svelte:157-161
  • 旧版映射:将旧的 access_control 对象转换为新的 access_grants 数组格式 src/lib/components/workspace/common/AccessControl.svelte:63-98

来源:src/lib/components/workspace/common/AccessControl.svelte:17-134

3. 知识库集成

Knowledge.svelte 子组件允许用户通过 KnowledgeSelector 选择现有知识库,或直接上传新文件 src/lib/components/workspace/Models/Knowledge.svelte:194-224。在提交过程中,编辑器会验证所有文件是否已完成上传,然后才允许保存模型 src/lib/components/workspace/Models/ModelEditor.svelte:129-134

技术实现

初始化与持久化

当编辑器挂载时,它会获取可用的工具和函数以填充选择存储。它还会通过 getModelsDefaults 检索管理员配置的默认元数据,以确保 UI 反映全局设置 src/lib/components/workspace/Models/ModelEditor.svelte:249-262

onMount(async () => {
    await tools.set(await getTools(localStorage.token));
    await functions.set(await getFunctions(localStorage.token));

    const modelsConfig = await getModelsDefaults(localStorage.token).catch(() => null);
    const defaultMeta = modelsConfig?.DEFAULT_MODEL_METADATA ?? {};

    capabilities = { ...DEFAULT_CAPABILITIES, ...(defaultMeta.capabilities ?? {}) };
    // ... 填充其他默认值的逻辑
});

来源:src/lib/components/workspace/Models/ModelEditor.svelte:249-265

API 交互

编辑器通过模型 API 与后端通信。虽然 ModelEditor.svelte 接受一个 onSubmit 属性 src/lib/components/workspace/Models/ModelEditor.svelte:35,但父组件 Models.svelte 提供了调用以下方法的处理函数:

  • 创建createNewModel(token, modelInfo) src/lib/components/workspace/Models.svelte:17-17
  • 更新updateModelById(token, id, modelInfo) src/lib/components/workspace/Models.svelte:22-22

实体映射图

classDiagram
    class ModelEditor {
        +submitHandler()
        +onMount()
        -info: Object
        -params: Object
    }
    class Models_svelte {
        +createNewModel()
        +updateModelById()
        +deleteModelById()
    }
    class Knowledge_svelte {
        +uploadFileHandler()
        +inputFilesHandler()
    }
    class Capabilities_svelte {
        +capabilities: Object
    }

    ModelEditor --> Models_svelte : "调用 onSubmit 属性"
    ModelEditor *-- Knowledge_svelte : "包含"
    ModelEditor *-- Capabilities_svelte : "包含"
    Models_svelte --> createNewModel : "API 调用"
    Models_svelte --> updateModelById : "API 调用"

来源:src/lib/components/workspace/Models/ModelEditor.svelte:1-247src/lib/components/workspace/Models.svelte:16-23src/lib/components/workspace/Models/Knowledge.svelte:1-137

参数处理

集成了 AdvancedParams.svelte 组件以允许微调 LLM 参数 src/lib/components/workspace/Models/ModelEditor.svelte:12-12

  • 停止序列(Stop Sequences)submitHandlerparams.stop 从逗号分隔的字符串转换为过滤后的字符串数组 src/lib/components/workspace/Models/ModelEditor.svelte:232-236
  • 系统提示词:存储在 info.params.system 中,并在提交前进行修剪 src/lib/components/workspace/Models/ModelEditor.svelte:231-231

来源:src/lib/components/workspace/Models/ModelEditor.svelte:89-91src/lib/components/workspace/Models/ModelEditor.svelte:231-241