Open WebUI提示词库:预设模板管理与使用

Open WebUI提示词库:预设模板管理与使用

【免费下载链接】open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,设计用于完全离线操作,支持各种大型语言模型(LLM)运行器,包括Ollama和兼容OpenAI的API。 【免费下载链接】open-webui 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui

提示词库核心架构

Open WebUI的提示词管理系统通过前后端分离架构实现模板的存储、检索与应用。后端采用SQLAlchemy ORM构建数据模型,前端通过Svelte组件实现交互式管理界面,形成完整的提示词生命周期管理闭环。

数据模型设计

提示词数据结构定义在backend/open_webui/models/prompts.py中,核心字段包括:

  • command: 唯一标识符(如/translate
  • title: 模板名称
  • content: 提示词内容主体
  • access_control: 权限控制配置(支持公开/私有/组权限)
class Prompt(Base):
    __tablename__ = "prompt"
    command = Column(String, primary_key=True)  # 命令标识
    user_id = Column(String)                   # 创建者ID
    title = Column(Text)                       # 模板标题
    content = Column(Text)                     # 提示词内容
    timestamp = Column(BigInteger)             # 创建时间戳
    access_control = Column(JSON, nullable=True) # 访问控制配置

权限控制矩阵

提示词支持多维度权限管理,通过access_control字段实现精细化授权:

权限类型描述JSON配置示例
公开访问所有用户可查看null
私有访问仅创建者可用{}
组权限指定用户组可访问{"read": {"group_ids": ["g1", "g2"]}}
用户权限指定用户可编辑{"write": {"user_ids": ["u1"]}}

后端API接口

提示词管理通过RESTful API实现完整CRUD操作,接口定义在backend/open_webui/routers/prompts.py

核心接口列表

接口路径方法功能描述权限要求
/promptsGET获取提示词列表已认证用户
/prompts/command/{command}GET获取指定提示词权限校验
/prompts/createPOST创建提示词admin/有权限用户
/prompts/command/{command}/updatePOST更新提示词创建者/管理员
/prompts/command/{command}/deleteDELETE删除提示词创建者/管理员

创建提示词示例

# 后端创建逻辑示例
@router.post("/create", response_model=Optional[PromptModel])
async def create_new_prompt(
    request: Request, form_data: PromptForm, user=Depends(get_verified_user)
):
    # 权限检查
    if user.role != "admin" and not has_permission(...):
        raise HTTPException(status_code=401, detail=ERROR_MESSAGES.UNAUTHORIZED)
    
    # 命令冲突检查
    if Prompts.get_prompt_by_command(form_data.command) is None:
        return Prompts.insert_new_prompt(user.id, form_data)
    raise HTTPException(status_code=400, detail=ERROR_MESSAGES.COMMAND_TAKEN)

前端管理界面

前端提供直观的提示词管理界面,主要功能模块位于工作区的提示词管理页面。

创建提示词界面

src/routes/(app)/workspace/prompts/create/+page.svelte/workspace/prompts/create/+page.svelte)实现了新建提示词的表单界面,核心逻辑包括:

<script lang="ts">
  import { createNewPrompt } from '$lib/apis/prompts';
  let prompt = null;
  
  const onSubmit = async (_prompt) => {
    const prompt = await createNewPrompt(localStorage.token, _prompt)
      .catch(error => toast.error(`${error}`));
    
    if (prompt) {
      toast.success($i18n.t('Prompt created successfully'));
      await goto('/workspace/prompts');
    }
  };
</script>

{#key prompt}
  <PromptEditor {prompt} {onSubmit} />
{/key}

提示词编辑器组件

提示词编辑器支持Markdown格式,提供实时预览功能。界面组件位于src/lib/components/workspace/Prompts/PromptEditor.svelte(推断路径),支持以下特性:

  • 命令唯一性校验
  • Markdown语法高亮
  • 权限配置可视化
  • 模板变量提示

提示词使用场景

Open WebUI在多个交互场景中集成了提示词功能,提升用户体验与工作效率。

聊天界面快速调用

在聊天输入框中通过命令前缀快速插入提示词,实现逻辑位于src/lib/components/chat/MessageInput/Commands/Prompts.svelte

{#each filteredPrompts as prompt, promptIdx}
  <div class="px-3 py-1.5 rounded-xl" 
       on:click={() => confirmPrompt(prompt)}>
    <div class="font-medium">{prompt.command}</div>
    <div class="text-sm opacity-70">{prompt.title}</div>
  </div>
{/each}

使用流程:

  1. 在聊天输入框输入/触发命令菜单
  2. 选择提示词或继续输入命令(如/translate
  3. 系统自动插入预设提示词模板

上下文菜单集成

在聊天内容选中时,通过浮动菜单应用提示词模板,代码位于src/lib/components/chat/ContentRenderer/FloatingButtons.svelte

function confirmExplain() {
  const prompt = `Explain this section to me in more detail\n\n\`\`\`\n${selectedText}\n\`\`\``;
  dispatch('submit', { content: prompt });
}

<button on:click={confirmExplain}>
  <HelpCircle class="h-4 w-4 mr-1" />
  {$i18n.t('Explain')}
</button>

高级应用技巧

模板变量使用

提示词支持动态变量替换,通过{{variable}}语法在运行时注入上下文:

# 邮件生成模板
From: {{sender}}
To: {{recipient}}
Subject: {{subject}}

{{body}}

提示词链功能

通过命令组合实现复杂任务流程,例如:

/translate "Hello world"
/summarize {{previous_response}}
/email {{previous_response}} --to manager@example.com

导入导出功能

系统支持批量管理提示词,可通过以下方式实现:

  1. 单条导出:访问/prompts/command/{command}获取JSON
  2. 批量导出:调用/prompts接口批量获取
  3. 批量导入:通过/prompts/create接口批量提交

界面操作指南

创建提示词步骤

  1. 导航至工作区 → 提示词管理 → 新建
  2. 填写命令(如/blog)、标题和内容
  3. 配置访问权限(公开/私有/指定用户组)
  4. 点击保存完成创建

提示词创建界面

在聊天中应用提示词

  1. 在聊天输入框输入/显示提示词列表
  2. 选择所需提示词或继续输入命令
  3. 根据模板提示补充必要参数
  4. 发送后系统自动应用完整提示词

聊天界面提示词调用

最佳实践案例

案例1:技术文档翻译模板

命令/tech-translate
内容

Translate the following technical documentation into Chinese, maintaining code formatting and technical terms:

{{content}}

要求:
1. 保留Markdown格式
2. 代码块和技术术语不翻译
3. 添加适当注释解释复杂概念

案例2:代码优化提示词

命令/code-optimize
内容

Optimize the following code with these requirements:
1. Improve time complexity
2. Add error handling
3. Follow PEP8 style guide
4. Include docstrings

```python
{{code}}

Output the optimized code with explanations of key changes.


## 故障排除

### 常见问题解决

| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 提示词命令冲突 | 已存在相同命令 | 修改命令名称或删除现有提示词 |
| 无权限访问 | 权限配置错误 | 联系管理员调整`access_control` |
| 导入失败 | JSON格式错误 | 验证JSON结构并重新导入 |
| 变量不生效 | 模板语法错误 | 确保使用`{{variable}}`格式 |

### 日志排查
提示词相关操作日志可在后端日志中查看,关键日志位置:
- API请求:`backend/logs/api.log`
- 数据库操作:`backend/logs/db.log`

## 扩展开发指南
开发者可通过以下方式扩展提示词功能:

### 自定义变量解析器
在backend/open_webui/utils/prompt.py(推断路径)中添加自定义变量处理器:
```python
def resolve_custom_variables(prompt: str, context: dict) -> str:
    # 实现自定义变量逻辑
    for var, value in context.items():
        prompt = prompt.replace(f"{{{{{var}}}}}", process_value(value))
    return prompt

添加模板市场

  1. 创建提示词分类数据表
  2. 实现评分和评论功能
  3. 开发模板上传审核流程

总结

Open WebUI提示词库系统为用户提供了强大的模板管理与应用功能,通过标准化的提示词设计可以显著提升LLM交互效率。无论是个人用户管理常用提示模板,还是团队共享最佳实践,该系统都能满足多样化的使用需求。

通过本文档介绍的架构解析、操作指南和最佳实践,用户可以充分利用提示词库功能,构建个性化的AI交互体验。如需进一步扩展,可参考扩展开发指南实现定制化功能。

建议定期备份重要提示词,通过导出功能保存到安全位置,以防意外丢失。同时关注系统更新,获取更多提示词高级功能。

【免费下载链接】open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,设计用于完全离线操作,支持各种大型语言模型(LLM)运行器,包括Ollama和兼容OpenAI的API。 【免费下载链接】open-webui 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值