Agregue la base de Reddit a un agente de IA identificando consultas que se benefician de los datos de la experiencia de la comunidad, buscando en Reddit a través de una API de búsqueda, analizando títulos y comentarios de hilos e inyectando el contexto de la comunidad en el mensaje del agente. Los LLM capacitados en datos web ya contienen algunos conocimientos de Reddit, pero están desactualizados y son genéricos. La búsqueda en vivo de Reddit muestra opiniones actuales, experiencias de usuarios reales y consensos de la comunidad que ningún conjunto de datos de capacitación puede igualar. Esto es particularmente valioso para recomendaciones de productos, resolución de problemas y preguntas de "¿alguien ha probado X?".
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un agente de IA existente al que agregar conexión a tierra
Guia paso a paso
Paso 1: Identificar consultas que necesitan datos de la comunidad
Cree un clasificador que detecte cuándo una consulta de usuario se beneficiaría de los datos de la comunidad de Reddit en comparación con la búsqueda web general.
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
REDDIT_SIGNALS = [
'has anyone', 'anyone tried', 'experience with', 'thoughts on',
'recommendation', 'recommend', 'which is better', 'worth it',
'honest review', 'real experience', 'actually use', 'daily driver',
'regret buying', 'switched from', 'alternative to',
]
def needs_reddit(query: str) -> bool:
q_lower = query.lower()
if any(signal in q_lower for signal in REDDIT_SIGNALS):
return True
# Product recommendation pattern
if 'best' in q_lower and ('for' in q_lower or '?' in q_lower):
return True
return False
print(needs_reddit('Has anyone tried the new Pixel 9?')) # True
print(needs_reddit('Python list comprehension syntax')) # False
print(needs_reddit('Best CRM for small teams?')) # TruePaso 2: Buscar en Reddit a través de API
Busque en Reddit a través de Scavio para encontrar hilos y discusiones relevantes.
def search_reddit(query: str, limit: int = 5) -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'reddit', 'query': query}, timeout=15)
resp.raise_for_status()
results = resp.json().get('organic_results', [])[:limit]
return [{
'title': r.get('title', ''),
'url': r.get('link', ''),
'snippet': r.get('snippet', ''),
'subreddit': r.get('subreddit', r.get('source', '')),
} for r in results]
threads = search_reddit('best CRM for small business')
for t in threads:
print(f"r/{t['subreddit']}: {t['title'][:60]}")Paso 3: Analizar el contexto del hilo
Extraiga y formatee los datos del hilo de Reddit en un bloque de contexto conciso para el agente.
def format_reddit_context(threads: list) -> str:
if not threads:
return ''
parts = ['COMMUNITY CONTEXT (from Reddit):']
for t in threads[:3]:
parts.append(f"\nThread: {t['title']}")
if t.get('subreddit'):
parts.append(f"Subreddit: {t['subreddit']}")
if t.get('snippet'):
parts.append(f"Summary: {t['snippet'][:200]}")
parts.append('\nNote: These are community opinions, not verified facts.')
return '\n'.join(parts)
context = format_reddit_context(threads)
print(context)Paso 4: Inyectar contexto en el indicador del agente
Agregue el contexto de Reddit al mensaje del sistema del agente cuando la consulta coincida con los patrones de datos de la comunidad.
def grounded_prompt(query: str, system_prompt: str = 'You are a helpful assistant.') -> str:
prompt_parts = [system_prompt]
if needs_reddit(query):
threads = search_reddit(query)
reddit_context = format_reddit_context(threads)
if reddit_context:
prompt_parts.append(reddit_context)
prompt_parts.append('Use the community context above to inform your response. Cite specific threads when relevant.')
prompt_parts.append(f'\nUser: {query}')
return '\n\n'.join(prompt_parts)
prompt = grounded_prompt('Has anyone tried the Framework laptop? Is it worth it?')
print(prompt[:500])Paso 5: Pruebe la calidad de la conexión a tierra
Compare las respuestas de los agentes con y sin conexión a tierra de Reddit para medir la mejora de la calidad.
def test_grounding(queries: list):
for q in queries:
is_reddit = needs_reddit(q)
if is_reddit:
threads = search_reddit(q)
print(f'Query: {q}')
print(f' Reddit grounding: YES ({len(threads)} threads found)')
for t in threads[:2]:
print(f' - {t["title"][:60]}')
else:
print(f'Query: {q}')
print(f' Reddit grounding: NO (general web search sufficient)')
print()
test_queries = [
'Has anyone tried Cursor IDE?',
'Python dictionary methods',
'Best standing desk recommendation?',
'Experience with Hetzner hosting?',
'SQL JOIN syntax',
]
test_grounding(test_queries)Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def reddit_ground(query):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'reddit', 'query': query}).json()
threads = data.get('organic_results', [])[:3]
return '\n'.join(f"{t.get('title', '')}: {t.get('snippet', '')[:100]}" for t in threads)
print(reddit_ground('best CRM for small business'))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function redditGround(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform: 'reddit', query})
});
const threads = (await r.json()).organic_results || [];
return threads.slice(0, 3).map(t => `${t.title}: ${(t.snippet || '').slice(0, 100)}`).join('\n');
}
redditGround('best CRM for small business').then(console.log);Salida esperada
An AI agent that detects community-data queries, searches Reddit for relevant threads, and injects community context into its responses for more authentic recommendations.