El problema
Los LLM alucinan con confianza, y sin una verificacion externa, las respuestas erroneas llegan a los usuarios. Los conjuntos de datos de evaluacion interna se desactualizan en semanas. La retroalimentacion de usuarios es escasa: la mayoria que recibe una respuesta incorrecta se va en silencio. Los equipos necesitan una capa de verificacion en tiempo real que no dependa de revision humana ni conjuntos de pruebas estaticos.
La solucion de Scavio
Despues de que el LLM genera una respuesta, extrae sus afirmaciones clave y verifica cada una contra una busqueda en vivo de Scavio. Si los resultados de busqueda contradicen la afirmacion, marca la respuesta para correccion o agrega una advertencia antes de enviarla al usuario. Esto crea un ciclo automatizado de verificacion de hechos que detecta alucinaciones en tiempo real sin requerir revisores humanos.
Antes
Antes de la verificacion basada en busqueda, un bot orientado al cliente le dijo a un usuario que un producto de software costaba $49/mes cuando el precio real era $79/mes. El usuario se registro esperando el precio menor y abrio un ticket de soporte. El equipo descubrio el error tres dias despues durante una revision manual.
Después
Tras agregar verificacion por busqueda, la afirmacion de precio del bot se verifica contra una busqueda en vivo en Google de la pagina de precios del producto. La alucinacion de $49 se marca porque los resultados muestran $79. El bot se corrige antes de que el usuario vea el precio incorrecto. Los errores de precios cayeron a casi cero.
Para quien es
Equipos de IA que lanzan productos LLM orientados al cliente y necesitan una capa automatizada de verificacion de hechos para detectar alucinaciones antes de que lleguen a los usuarios.
Beneficios clave
- Deteccion de alucinaciones en tiempo real sin revision humana
- Detecta errores de precios, fechas y datos antes de que lleguen a los usuarios
- Una llamada API por verificacion de afirmacion a $0.005
- Funciona como filtro post-generacion en cualquier pipeline LLM
- Los resultados de busqueda proporcionan citas para la respuesta correcta
Ejemplo en Python
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def verify_claim(claim: str, entity: str) -> dict:
"""Verify an LLM-generated claim against live search results."""
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{entity} {claim[:80]}'}, timeout=10).json()
snippets = [o.get('snippet', '') for o in r.get('organic', [])[:3]]
claim_lower = claim.lower()
support_signals = sum(1 for s in snippets if any(
term in s.lower() for term in claim_lower.split() if len(term) > 4))
return {
'claim': claim,
'supported': support_signals >= 2,
'evidence': snippets,
'action': 'pass' if support_signals >= 2 else 'flag_for_review'
}
result = verify_claim('Scavio costs $30 per month', 'Scavio search API pricing')
print(json.dumps(result, indent=2))Ejemplo en JavaScript
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function verifyClaim(claim, entity) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'google', query: `${entity} ${claim.slice(0, 80)}` })
}).then(r => r.json());
const snippets = (r.organic || []).slice(0, 3).map(o => o.snippet || '');
const terms = claim.toLowerCase().split(' ').filter(t => t.length > 4);
const support = snippets.filter(s =>
terms.some(t => s.toLowerCase().includes(t))).length;
return { claim, supported: support >= 2, evidence: snippets,
action: support >= 2 ? 'pass' : 'flag_for_review' };
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas