El problema
Los asistentes de IA basados en la nube requieren enviar todas sus preguntas y contexto a servidores externos. Los usuarios preocupados por la privacidad quieren un asistente personal que se ejecute localmente pero que aún pueda responder preguntas sobre eventos actuales, precios e información pública. Un LLM puramente local no tiene acceso a Internet, lo que lo hace inútil para cualquier cosa urgente.
La solucion de Scavio
Ejecute Ollama localmente con un modelo como Llama 3 o Mistral y agregue Scavio como capa de búsqueda externa. Cuando el LLM local detecta una consulta que necesita información actual, llama a la API de Scavio para obtener datos nuevos y luego genera su respuesta utilizando los resultados de la búsqueda como contexto. Todo razonamiento ocurre localmente; sólo la consulta de búsqueda sale de su máquina.
Antes
Ollama ejecuta Llama 3 localmente. El usuario pregunta: "¿A qué hora cierra hoy la Apple Store en Austin?" El modelo adivina o se niega. No tener acceso a Internet significa que no hay información actualizada. Se preserva la privacidad, pero el asistente es inútil para preguntas del mundo real.
Después
Búsqueda de Ollama + Scavio. El modelo detecta que la consulta necesita datos externos, llama a Scavio para obtener resultados de Google Maps ($0,005), obtiene el horario actual de la tienda y genera la respuesta localmente. Sólo la consulta de búsqueda "horario de Apple Store Austin" sale de la máquina. Privacidad preservada, pregunta respondida.
Para quien es
Desarrolladores e investigadores preocupados por la privacidad que desean un asistente personal de IA que se ejecute localmente pero que aún pueda acceder a información web actual cuando sea necesario.
Beneficios clave
- Todo el razonamiento permanece en su máquina local
- Sólo las consultas de búsqueda salen de su red; no se envía ningún contexto de conversación externamente
- Scavio a $0,005/consulta hace que las búsquedas externas sean casi gratuitas
- Funciona con cualquier modelo compatible con Ollama (Llama 3, Mistral, Phi-3)
- Combina privacidad local con conocimiento web en tiempo real
Ejemplo en Python
import requests, os, json
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
OLLAMA_URL = "http://localhost:11434/api/generate"
def scavio_search(query: str) -> str:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": SCAVIO_KEY, "Content-Type": "application/json"},
json={"query": query, "country_code": "us"},
timeout=10,
)
results = resp.json().get("organic_results", [])[:5]
return "\n".join(f"- {r['title']}: {r['snippet']}" for r in results)
def ask_local_llm(question: str) -> str:
# Step 1: Check if question needs search
check = requests.post(OLLAMA_URL, json={
"model": "llama3",
"prompt": f"Does this question need current internet data? Answer YES or NO only: {question}",
"stream": False,
}).json()["response"].strip()
context = ""
if "YES" in check.upper():
context = f"\nCurrent search results:\n{scavio_search(question)}"
# Step 2: Generate answer locally with optional search context
resp = requests.post(OLLAMA_URL, json={
"model": "llama3",
"prompt": f"Answer this question using the provided context if available.{context}\n\nQuestion: {question}",
"stream": False,
})
return resp.json()["response"]
answer = ask_local_llm("What are the best rated coffee shops in Austin?")
print(answer)Ejemplo en JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const OLLAMA_URL = "http://localhost:11434/api/generate";
async function scavioSearch(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: {"x-api-key": SCAVIO_KEY, "Content-Type": "application/json"},
body: JSON.stringify({ query, country_code: "us" }),
});
const results = (await res.json()).organic_results || [];
return results.slice(0, 5).map(r => `- ${r.title}: ${r.snippet}`).join("\n");
}
async function askLocalLLM(question) {
const check = await fetch(OLLAMA_URL, {
method: "POST",
body: JSON.stringify({
model: "llama3",
prompt: `Does this question need current internet data? Answer YES or NO only: ${question}`,
stream: false,
}),
}).then(r => r.json());
let context = "";
if (check.response.toUpperCase().includes("YES")) {
context = `\nCurrent search results:\n${await scavioSearch(question)}`;
}
const resp = await fetch(OLLAMA_URL, {
method: "POST",
body: JSON.stringify({
model: "llama3",
prompt: `Answer this question using the provided context if available.${context}\n\nQuestion: ${question}`,
stream: false,
}),
}).then(r => r.json());
return resp.response;
}
const answer = await askLocalLLM("What are the best rated coffee shops in Austin?");
console.log(answer);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Google Maps
Búsqueda de negocios locales con calificaciones e información de contacto
YouTube
Búsqueda de videos con transcripciones y metadatos
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit