webui / context_detector.py
Nerdur's picture
Upload 9 files
a76c39e verified
Raw
History Blame Contribute Delete
1.81 kB
"""
title: Context Detector
author: nerdur
version: 0.1
description: Automatski prepoznaje kontekst svake poruke i injektuje tag u system prompt.
"""
from pydantic import BaseModel
from typing import Optional
class Filter:
class Valves(BaseModel):
enabled: bool = True
def __init__(self):
self.valves = self.Valves()
def inlet(self, body: dict, __user__: Optional[dict] = None) -> dict:
if not self.valves.enabled:
return body
messages = body.get("messages", [])
if not messages:
return body
last_msg = messages[-1].get("content", "").lower()
context_map = {
"QUESTION": ["što", "kako", "zašto", "kada", "gdje", "koji", "what", "how", "why", "when", "where"],
"CODE": ["kod", "funkcija", "debug", "greška", "error", "script", "python", "javascript", "code"],
"SEARCH": ["pronađi", "traži", "pretraži", "find", "search", "lookup"],
"COMPARISON": ["usporedi", "razlika", "bolje", "compare", "vs", "versus", "difference"],
"TASK": ["napravi", "kreiraj", "generiraj", "uradi", "create", "make", "generate", "do"],
}
detected = "GENERAL"
for ctx, keywords in context_map.items():
if any(kw in last_msg for kw in keywords):
detected = ctx
break
system_inject = f"\n\n[CTX: {detected}]"
for msg in messages:
if msg.get("role") == "system":
msg["content"] += system_inject
break
else:
messages.insert(0, {"role": "system", "content": system_inject})
body["messages"] = messages
return body
def outlet(self, body: dict, __user__: Optional[dict] = None) -> dict:
return body