Los agentes de generación aumentada de recuperación (RAG) mejoran la calidad de las respuestas al basar las respuestas de LLM en documentos recuperados. La mayoría de las canalizaciones RAG utilizan almacenes de vectores estáticos que se vuelven obsoletos. Al conectar Scavio a un agente de LangChain como herramienta de recuperación, el agente puede obtener resultados de búsqueda en vivo de Google, transcripciones de YouTube o datos de productos de Amazon a pedido. Este tutorial instala langchain-scavio, lo conecta a un agente LangChain ReAct y ejecuta una pregunta que requiere recuperación en vivo para responder con precisión.
Requisitos previos
- Python 3.10 o superior
- pip instalar langchain langchain-scavio langchain-openai
- Una clave API de Scavio
- Una clave API de OpenAI (o sustituir cualquier LLM compatible con LangChain)
Guia paso a paso
Paso 1: Instalar dependencias
Instale LangChain, el paquete de integración Scavio y un proveedor de LLM. El paquete langchain-scavio expone ScavioSearch como una herramienta LangChain.
pip install langchain langchain-scavio langchain-openaiPaso 2: Importar y configurar ScavioSearch
ScavioSearch envuelve la API de Scavio como una LangChain BaseTool. Pase su clave API y, opcionalmente, restrinja a una plataforma específica.
from langchain_scavio import ScavioSearch
search_tool = ScavioSearch(
api_key="your_scavio_api_key",
platform="google",
country_code="us",
max_results=5
)Paso 3: Crear el agente ReAct
Vincule la herramienta de búsqueda a un agente de LangChain con un LLM de OpenAI. El agente decidirá cuándo llamar a la herramienta de búsqueda.
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain import hub
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, [search_tool], prompt)
executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)Paso 4: Ejecute el agente
Invoque al agente con una pregunta que requiera información en vivo. Llamará a Scavio, recuperará los resultados y sintetizará una respuesta.
result = executor.invoke({"input": "What are the latest Python web frameworks released in 2026?"})
print(result["output"])Ejemplo en Python
import os
from langchain_scavio import ScavioSearch
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain import hub
os.environ["OPENAI_API_KEY"] = "your_openai_key"
os.environ["SCAVIO_API_KEY"] = "your_scavio_api_key"
search_tool = ScavioSearch(
api_key=os.environ["SCAVIO_API_KEY"],
platform="google",
country_code="us",
max_results=5
)
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, [search_tool], prompt)
executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)
if __name__ == "__main__":
result = executor.invoke({"input": "What are the latest AI frameworks released in 2026?"})
print(result["output"])Ejemplo en JavaScript
// LangChain.js integration with Scavio via HTTP tool
const { ChatOpenAI } = require("@langchain/openai");
const { DynamicTool } = require("@langchain/core/tools");
const { AgentExecutor, createReactAgent } = require("langchain/agents");
const { pull } = require("langchain/hub");
const API_KEY = process.env.SCAVIO_API_KEY;
const searchTool = new DynamicTool({
name: "scavio_search",
description: "Search the web for current information",
func: async (query) => {
const res = 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, country_code: "us" })
});
const data = await res.json();
return JSON.stringify(data.organic_results?.slice(0, 3) || []);
}
});
async function main() {
const llm = new ChatOpenAI({ model: "gpt-4o" });
const prompt = await pull("hwchase17/react");
const agent = await createReactAgent({ llm, tools: [searchTool], prompt });
const executor = new AgentExecutor({ agent, tools: [searchTool] });
const result = await executor.invoke({ input: "Latest AI news in 2026?" });
console.log(result.output);
}
main().catch(console.error);Salida esperada
{
"input": "What are the latest AI frameworks released in 2026?",
"output": "Based on search results, several AI frameworks launched in 2026 including...",
"intermediate_steps": [
{
"action": "scavio_search",
"action_input": "AI frameworks released 2026",
"observation": "[{\"title\": \"Top AI Frameworks 2026\", ..."}]
}
]
}