检索增强生成 (RAG) 代理通过将 LLM 响应基于检索到的文档来提高答案质量。大多数 RAG 管道使用过时的静态向量存储。通过将 Scavio 作为检索工具插入 LangChain 代理,该代理可以按需获取实时 Google 搜索结果、YouTube 成绩单或亚马逊产品数据。本教程安装 langchain-savio,将其连接到 LangChain ReAct 代理,并运行需要实时检索才能准确回答的问题。
前置条件
- Python 3.10 或更高版本
- pip install langchain langchain-scavio langchain-openai
- Scavio API 密钥
- OpenAI API 密钥(或替换任何与 LangChain 兼容的 LLM)
操作指南
步骤 1: 安装依赖项
安装 LangChain、Scadio 集成包和 LLM 提供程序。 langchain-savio 包将 ScavioSearch 作为 LangChain 工具公开。
pip install langchain langchain-scavio langchain-openai步骤 2: 导入并配置 ScadioSearch
ScavioSearch 将 Scavio API 包装为 LangChain BaseTool。传递您的 API 密钥并可选择限制到特定平台。
from langchain_scavio import ScavioSearch
search_tool = ScavioSearch(
api_key="your_scavio_api_key",
platform="google",
country_code="us",
max_results=5
)步骤 3: 创建 ReAct 代理
将搜索工具绑定到具有 OpenAI LLM 的 LangChain 代理。代理将决定何时调用搜索工具。
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)步骤 4: 运行代理
向代理提出需要实时信息的问题。它将调用 Scavio、检索结果并综合答案。
result = executor.invoke({"input": "What are the latest Python web frameworks released in 2026?"})
print(result["output"])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"])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);预期输出
{
"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\", ..."}]
}
]
}