阀门 (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>