""" 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