""" title: Filter Pipeline author: open-webui date: 2024-05-30 version: 1.1 license: MIT description: Example of a filter pipeline that can be used to edit the form data before it is sent to the OpenAI API. requirements: requests """ from typing import List, Optional from pydantic import BaseModel from schemas import OpenAIChatMessage class Pipeline: def __init__(self): # Pipeline filters are only compatible with Open WebUI # You can think of filter pipeline as a middleware that can be used to edit the form data before it is sent to the OpenAI API. self.type = "filter" # Optionally, you can set the id and name of the pipeline. # Assign a unique identifier to the pipeline. # The identifier must be unique across all pipelines. # The identifier must be an alphanumeric string that can include underscores or hyphens. It cannot contain spaces, special characters, slashes, or backslashes. self.id = "filter_pipeline" self.name = "Filter" class Valves(BaseModel): # List target pipeline ids (models) that this filter will be connected to. # If you want to connect this filter to all pipelines, you can set pipelines to ["*"] pipelines: List[str] = [] # Assign a priority level to the filter pipeline. # The priority level determines the order in which the filter pipelines are executed. # The lower the number, the higher the priority. priority: int = 0 # Add your custom parameters here pass self.valves = Valves(**{"pipelines": ["llama3:latest"]}) pass async def on_startup(self): # This function is called when the server is started. print(f"on_startup:{__name__}") pass async def on_shutdown(self): # This function is called when the server is stopped. print(f"on_shutdown:{__name__}") pass async def inlet(self, body: dict, user: Optional[dict] = None) -> dict: # This filter is applied to the form data before it is sent to the OpenAI API. print(f"inlet:{__name__}") print(body) print(user) return body