Hanah

Hanah

わおエージェント day07 検索エンジンエージェント

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)
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。