ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo agregar una API de búsqueda a OpenWebUI
Tutorial

Cómo agregar una API de búsqueda a OpenWebUI

Reemplace Tavily en OpenWebUI con una API de búsqueda multiplataforma. Configuración paso a paso para la búsqueda web en OpenWebUI usando Scavio.

Obtener clave API gratisDocumentacion API

OpenWebUI admite búsquedas web a través de Tavily, SearXNG y puntos finales personalizados. Después de que Nebius adquiriera Tavily en febrero de 2026, muchos usuarios quieren una alternativa. Scavio proporciona un punto final de búsqueda compatible que cubre Google, Amazon, YouTube, Walmart, Reddit y TikTok. Este tutorial muestra cómo configurar OpenWebUI para usar Scavio para la búsqueda web, ya sea a través de la configuración de búsqueda integrada o mediante una herramienta de función personalizada.

Requisitos previos

  • OpenWebUI instalado y ejecutándose
  • Una clave API de Scavio de scavio.dev
  • Python 3.9+ para el enfoque de función personalizada
  • Acceso de administrador a su instancia de OpenWebUI

Guia paso a paso

Paso 1: Crear una función de búsqueda de Scavio para OpenWebUI

OpenWebUI admite funciones personalizadas de Python como herramientas. Cree una función de búsqueda que llame a la API de Scavio y devuelva resultados formateados que el LLM pueda usar.

Python
# OpenWebUI Function Tool: scavio_search.py
# Add this as a Function in OpenWebUI Admin > Functions

import os
import requests
from typing import Optional

class Tools:
    def __init__(self):
        self.api_key = os.environ.get('SCAVIO_API_KEY', '')
        self.base_url = 'https://api.scavio.dev/api/v1/search'

    def search_web(self, query: str, num_results: Optional[int] = 5) -> str:
        """Search the web for current information using Scavio.
        Returns titles, snippets, and source URLs.
        """
        try:
            resp = requests.post(self.base_url,
                headers={'x-api-key': self.api_key,
                         'Content-Type': 'application/json'},
                json={'query': query, 'country_code': 'us',
                      'num_results': num_results or 5},
                timeout=10)
            resp.raise_for_status()
            results = resp.json().get('organic_results', [])
            if not results:
                return 'No results found.'
            return '\n\n'.join(
                f'[{i+1}] {r["title"]}\n{r.get("snippet", "")}\nSource: {r["link"]}'
                for i, r in enumerate(results)
            )
        except Exception as e:
            return f'Search error: {str(e)}'

Paso 2: Agregar herramientas de búsqueda específicas de la plataforma

Amplíe la función con herramientas para la búsqueda de Reddit, YouTube y Amazon. OpenWebUI mostrará cada uno como una herramienta separada que el LLM puede utilizar.

Python
# Extended Tools class with platform-specific methods
class Tools:
    def __init__(self):
        self.api_key = os.environ.get('SCAVIO_API_KEY', '')
        self.base_url = 'https://api.scavio.dev/api/v1/search'
        self.headers = {'x-api-key': self.api_key, 'Content-Type': 'application/json'}

    def _search(self, query: str, num: int = 5) -> list:
        resp = requests.post(self.base_url, headers=self.headers,
            json={'query': query, 'country_code': 'us', 'num_results': num}, timeout=10)
        resp.raise_for_status()
        return resp.json().get('organic_results', [])

    def search_web(self, query: str) -> str:
        """Search the web for current information."""
        results = self._search(query)
        return '\n\n'.join(f'[{i+1}] {r["title"]}\n{r.get("snippet","")}\nURL: {r["link"]}'
                            for i, r in enumerate(results)) or 'No results.'

    def search_reddit(self, query: str) -> str:
        """Search Reddit for community discussions and opinions."""
        results = self._search(f'site:reddit.com {query}')
        return '\n\n'.join(f'[{i+1}] {r["title"]}\n{r.get("snippet","")}\nURL: {r["link"]}'
                            for i, r in enumerate(results)) or 'No Reddit results.'

    def search_youtube(self, query: str) -> str:
        """Search YouTube for videos on a topic."""
        results = self._search(f'site:youtube.com {query}')
        return '\n\n'.join(f'[{i+1}] {r["title"]}\nURL: {r["link"]}'
                            for i, r in enumerate(results)) or 'No YouTube results.'

    def search_amazon(self, query: str) -> str:
        """Search Amazon for product information."""
        results = self._search(f'site:amazon.com {query}')
        return '\n\n'.join(f'[{i+1}] {r["title"]}\n{r.get("snippet","")}\nURL: {r["link"]}'
                            for i, r in enumerate(results)) or 'No Amazon results.'

Paso 3: Configurar el entorno e implementar

Configure la variable de entorno SCAVIO_API_KEY en su implementación de OpenWebUI y agregue la función a través del panel de administración.

Python
# Docker deployment: add to your docker-compose.yml or .env
# SCAVIO_API_KEY=your_key_here

# Or set in the OpenWebUI admin panel:
# 1. Go to Admin Panel > Functions
# 2. Click 'Create Function'
# 3. Paste the Tools class code
# 4. Set the function name to 'scavio_search'
# 5. Enable it globally or per-model

# Verify the setup with a test
import os, requests

def verify_openwebui_search():
    key = os.environ.get('SCAVIO_API_KEY')
    if not key:
        print('ERROR: SCAVIO_API_KEY not set')
        return False
    tools = Tools()
    result = tools.search_web('test query 2026')
    if 'error' in result.lower():
        print(f'ERROR: {result}')
        return False
    print('OpenWebUI search configured successfully')
    print(f'Test result preview: {result[:150]}')
    return True

verify_openwebui_search()

Paso 4: Pruebe consultas multiplataforma en OpenWebUI

Verifique que cada búsqueda de plataforma funcione correctamente ejecutando consultas de prueba. El LLM debe elegir automáticamente la herramienta de búsqueda adecuada en función de la pregunta del usuario.

Python
# Test all search functions
def test_all_tools():
    tools = Tools()
    tests = [
        ('search_web', 'latest AI news 2026'),
        ('search_reddit', 'best mechanical keyboard'),
        ('search_youtube', 'python tutorial beginners'),
        ('search_amazon', 'noise cancelling headphones'),
    ]
    for method_name, query in tests:
        method = getattr(tools, method_name)
        result = method(query)
        lines = result.split('\n')
        has_results = len(lines) > 1
        print(f'[{"PASS" if has_results else "FAIL"}] {method_name}')
        print(f'  Query: {query}')
        print(f'  First result: {lines[0][:60]}')
        print()

test_all_tools()
print('All tools ready for OpenWebUI')
print('Cost: $0.005 per search (250 free/month)')

Ejemplo en Python

Python
import os, requests

class ScavioOpenWebUI:
    def __init__(self):
        self.key = os.environ.get('SCAVIO_API_KEY', '')
        self.url = 'https://api.scavio.dev/api/v1/search'
        self.h = {'x-api-key': self.key, 'Content-Type': 'application/json'}
    def search(self, query, num=5):
        resp = requests.post(self.url, headers=self.h,
            json={'query': query, 'country_code': 'us', 'num_results': num})
        return resp.json().get('organic_results', [])
    def search_web(self, query):
        results = self.search(query)
        return '\n'.join(f'[{i+1}] {r["title"]}: {r.get("snippet","")}' for i, r in enumerate(results))
    def search_reddit(self, query):
        return self.search_web(f'site:reddit.com {query}')

tools = ScavioOpenWebUI()
print(tools.search_web('AI news 2026'))

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function searchForOpenWebUI(query, platform = 'web') {
  const prefixes = { reddit: 'site:reddit.com ', youtube: 'site:youtube.com ', amazon: 'site:amazon.com ' };
  const q = (prefixes[platform] || '') + 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: q, country_code: 'us', num_results: 5 })
  });
  const results = (await resp.json()).organic_results || [];
  return results.map((r, i) => `[${i+1}] ${r.title}\n${r.snippet || ''}\n${r.link}`).join('\n\n');
}

searchForOpenWebUI('AI agent tools 2026').then(console.log);

Salida esperada

JSON
[PASS] search_web
  Query: latest AI news 2026
  First result: [1] AI News: Latest Developments in Artificial

[PASS] search_reddit
  Query: best mechanical keyboard
  First result: [1] r/MechanicalKeyboards - Best keyboards mid-2

[PASS] search_youtube
  Query: python tutorial beginners
  First result: [1] Python Tutorial for Beginners - Full Course

[PASS] search_amazon
  Query: noise cancelling headphones
  First result: [1] Sony WH-1000XM6 Wireless Noise Cancelling

All tools ready for OpenWebUI
Cost: $0.005 per search (250 free/month)

Tutoriales relacionados

  • Cómo migrar de Tavily a Scavio después de la adquisición de Nebius
  • Cómo cambiar de Tavily a Scavio en una tubería LangChain RAG
  • Cómo agregar búsqueda a un asistente personal de Ollama
  • Cómo agregar búsqueda en tiempo real a Claude a través de MCP

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.

OpenWebUI instalado y ejecutándose. Una clave API de Scavio de scavio.dev. Python 3.9+ para el enfoque de función personalizada. Acceso de administrador a su instancia de OpenWebUI. 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

Comparison

Tavily vs Scavio

Read more
Use Case

Integración de búsqueda de OpenWebUI con API de búsqueda

Read more
Comparison

Tavily vs Scavio

Read more
Best Of

Las mejores alternativas de Tavily para la API de búsqueda en 2026

Read more
Best Of

Las mejores API de búsqueda para OpenWebUI en mayo de 2026

Read more
Use Case

Acceso web de IA de código abierto 2026

Read more

Empieza a construir

Reemplace Tavily en OpenWebUI con una API de búsqueda multiplataforma. Configuración paso a paso para la búsqueda web en OpenWebUI usando Scavio.

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