El problema
Los LLM locales (Llama, Mistral, Qwen que se ejecutan a través de Ollama, vLLM o llama.cpp) no tienen acceso web integrado. Alucinan libremente ante cualquier pregunta sobre actualidad, precios o lanzamientos recientes. Agregar conexión a tierra web requiere una API de búsqueda que devuelva datos estructurados que un modelo local puede consumir. La mayoría de las API de búsqueda se dirigen a modelos alojados en la nube y suponen que está ejecutando llamadas a herramientas compatibles con OpenAI, que los modelos locales a menudo no admiten de manera confiable.
La solucion de Scavio
Cree una capa de recuperación simple que consulte a Scavio antes de cada llamada de LLM, formatee los resultados como contexto y los anteponga al mensaje. No se requiere llamada de herramienta. El patrón funciona con cualquier modelo local porque es solo entrada y salida de texto. Scavio devuelve JSON estructurado que formatea en un bloque de contexto. El modelo local ve datos de conexión a tierra en su ventana de aviso y responde con hechos en lugar de alucinaciones.
Antes
Antes de la inmovilización de la web, el modelo local de Llama declaraba con confianza precios obsoletos, características de productos inventadas y URL fabricadas. Los usuarios aprendieron a desconfiar del modelo para cualquier cosa urgente, limitándolo únicamente a tareas creativas y de codificación.
Después
Después de agregar la base Scavio, el modelo responde preguntas urgentes con datos citados. Los usuarios confían en él para comprobar precios, resúmenes de noticias e investigaciones de productos. La tasa de alucinaciones en preguntas factuales cayó de aproximadamente el 40% a menos del 5%.
Para quien es
Desarrolladores que ejecutan LLM locales a través de Ollama, vLLM o llama.cpp y que necesitan una conexión web sin dependencias de la nube. Usuarios preocupados por la privacidad que desean respuestas basadas en búsquedas sin enviar datos a OpenAI.
Beneficios clave
- Funciona con cualquier modelo local: no se requieren llamadas a herramientas ni funciones
- Patrón de anteposición de contexto simple compatible con Ollama, vLLM, llama.cpp
- La tasa de alucinaciones en preguntas objetivas cae de ~40% a menos del 5%
- Gratis 250 consultas/mes cubre el uso personal local de LLM
- El texto de descripción general de AI proporciona un contexto resumido previamente que se adapta a pequeñas ventanas de contexto
Ejemplo en Python
import requests
import json
API_KEY = "your_scavio_api_key"
OLLAMA_URL = "http://localhost:11434/api/generate"
def grounded_query(question: str, model: str = "llama3.2") -> str:
# Get web context from Scavio
search_res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": question, "ai_overview": True},
timeout=15,
)
search_res.raise_for_status()
data = search_res.json()
# Build context block
context_parts = []
if data.get("ai_overview"):
context_parts.append(f"AI Overview: {data['ai_overview']['text']}")
for r in data.get("organic", [])[:3]:
context_parts.append(f"- {r.get('title', '')}: {r.get('snippet', '')}")
context = "\n".join(context_parts)
# Query local LLM with context
prompt = f"Use the following web search results to answer the question.\n\nSearch Results:\n{context}\n\nQuestion: {question}\nAnswer:"
llm_res = requests.post(OLLAMA_URL, json={"model": model, "prompt": prompt, "stream": False}, timeout=60)
return llm_res.json().get("response", "")
answer = grounded_query("What is the latest Ollama version in 2026?")
print(answer)Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
async function groundedQuery(question, model = "llama3.2") {
const searchRes = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: question, ai_overview: true }),
});
const data = await searchRes.json();
const parts = [];
if (data.ai_overview) parts.push(`AI Overview: ${data.ai_overview.text}`);
for (const r of (data.organic ?? []).slice(0, 3)) parts.push(`- ${r.title}: ${r.snippet}`);
const prompt = `Use the following web search results to answer the question.\n\nSearch Results:\n${parts.join("\n")}\n\nQuestion: ${question}\nAnswer:`;
const llmRes = await fetch("http://localhost:11434/api/generate", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ model, prompt, stream: false }),
});
return (await llmRes.json()).response ?? "";
}
console.log(await groundedQuery("What is the latest Ollama version in 2026?"));Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA