Output sanitizing filter for Beyonder v3.
This commit is contained in:
parent
6c35ca77e1
commit
6180d238b3
|
@ -0,0 +1,58 @@
|
||||||
|
"""
|
||||||
|
title: Output Sanitization Filter
|
||||||
|
author: projectmoon
|
||||||
|
author_url: https://git.agnos.is/projectmoon/open-webui-filters
|
||||||
|
version: 0.1.0
|
||||||
|
required_open_webui_version: 0.3.9
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Documentation: https://git.agnos.is/projectmoon/open-webui-filters
|
||||||
|
|
||||||
|
import re
|
||||||
|
from typing import Callable, Awaitable, Any, Optional, Literal, List
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
def strip_prefixes(message: str, prefixes: List[str]):
|
||||||
|
for prefix in prefixes:
|
||||||
|
if message.startswith(prefix):
|
||||||
|
message = message.replace(prefix, "", 1)
|
||||||
|
return message
|
||||||
|
|
||||||
|
class Filter:
|
||||||
|
class Valves(BaseModel):
|
||||||
|
start_removals: List[str] = Field(
|
||||||
|
default=[":"], description="Words or terms to remove from the start of LLM replies."
|
||||||
|
)
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.valves = self.Valves()
|
||||||
|
pass
|
||||||
|
|
||||||
|
async def replace_message(self, message):
|
||||||
|
await self.event_emitter({
|
||||||
|
"type": "replace",
|
||||||
|
"data": {
|
||||||
|
"content": message
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
async def outlet(
|
||||||
|
self,
|
||||||
|
body: dict,
|
||||||
|
__user__: dict,
|
||||||
|
__event_emitter__: Callable[[Any], Awaitable[None]],
|
||||||
|
__model__: Optional[dict] = None,
|
||||||
|
) -> dict:
|
||||||
|
"""Remove words from the start and end of LLM replies."""
|
||||||
|
self.event_emitter = __event_emitter__
|
||||||
|
|
||||||
|
if len(body["messages"]) == 0:
|
||||||
|
return body
|
||||||
|
|
||||||
|
last_reply: dict = body["messages"][-1]
|
||||||
|
last_reply = last_reply["content"].strip()
|
||||||
|
replaced_message = strip_prefixes(last_reply, self.valves.start_removals)
|
||||||
|
await self.replace_message(replaced_message)
|
Loading…
Reference in New Issue