跳到主要内容

阀门 (Valves)

阀门 (Valves)

Valves(阀门,请参阅专用的阀门与用户阀门 (Valves & UserValves)文档页面)同样可以应用于 Pipeline(流水线)。简而言之,Valves 是为每一个 pipeline 独立配置的入参变量。

Valves 被声明为 Pipeline 类下的一个嵌套子类,并且在 Pipeline 类的 __init__ 初始化方法中被实例化。

当为您的流水线添加阀门时,请务必提供一种确保管理员可以在前端 Web UI 中对其重新配置的机制。以下是几种常见且推荐的实现方案:

  • 使用 os.getenv() 读取操作系统环境变量作为 pipeline 配置参数,同时提供一个当环境变量未设置时使用的默认值。代码范例如下:
self.valves = self.Valves(
    **{
        "LLAMAINDEX_OLLAMA_BASE_URL": os.getenv("LLAMAINDEX_OLLAMA_BASE_URL", "http://localhost:11434"),
        "LLAMAINDEX_MODEL_NAME": os.getenv("LLAMAINDEX_MODEL_NAME", "llama3"),
        "LLAMAINDEX_EMBEDDING_MODEL_NAME": os.getenv("LLAMAINDEX_EMBEDDING_MODEL_NAME", "nomic-embed-text"),
    }
)
  • 将阀门属性标记为 Optional 可选类型,这样即使在管理员完全没有为该阀门配置任何值的情况下,流水线依然能够顺利加载运行。
class Pipeline:
    class Valves(BaseModel):
        target_user_roles: List[str] = ["user"]
        max_turns: Optional[int] = None

如果您没有为阀门提供任何能够在 Web UI 中进行动态更新的路径,在尝试将该 pipeline 导入到网页端时,您将在 Pipelines 服务器的日志中看到以下报错提示: WARNING:root:No Pipeline class found in <pipeline name>

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.