Resumen
OpenWebUI by default envia cada consulta a traves de its web-search herramienta, burning credits y latencia on offline questions. Este flujo de trabajo agrega un lightweight classifier paso ese solo activa Scavio-backed search cuando el consulta es time-sensitive o factual. Cuts search spend by 60-80% for mas deployments.
Desencadenador
OpenWebUI pre-tool-call hook on cada usuario mensaje
Programación
Real-time, per usuario mensaje
Pasos del flujo de trabajo
Intercept usuario mensaje
OpenWebUI fires el pre-tool-call hook con el user's convertir.
Ejecutar needs-search classifier
Small LLM (o regex) determines if el mensaje es time-sensitive o factual.
Skip search for conversational convierte
Questions like 'resumir este' o 'que do you think' bypass search entirely.
Invoke Scavio for qualifying convierte
For factual o time-sensitive consultas, fire Scavio search con el consulta.
Inject resultados as context
Fusionar Scavio resultados en el system prompt antes de el main LLM ejecuta.
Log decision for audit
Persist {turn_id, search_fired, reason} for credit-use audits.
Implementacion en Python
import os, re, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY}
FRESH_PATTERNS = [r"\btoday\b", r"\blatest\b", r"\b2026\b", r"\bprice\b"]
def needs_search(msg):
return any(re.search(p, msg.lower()) for p in FRESH_PATTERNS)
def search(q):
r = requests.post("https://api.scavio.dev/api/v1/search",
headers=H, json={"query": q}).json()
return r.get("organic_results", [])[:5]
def pre_tool_hook(message):
if not needs_search(message):
return {"skip_search": True}
return {"context": search(message)}
print(pre_tool_hook("what is the latest price of nvidia stock"))Implementacion en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { "x-api-key": API_KEY, "content-type": "application/json" };
const FRESH = [/\btoday\b/, /\blatest\b/, /\b2026\b/, /\bprice\b/];
function needsSearch(msg) {
return FRESH.some(p => p.test(msg.toLowerCase()));
}
async function search(q) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H, body: JSON.stringify({ query: q })
}).then(r => r.json());
return (r.organic_results || []).slice(0, 5);
}
async function preToolHook(message) {
if (!needsSearch(message)) return { skipSearch: true };
return { context: await search(message) };
}
console.log(await preToolHook("what is the latest price of nvidia stock"));Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA