ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo agregar búsquedas a Ollama después del cierre de Google CSE
Tutorial

Cómo agregar búsquedas a Ollama después del cierre de Google CSE

Reemplace el obsoleto motor de búsqueda personalizado de Google en su configuración de Ollama con la API de Scavio. Obtenga resultados de búsqueda estructurados para LLM locales en minutos.

Obtener clave API gratisDocumentacion API

Google dejó de utilizar su nivel de API JSON de motor de búsqueda personalizado gratuito a principios de 2026, rompiendo miles de configuraciones de LLM locales que dependían de él para la conexión a Internet. Si su asistente basado en Ollama usó CSE para la búsqueda, necesita un reemplazo directo que devuelva JSON estructurado, no requiera OAuth y funcione con una clave API simple. El punto final de búsqueda de Scavio acepta el mismo patrón de entrada y salida de consultas y devuelve datos más completos, incluidas descripciones generales de IA y la gente también pregunta. Este tutorial migra su integración de búsqueda de Ollama de CSE a Scavio en menos de 20 líneas de código.

Requisitos previos

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

Guia paso a paso

Paso 1: Eliminar la antigua integración CSE

Identifique y elimine el código de cliente de Google CSE. El patrón CSE típico utiliza un parámetro cx y un punto final googleapis.com que ya no funciona.

Python
# OLD CSE code (no longer works as of 2026):
# response = requests.get(
#     'https://www.googleapis.com/customsearch/v1',
#     params={'key': CSE_KEY, 'cx': CSE_ID, 'q': query}
# )

# NEW: Scavio replaces the above
import os, requests

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

Paso 2: Construya la función de búsqueda de Scavio para Ollama

Cree una función de búsqueda que coincida con la interfaz que espera su herramienta Ollama. Devuelve resultados en un formato que el LLM pueda analizar.

Python
def web_search(query: str, num_results: int = 5) -> str:
    """Search the web and return formatted results for the LLM."""
    resp = requests.post(URL, headers=H,
        json={'query': query, 'country_code': 'us', 'num_results': num_results})
    resp.raise_for_status()
    data = resp.json()
    results = data.get('organic_results', [])
    formatted = []
    for r in results:
        formatted.append(f"Title: {r['title']}\nURL: {r['link']}\nSnippet: {r.get('snippet', '')}")
    return '\n\n'.join(formatted)

Paso 3: Búsqueda por cable en la llamada de herramientas de Ollama

Registrar la función de búsqueda como herramienta que Ollama puede llamar durante la generación. Esto utiliza el cliente Python de Ollama con soporte de herramientas.

Python
import ollama

def run_ollama_with_search(prompt: str, model: str = 'llama3.1') -> str:
    tools = [{
        'type': 'function',
        'function': {
            'name': 'web_search',
            'description': 'Search the web for current information',
            'parameters': {
                'type': 'object',
                'properties': {
                    'query': {'type': 'string', 'description': 'Search query'}
                },
                'required': ['query']
            }
        }
    }]
    response = ollama.chat(model=model, messages=[{'role': 'user', 'content': prompt}], tools=tools)
    # Handle tool calls
    if response.message.tool_calls:
        for tc in response.message.tool_calls:
            if tc.function.name == 'web_search':
                search_results = web_search(tc.function.arguments.get('query', prompt))
                # Feed results back to the model
                messages = [
                    {'role': 'user', 'content': prompt},
                    response.message,
                    {'role': 'tool', 'content': search_results}
                ]
                final = ollama.chat(model=model, messages=messages)
                return final.message.content
    return response.message.content

print(run_ollama_with_search('What are the top Python web frameworks in 2026?'))

Ejemplo en Python

Python
import os, requests, ollama

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def web_search(query, num=5):
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': query, 'country_code': 'us', 'num_results': num})
    results = resp.json().get('organic_results', [])
    return '\n'.join(f'{r["title"]}: {r.get("snippet","")}' for r in results)

def ask_with_search(prompt, model='llama3.1'):
    tools = [{'type': 'function', 'function': {
        'name': 'web_search', 'description': 'Search the web',
        'parameters': {'type': 'object', 'properties': {
            'query': {'type': 'string'}}, 'required': ['query']}}}]
    resp = ollama.chat(model=model, messages=[{'role': 'user', 'content': prompt}], tools=tools)
    if resp.message.tool_calls:
        results = web_search(resp.message.tool_calls[0].function.arguments.get('query', prompt))
        final = ollama.chat(model=model, messages=[
            {'role': 'user', 'content': prompt}, resp.message,
            {'role': 'tool', 'content': results}])
        return final.message.content
    return resp.message.content

print(ask_with_search('Latest AI news 2026'))

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function webSearch(query) {
  const resp = 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', num_results: 5 })
  });
  const data = await resp.json();
  return (data.organic_results || []).map(r => `${r.title}: ${r.snippet || ''}`).join('\n');
}

async function askOllamaWithSearch(prompt) {
  const resp = await fetch('http://localhost:11434/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model: 'llama3.1', messages: [{ role: 'user', content: prompt }],
      tools: [{ type: 'function', function: { name: 'web_search',
        description: 'Search the web', parameters: { type: 'object',
        properties: { query: { type: 'string' } }, required: ['query'] }}}]
    })
  });
  const data = await resp.json();
  if (data.message?.tool_calls?.length) {
    const results = await webSearch(data.message.tool_calls[0].function.arguments.query);
    console.log('Search results:', results);
  }
}

askOllamaWithSearch('Latest AI news 2026');

Salida esperada

JSON
Search results for: 'top Python web frameworks 2026'

Title: FastAPI 1.0 Released: The Modern Python Web Framework
URL: https://fastapi.tiangolo.com/release-notes/
Snippet: FastAPI 1.0 brings stable APIs and improved performance...

Title: Django 6.0 Features Overview
URL: https://docs.djangoproject.com/en/6.0/
Snippet: Django 6.0 introduces async-first ORM and built-in AI...

Ollama response: Based on current search results, the top Python web frameworks in 2026 are FastAPI 1.0, Django 6.0, and Litestar...

Tutoriales relacionados

  • Cómo crear una pila de respaldo de búsqueda para LLM locales
  • Cómo conectar Scavio MCP a LLM locales

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 instalado y 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 alternativas de Google CSE: actualizado en mayo de 2026

Read more
Solution

Migrar fuera de Google CSE antes de enero de 2027

Read more
Glossary

Desuso del motor de búsqueda personalizado (CSE) de Google en 2027

Read more
Comparison

Google CSE (Paid Tier) vs Third-Party SERP API (Scavio, SerpApi, Serper)

Read more
Best Of

Los mejores reemplazos de Google CSE en 2026

Read more
Use Case

Búsqueda local de LLM después del cierre de Google CSE

Read more

Empieza a construir

Reemplace el obsoleto motor de búsqueda personalizado de Google en su configuración de Ollama con la API de Scavio. Obtenga resultados de búsqueda estructurados para LLM locales en minutos.

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