🪄 过滤器函数(Filter Function):修改输入和输出
欢迎阅读 Open WebUI 过滤器函数的全面指南!过滤器函数是一个灵活而强大的扩展系统,用于修改发送到大语言模型(Large Language Model,LLM)之前(输入)或从 LLM 返回之后(输出)的数据。无论你是为了更好的上下文而转换输入,还是为了提高可读性而清理输出,过滤器函数都能满足你的需求。
本指南将详细解释什么是过滤器函数、它们如何工作、它们的结构,以及构建你自己的强大且用户友好的过滤器函数所需要知道的一切。让我们深入了解,别担心——我会使用比喻、示例和提示来让一切变得清晰明了!🌟
🌊 什么是 Open WebUI 中的过滤器函数?
想象 Open WebUI 是一个智能净水系统:
- 用户输入和LLM 输出是流动的水。
- 过滤器函数是在水流到达最终用户之前进行净化、调节和优化的水质处理阶段。
过滤器函数位于数据流的中间——像智能检测站一样——你可以在这里决定需要调整什么。
以下是过滤器函数功能的快速总结:
- 修改用户输入(Inlet 函数):在数据到达 AI 模型之前调整输入数据。在这里你可以增强清晰度、添加上下文、净化文本或将消息重新格式化以匹配特定要求。
- 修改模型输出(Outlet 函数):在 AI 处理之后、显示给用户之前调整 AI 的响应。这可以帮助优化、记录或调整数据,以提供更清晰的用户体验。
**关键概念:**过滤器函数不是独立的模型,而是增强或转换流向和来自模型的数据的工具。
过滤器函数就像 AI 工作流中的智能编辑器:你可以在不中断数据流的情况下拦截和优化对话。
🗺️ 过滤器函数的结构:基础框架
让我们从最基础的过滤器函数结构开始。如果一开始某些部分感觉很技术性,别担心——我们会一步一步地详细解释!
🦴 过滤 器函数的基本框架
from pydantic import BaseModel
from typing import Optional
class Filter:
# 阀门:过滤器的配置选项 / Valves: Configuration options for the filter
class Valves(BaseModel):
pass
def __init__(self):
# 初始化阀门(过滤器的可选配置)/ Initialize valves (optional configuration for the filter)
self.valves = self.Valves()
def inlet(self, body: dict) -> dict:
# 这里是处理用户输入的地方 / This is where you manipulate user inputs
print(f"inlet called: {body}")
return body
def outlet(self, body: dict) -> None:
# 这里是处理模型输出的地方 / This is where you manipulate model outputs
print(f"outlet called: {body}")
🎯 关键组件解释
1️⃣ Valves
类(可选配置)
把**阀门(Valves)**想象成过滤器函数的智能控制面板。如果你想给用户可配置的选项来调整过滤器函数的行为,就在这里定义它们。
class Valves(BaseModel):
OPTION_NAME: str = "默认值" # Default value
例如:
如果你正在创建一个将响应转换为大写的过滤器函数,你可以通过像 TRANSFORM_UPPERCASE: bool = True/False
这样的阀门让用户配置是否将每个输出完全大写。