Tavily popularizó la búsqueda de agente primero en 2023-2024, pero para 2026 los equipos están migrando para lograr una cobertura de plataforma más amplia y precios por llamada más bajos. Este tutorial es una guía de migración directa: mapeo de puntos finales, adaptador de forma de respuesta y un contenedor compatible con Tavily para usuarios de LangChain.
Requisitos previos
- Integración existente de Tavily
- Python 3.10+ o Nodo 20+
- Una clave API de Scavio
Guia paso a paso
Paso 1: Asignar puntos finales
Tavily /búsqueda de mapas a Scavio /búsqueda. Tavily /extraer mapas a Scavio /extraer.
# Tavily
POST https://api.tavily.com/search
# Scavio
POST https://api.scavio.dev/api/v1/searchPaso 2: Cuerpo de solicitud de mapa
La consulta de Tavily es el mismo campo. api_key se mueve al encabezado x-api-key.
# Tavily: {"api_key": "...", "query": "foo"}
# Scavio: headers={'x-api-key': '...'}, body={'query': 'foo'}Paso 3: Escribe un adaptador
Normalice la respuesta de Scavio a la forma de Tavily si no desea realizar cambios de código posteriores.
def tavily_shape(scavio_json):
return {
'results': [
{'url': r['link'], 'title': r['title'], 'content': r.get('snippet', '')}
for r in scavio_json.get('organic_results', [])
]
}Paso 4: Reemplazo directo
Una función preserva sus sitios de llamadas.
import requests, os
def tavily_search(query):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'query': query})
return tavily_shape(r.json())Paso 5: Intercambiar la herramienta LangChain
Reemplace TavilySearchResults con una herramienta Scavio personalizada.
from langchain.tools import Tool
scavio_tool = Tool.from_function(tavily_search, name='web_search', description='Web search')Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def tavily_search(query):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': query})
d = r.json()
return {'results': [{'url': x['link'], 'title': x['title'], 'content': x.get('snippet', '')} for x in d.get('organic_results', [])]}
print(tavily_search('anthropic sonnet 4.7 release'))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function tavilySearch(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query })
});
const d = await r.json();
return { results: (d.organic_results || []).map(x => ({ url: x.link, title: x.title, content: x.snippet })) };
}Salida esperada
Zero code changes downstream. Typical migration: 30-60 minutes. Cost reduction reported by users: 40-70% at same call volume.