在LangChain中使用博查搜索API實現智能搜索 原創
本文將深入探討如何在LangChain框架中集成博查搜索API(Bocha Web Search API),以實現智能化的搜索功能。通過詳細的設置步驟、實用的代碼示例以及全面的解決方案,幫助開發者輕松獲取并利用實時搜索引擎信息,提升應用的智能化水平。
引言
在當今AI應用迅猛發展的時代,搜索引擎成為眾多應用程序和網站的重要組成部分。LangChain作為一個強大的語言模型集成框架,能夠通過與多種API接口的結合,顯著提升應用的智能化和互動性。而博查搜索API(Bocha Web Search API)作為博查公司提供的企業級互聯網網頁搜索接口,賦予開發者通過編程方式訪問博查搜索引擎的豐富搜索結果和相關信息的能力。
博查搜索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 = ""
BOCHA = ""
# 定義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密鑰
'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、網頁發布時間等。"
)
# 請改成您自己的語言模型
# llm =
# 初始化代理,包含您的自定義工具
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技術,推動社會責任和可持續發展。
