申請搜索引擎 API#
我們使用博查 API;
主要特點
- 內容合規且高質量:數據來源和搜索結果符合國內安全規範,數據不出海,滿足 B 端企業用戶應用場景,能為 AI 應用提供乾淨、準確、高質量的搜索結果。
- 多模態混合搜索:支持關鍵字 + 向量混合搜索,使用 bocha-semantic-reranker 進行二次排序,顯著提升搜索結果與問題的相關性,搜索結果包含網頁、圖片、視頻、抖音視頻等多模態內容。
- 多模型 AI 搜索:已經接入了阿里通義千問、字節雲雀大模型、月之暗面 Kimi 等國產頂尖 AI 大模型,用戶可以根據具體需求選擇不同的模型進行搜索。
- 智能體搜索:引入 AI 智能體,提供更加豐富和深入的答案,目前處於內測階段。如餐廳搜索、酒店搜索、景點搜索等多種生活類、商業類、知識類智能體。
搜索引擎 Agent#
自定義 llm 和讀入 API 之後;
from llama_index.core.tools import FunctionTool
import requests
# 需要先把BOCHA_API_KEY填寫到.env文件中去。
BOCHA_API_KEY = os.getenv('BOCHA_API_KEY')
# 定義Bocha Web Search工具
def bocha_web_search_tool(query: str, count: int = 8) -> str:
"""
使用Bocha Web Search API進行聯網搜索,返回搜索結果的字符串。
參數:
- query: 搜索關鍵詞
- count: 返回的搜索結果數量
返回:
- 搜索結果的字符串形式
"""
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:
# 返回給大模型的格式化的搜索結果文本
# 可以自己對博查的搜索結果進行自定義處理
return str(response.json())
else:
raise Exception(f"API請求失敗,狀態碼: {response.status_code}, 錯誤信息: {response.text}")
search_tool = FunctionTool.from_defaults(fn=bocha_web_search_tool)
from llama_index.core.agent import ReActAgent
agent = ReActAgent.from_tools([search_tool], llm=llm, verbose=True)
這段代碼主要是定義了一個名為 bocha_web_search_tool 的函數,用於通過 Bocha Web Search API 進行網絡搜索,並將其集成到一個代理(agent)中。
測試#
# 測試用例
query = "阿里巴巴2024年的ESG報告主要講了哪些內容?"
response = agent.chat(f"請幫我搜索以下內容:{query}")
print(response)