LangChain+博查搜索API轻松实现实时信息搜索
引言
在当今的许多应用中,能够实时获取搜索引擎结果对于研究、市场分析和内容创作等任务至关重要。本文将介绍如何使用LangChain框架结合博查搜索API来实时获取搜索引擎结果信息。通过本教程,您将学会如何配置博查搜索API并将其集成到LangChain代理中,以实现自动化的搜索查询处理。
博查搜索API支持近亿级网页内容的搜索,涵盖网页、图片、新闻、天气、医疗、万年历、火车、星座属相、贵金属、汇率、油价、手机、股票、汽车等多种内容源。这使其不仅适用于各类AI应用和检索增强生成(RAG)应用,还能为AI智能体的开发提供坚实的数据支持。此外,博查搜索API在数据安全、成本控制和内容合规性方面表现出色,解决了开发者在集成搜索功能时常见的诸多挑战。
实现步骤
为了在LangChain中成功集成博查搜索API,实现智能搜索功能,请按照以下步骤操作:
1. 获取API Key
前往 博查AI开放平台(https://open.bochaai.com) 注册并登录您的开发者账户,在控制台导航到“API KEY管理”页面,创建一个新的应用以获取您的专属API Key。请妥善保管此密钥,因为它将用于后续的API调用授权。
2. 定义博查搜索API为 LangChain 的 Tool
使用以下示例代码,将博查搜索API集成到LangChain中,定义为一个自定义的Tool。这将允许LangChain在处理请求时调用博查搜索API,实现实时的信息检索。
示例代码
详细代码:https://aq6ky2b8nql.feishu.cn/wiki/XXCsw2Dyjiny8OkJl0KcWjyOnDb
import requests
from langchain.agents import initialize_agent, Tool, AgentType
from langchain_openai import ChatOpenAI
from langchain.tools import tool
OPENAI_API_KEY = "YOUR-OPENAI-API-KEY"
BOCHA_API_KEY = "YOUR-BOCHA-API-KEY"
# 定义Bocha Web Search工具
@tool
def bocha_websearch_tool(query: str, count: int = 10) -> str:
"""
使用Bocha Web Search API 进行网页搜索。
参数:
- query: 搜索关键词
- count: 返回的搜索结果数量
返回:
- 搜索结果的详细信息,包括网页标题、网页URL、网页摘要、网站名称、网站Icon、网页发布时间等。
"""
url = 'https://api.bochaai.com/v1/web-search'
headers = {
'Authorization': f'Bearer {BOCHA_API_KEY}', # 请替换为你的API密钥
'Content-Type': 'application/json'
}
data = {
"query": query,
"freshness": "noLimit", # 搜索的时间范围,例如 "oneDay", "oneWeek", "oneMonth", "oneYear", "noLimit"
"summary": True, # 是否返回长文本摘要总结
"count": count
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
json_response = response.json()
try:
if json_response["code"] != 200 or not json_response["data"]:
return f"搜索API请求失败,原因是: {response.msg or '未知错误'}"
webpages = json_response["data"]["webPages"]["value"]
if not webpages:
return "未找到相关结果。"
formatted_results = ""
for idx, page in enumerate(webpages, start=1):
formatted_results += (
f"引用: {idx}\n"
f"标题: {page['name']}\n"
f"URL: {page['url']}\n"
f"摘要: {page['summary']}\n"
f"网站名称: {page['siteName']}\n"
f"网站图标: {page['siteIcon']}\n"
f"发布时间: {page['dateLastCrawled']}\n\n"
)
return formatted_results.strip()
except Exception as e:
return f"搜索API请求失败,原因是:搜索结果解析失败 {str(e)}"
else:
return f"搜索API请求失败,状态码: {response.status_code}, 错误信息: {response.text}"
# 创建LangChain工具
bocha_tool = Tool(
name="BochaWebSearch",
func=bocha_websearch_tool,
description="使用Bocha Web Search API 进行搜索互联网网页,输入应为搜索查询字符串,输出将返回搜索结果的详细信息,包括网页标题、网页URL、网页摘要、网页内容、网站名称、网站Icon、网页发布时间等。"
)
# 初始化OpenAI语言模型
llm = ChatOpenAI(
model="gpt-4o-mini",
temperature=0,
openai_api_key=OPENAI_API_KEY
)
# 初始化代理,包含您的自定义工具
agent = initialize_agent(
tools=[bocha_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 使用代理进行查询
user_question = "请告诉我阿里巴巴2024年ESG报告中的亮点"
response = agent.run(user_question)
print(response)
响应结果
阿里巴巴2024年ESG报告的亮点包括:1) 自身运营减排量达到232万吨,同比提升63.5%;2) 清洁电力使用比例提升至39%;3) 价值链排放强度下降7%至每百万元营收8.1吨;4) 阿里云数据中心电力使用效率保持亚洲领先,清洁电力使用比例达到56%;5) 通过“数智循环物流”方案,菜鸟网络在物流环节减排45.8万吨;6) 平台生态减排量达到3333.8万吨,同比增长45.5%。此外,阿里巴巴还在医疗、助老、助残等领域应用AI技术,推动社会责任和可持续发展。
完整思考链
> Entering new AgentExecutor chain...
我需要查找阿里巴巴2024年ESG报告的相关信息,以了解其中的亮点。
Action: BochaWebSearch
Action Input: "阿里巴巴 2024 ESG 报告 亮点"
Observation:
此处省略10条详细引用信息···
> Finished chain.
阿里巴巴2024年ESG报告的亮点包括:1) 自身运营减排量达到232万吨,同比提升63.5%;2) 清洁电力使用比例提升至39%;3) 价值链排放强度下降7%至每百万元营收8.1吨;4) 阿里云数据中心电力使用效率保持亚洲领先,清洁电力使用比例达到56%;5) 通过“数智循环物流”方案,菜鸟网络在物流环节减排45.8万吨;6) 平台生态减排量达到3333.8万吨,同比增长45.5%。此外,阿里巴巴还在医疗、助老、助残等领域应用AI技术,推动社会责任和可持续发展。