# OpenWebUI 核心概念指南：模型与提示词

在 OpenWebUI 中，**System Prompt (系统提示词)** 和 **User Prompt (用户提示词)** 是两个截然不同但紧密协作的概念。正确理解它们的区别对于配置和使用插件至关重要。

## 1. 模型 (Model) vs 提示词 (Prompt)

| 概念 | 对应术语 | 核心作用 | 形象比喻 |
| :--- | :--- | :--- | :--- |
| **Model (模型)** | System Prompt | 定义**身份**与**能力** | **“大脑”** 或 **“专家人设”** |
| **Prompt (提示词)** | User Prompt | 定义**指令**与**交互** | **“快捷指令”** 或 **“工具表单”** |

---

## 2. 深度解析

### 🧠 Model (模型)
*   **定义源**: `System Prompt` (系统提示词)
*   **文件示例**: `system_prompt_cn.md`
*   **功能**: 
    *   告诉 AI “你是谁”（例如：你是一个信息图设计专家）。
    *   规定 AI “必须做什么”（例如：必须输出 HTML 代码，不能有废话）。
    *   赋予 AI “专业技能”（例如：掌握 AntV 的语法映射规则）。
*   **在 OpenWebUI 中配置**:
    *   位置: **Workspace** -> **Models** -> **Create Model**
    *   操作: 将 `system_prompt_cn.md` 的内容粘贴到 **System Prompt** 区域。
    *   **结果**: 创建出一个新的模型实体（如“智能信息图助手”），你可以在聊天列表的下拉菜单中选择它。

### ⚡ Prompt (提示词/命令)
*   **定义源**: `User Prompt` (用户提示词)
*   **文件示例**: `user_prompt_cn.md`
*   **功能**:
    *   为用户提供便捷的 **“触发命令”**（例如：`/infographic-cn`）。
    *   提供 **“交互表单”**（例如：选择模板、风格、配色）。
    *   将用户的简单输入包装成符合模型要求的 **“最终指令”**。
*   **在 OpenWebUI 中配置**:
    *   位置: **Workspace** -> **Prompts** -> **Create Prompt**
    *   操作: 将 `user_prompt_cn.md` 的内容粘贴到 **Content** 区域，并设置 **Command** (如 `/infographic-cn`)。
    *   **结果**: 创建出一个快捷命令，你在聊天输入框输入 `/` 时可以调用它。

---

## 3. 协同工作流程 (以信息图插件为例)

1.  **选择模型**: 用户在聊天框左上角选择 **“智能信息图助手”** (Model)。
    *   *此时，AI 已经加载了 `System Prompt`，准备好以“信息图专家”的身份工作。*
2.  **调用命令**: 用户在输入框输入 `/infographic-cn` (Prompt)。
    *   *此时，OpenWebUI 弹出表单，用户填写内容、选择模板和风格。*
3.  **发送指令**: 用户点击发送。
    *   *OpenWebUI 将用户填写的表单内容，按照 `User Prompt` 定义的格式（包含英文 key）组装好，发送给 AI。*
4.  **生成结果**: AI (Model) 接收到指令。

---

## 4. Function (功能/插件)

在 OpenWebUI 中，**Function** (有时也称为 Plugins) 是指扩展系统能力的 Python 脚本。主要分为三种类型：

| 类型 | 英文术语 | 核心作用 | 典型示例 |
| :--- | :--- | :--- | :--- |
| **管道** | **Pipe** | 自定义模型逻辑 | 接入 Claude/Gemini API，或自定义处理流程 |
| **过滤器** | **Filter** | 拦截/修改消息 | 敏感词过滤、自动添加上下文、PDF 解析 |
| **动作** | **Action** | 交互式工具/按钮 | **信息图插件**、生成 Excel、思维导图 |

### 🔍 详细说明

1.  **Pipe (管道)**:
    *   作为一个 **“模型”** 出现在模型列表中。
    *   接收用户输入，经过自定义逻辑处理后，返回结果。
    *   常用于接入外部未原生支持的模型，或构建复杂的处理工作流。

2.  **Filter (过滤器)**:
    *   作为一个 **“中间件”** 隐形工作。
    *   **Inlet (入口)**: 在用户发送消息给模型 **之前** 拦截并修改（如：给提示词加前缀）。
    *   **Outlet (出口)**: 在模型返回消息给用户 **之后** 拦截并修改（如：格式化输出）。

3.  **Action (动作/工具)**:
    *   作为一个 **“工具”** 或 **“按钮”** 存在。
    *   **Tool (工具)**: 模型可以主动调用的函数 (Function Calling)，如联网搜索、计算器。

---

## 5. Pipelines (外部管道系统)

**Pipelines** 是 OpenWebUI 的一个独立扩展系统（通常作为一个单独的 Docker 容器运行），它与 **Functions** 有所区别但功能重叠。

| 特性 | **Functions (内置功能)** | **Pipelines (外部管道)** |
| :--- | :--- | :--- |
| **运行位置** | OpenWebUI 主程序内部 | 独立的 Docker 容器 / 服务 |
| **安装方式** | 在界面上直接导入/编写 Python 脚本 | 需要部署额外的服务，通过 URL 连接 |
| **依赖管理** | 依赖 OpenWebUI 环境，受限 | 独立环境，可随意安装任意 Python 库 |
| **适用场景** | 轻量级工具、简单的逻辑处理、UI 交互 | 复杂的 AI 代理、重型计算、依赖特定库的任务 |

**关系说明**:
*   **Functions** 中的 **Pipe** 类型，实际上就是受到 **Pipelines** 启发而开发的“内置轻量版”。
*   如果你只需要简单的逻辑（如接入一个 API），使用 **Functions (Pipe)** 即可。
*   如果你需要运行复杂的 Python 代码（如使用 Pandas 分析数据、运行本地小模型），建议使用 **Pipelines**。
