ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo fundamentar un LLM local con datos de búsqueda multiplataforma
Tutorial

Cómo fundamentar un LLM local con datos de búsqueda multiplataforma

Introduzca datos de Google, Reddit y YouTube en Ollama o llama.cpp para fundamentar las respuestas locales de LLM con un contexto multiplataforma en tiempo real. Guía paso a paso.

Obtener clave API gratisDocumentacion API

Los LLM locales como Llama 3 y Mistral se ejecutan sin enviar datos a la nube, pero carecen de conocimiento en tiempo real. Esto se resuelve al basarlos en datos de búsqueda multiplataforma: su LLM obtiene resultados de Google para respuestas objetivas, publicaciones de Reddit para opiniones de la comunidad y metadatos de YouTube para el contexto del video. Scavio proporciona las tres plataformas a través de un punto final POST a $0,005 por solicitud. Este tutorial crea una capa básica que dirige las consultas a las plataformas correctas según la intención.

Requisitos previos

  • Ollama o llama.cpp ejecutándose localmente
  • Python 3.9+ instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev

Guia paso a paso

Paso 1: Configurar funciones de búsqueda específicas de la plataforma

Cree funciones de búsqueda para Google, Reddit y YouTube. Cada uno normaliza los resultados en un formato común con metadatos específicos de la plataforma.

Python
import os, requests

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def search_google(query: str, num: int = 5) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': query, 'country_code': 'us', 'num_results': num})
    return [{'source': 'google', 'title': r['title'], 'snippet': r.get('snippet', ''),
             'url': r['link']} for r in resp.json().get('organic_results', [])]

def search_reddit(query: str, num: int = 5) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': f'site:reddit.com {query}', 'country_code': 'us', 'num_results': num})
    return [{'source': 'reddit', 'title': r['title'], 'snippet': r.get('snippet', ''),
             'url': r['link']} for r in resp.json().get('organic_results', [])]

def search_youtube(query: str, num: int = 3) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': f'site:youtube.com {query}', 'country_code': 'us', 'num_results': num})
    return [{'source': 'youtube', 'title': r['title'].replace(' - YouTube', ''),
             'snippet': r.get('snippet', ''), 'url': r['link']}
            for r in resp.json().get('organic_results', [])]

print('Multi-platform search ready')

Paso 2: Construya el enrutador de intención

Clasifique las consultas por intención para elegir en qué plataformas buscar. Las preguntas objetivas llegan a Google, las preguntas de opinión llegan a Reddit, las consultas prácticas llegan a YouTube.

Python
def classify_intent(query: str) -> list[str]:
    q = query.lower()
    platforms = []
    # Always include Google for factual grounding
    platforms.append('google')
    # Opinion and discussion queries -> Reddit
    opinion_words = ['best', 'worst', 'recommend', 'opinion', 'experience',
                     'worth it', 'vs', 'alternative', 'should i']
    if any(w in q for w in opinion_words):
        platforms.append('reddit')
    # Tutorial and how-to queries -> YouTube
    howto_words = ['how to', 'tutorial', 'guide', 'setup', 'install',
                   'configure', 'build', 'demo', 'walkthrough']
    if any(w in q for w in howto_words):
        platforms.append('youtube')
    return platforms

# Test intent classification
for q in ['what is the capital of France',
          'best laptop for programming 2026',
          'how to deploy fastapi on railway']:
    print(f'{q} -> {classify_intent(q)}')

Paso 3: Crear el generador de contexto multiplataforma

Recopile resultados de todas las plataformas relevantes y formatéelos como contexto LLM. Cada fuente está claramente etiquetada para que el LLM pueda citar plataformas en su respuesta.

Python
import time

def build_context(query: str) -> str:
    platforms = classify_intent(query)
    all_results = []
    for p in platforms:
        if p == 'google':
            all_results.extend(search_google(query))
        elif p == 'reddit':
            all_results.extend(search_reddit(query))
        elif p == 'youtube':
            all_results.extend(search_youtube(query))
        time.sleep(0.2)
    # Format for LLM consumption
    lines = [f'Search results for: {query}', f'Platforms searched: {", ".join(platforms)}', '']
    for i, r in enumerate(all_results, 1):
        lines.append(f'[{i}] ({r["source"].upper()}) {r["title"]}')
        if r['snippet']:
            lines.append(f'    {r["snippet"][:200]}')
        lines.append(f'    URL: {r["url"]}')
        lines.append('')
    context = '\n'.join(lines)
    print(f'Built context: {len(all_results)} results from {len(platforms)} platforms')
    return context

ctx = build_context('best python web framework 2026')
print(ctx[:500])

Paso 4: Conéctese al LLM local

Envíe el contexto de búsqueda y la pregunta del usuario a Ollama. El mensaje del sistema indica al LLM que responda solo desde los resultados de búsqueda y cite las fuentes por número y plataforma.

Python
LLM_URL = 'http://localhost:11434/v1/chat/completions'

def ask_local_llm(context: str, question: str) -> str:
    messages = [
        {'role': 'system', 'content': (
            'You are a helpful assistant. Answer based on the search results provided. '
            'Cite sources as [1], [2] etc. Mention which platform (Google, Reddit, YouTube) '
            'the information comes from. If results are insufficient, say so.'
        )},
        {'role': 'user', 'content': f'{context}\n\nQuestion: {question}'}
    ]
    resp = requests.post(LLM_URL, json={
        'model': 'llama3', 'messages': messages, 'max_tokens': 512
    })
    return resp.json()['choices'][0]['message']['content']

def grounded_answer(question: str) -> dict:
    context = build_context(question)
    answer = ask_local_llm(context, question)
    platforms = classify_intent(question)
    return {'question': question, 'answer': answer,
            'platforms': platforms, 'cost': len(platforms) * 0.005}

result = grounded_answer('best python web framework 2026')
print(f'Q: {result["question"]}')
print(f'A: {result["answer"]}')
print(f'Platforms: {result["platforms"]}, Cost: ${result["cost"]}')

Ejemplo en Python

Python
import os, requests, time

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
LLM = 'http://localhost:11434/v1/chat/completions'

def multi_search(query):
    results = []
    for prefix in ['', 'site:reddit.com ', 'site:youtube.com ']:
        resp = requests.post(URL, headers=H,
            json={'query': f'{prefix}{query}', 'country_code': 'us', 'num_results': 3})
        results.extend(resp.json().get('organic_results', []))
        time.sleep(0.2)
    return results

def grounded_ask(question):
    results = multi_search(question)
    ctx = '\n'.join(f'[{i+1}] {r["title"]}: {r.get("snippet","")}' for i, r in enumerate(results))
    resp = requests.post(LLM, json={'model': 'llama3', 'messages': [
        {'role': 'system', 'content': 'Answer from search results. Cite [1],[2] etc.'},
        {'role': 'user', 'content': f'{ctx}\n\nQ: {question}'}], 'max_tokens': 512})
    return resp.json()['choices'][0]['message']['content']

print(grounded_ask('best python framework for APIs 2026'))

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const URL = 'https://api.scavio.dev/api/v1/search';

async function multiSearch(query) {
  const results = [];
  for (const prefix of ['', 'site:reddit.com ', 'site:youtube.com ']) {
    const resp = await fetch(URL, {
      method: 'POST',
      headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
      body: JSON.stringify({ query: `${prefix}${query}`, country_code: 'us', num_results: 3 })
    });
    results.push(...((await resp.json()).organic_results || []));
  }
  return results;
}

async function groundedAsk(question) {
  const results = await multiSearch(question);
  const ctx = results.map((r, i) => `[${i+1}] ${r.title}: ${r.snippet || ''}`).join('\n');
  const resp = await fetch('http://localhost:11434/v1/chat/completions', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ model: 'llama3', messages: [
      { role: 'system', content: 'Answer from search results. Cite [1],[2].' },
      { role: 'user', content: `${ctx}\n\nQ: ${question}` }], max_tokens: 512 })
  });
  return (await resp.json()).choices[0].message.content;
}

groundedAsk('best python framework for APIs 2026').then(console.log);

Salida esperada

JSON
Built context: 9 results from 3 platforms

Q: best python web framework 2026
A: Based on the search results across multiple platforms:

Google sources indicate FastAPI and Django remain the top choices [1][2].
Reddit discussions show strong community preference for FastAPI for new
API projects [4][5]. YouTube tutorials are heavily focused on FastAPI
deployment [7][8].

Platforms: ['google', 'reddit', 'youtube'], Cost: $0.015

Tutoriales relacionados

  • Cómo agregar búsqueda a un asistente personal de Ollama
  • Cómo construir una base de conocimientos personal con LLM local y búsqueda
  • Cómo agregar conexión a tierra de búsqueda a una canalización RAG de LangChain en 2026
  • Cómo construir un agente RAG con LangChain y Scavio

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Ollama o llama.cpp ejecutándose localmente. Python 3.9+ instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de búsqueda para la conexión a tierra de LLM local en 2026

Read more
Best Of

Las mejores API para pilas de herramientas de investigación locales en 2026

Read more
Workflow

Diario Local LLM Search Grounding Pipeline

Read more
Solution

Búsqueda local de LLM después de Google Paywall

Read more
Use Case

Búsqueda web de agentes para LLM local

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

Empieza a construir

Introduzca datos de Google, Reddit y YouTube en Ollama o llama.cpp para fundamentar las respuestas locales de LLM con un contexto multiplataforma en tiempo real. Guía paso a paso.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad