Reference:Dtawhale wow agent day07
検索エンジン API の申請#
私たちは Bocha API を使用します;
主な特徴
- コンテンツの適合性と高品質:データソースと検索結果は国内の安全基準に準拠しており、データは海外に出ず、B 端企業ユーザーのアプリケーションシナリオを満たし、AI アプリケーションにクリーンで正確、高品質な検索結果を提供します。
- マルチモーダル混合検索:キーワード + ベクトルの混合検索をサポートし、bocha-semantic-reranker を使用して二次的にソートし、検索結果と質問の関連性を大幅に向上させ、検索結果にはウェブページ、画像、動画、抖音動画などのマルチモーダルコンテンツが含まれます。
- マルチモデル AI 検索:すでにアリババの通義千問、字節の雲雀大モデル、月の暗面 Kimi などの国内トップ AI 大モデルが接続されており、ユーザーは具体的なニーズに応じて異なるモデルを選択して検索できます。
- インテリジェントエージェント検索:AI インテリジェントエージェントを導入し、より豊かで深い回答を提供します。現在はベータテスト段階です。レストラン検索、ホテル検索、観光地検索など、さまざまな生活、ビジネス、知識に関するインテリジェントエージェントがあります。
検索エンジンエージェント#
カスタム 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:
# 大モデルに返すためのフォーマットされた検索結果テキスト
# Bochaの検索結果をカスタマイズして処理できます
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 API を使用してネット検索を行う bocha_web_search_tool という関数を定義し、それをエージェントに統合することを主に目的としています。
テスト#
# テストケース
query = "アリババ2024年のESGレポートは主にどのような内容を扱っていますか?"
response = agent.chat(f"以下の内容を検索してください:{query}")
print(response)