このノートでは マルチエージェント・ウェブ・ブラウザ:ウェブを使って問題を解決するために、複数のエージェントが協力するエージェント・システム!
を使った単純な階層構造になります。 マネージド・エージェント
オブジェクトで管理されたウェブ検索エージェントをラップします:
コピー
+----------------+ | マネージャーエージェント +----------------+ | _______________|______________ | | コードインタープリタ ツール | マネージドエージェント | | +------------------+ | | ウェブ検索エージェント | +------------------+ | | | | | | ウェブ検索ツール | ウェブページ訪問ツール +--------------------------------+
このシステムをセットアップしよう。
以下の行を実行して、必要な依存関係をインストールする:
コピー
pip install markdownify duckduckgo-search smolagents --upgrade -q
HF Inference APIを呼び出すためにログインしよう:
コピー
from huggingface_hub import ログイン ログイン()
⚡️ 私たちのエージェントは、以下によって運営される。 Qwen/Qwen2.5-コーダー-32B-インストラクター 使用して HfApiModel
HFの推論APIを使用するクラスです。推論APIを使えば、どんなOSモデルでも素早く簡単に実行することができます。
注: Inference APIは、様々な基準に基づいたモデルをホストしており、配備されたモデルは予告なく更新または置き換えられる可能性があります。詳しくはこちら これ.
コピー
model_id = "Qwen/Qwen2.5-Coder-32B-Instruct"
🔍 ウェブ検索ツールを作る #
ウェブ・ブラウジングでは、すでに既存の DuckDuckGoSearchツール
ツールを使ってGoogle検索と同等の機能を提供する。
しかし、その場合、次のようなページも必要となる。 DuckDuckGoSearchツール
.そのためには、ライブラリ内蔵の ウェブページ訪問ツール
しかし、どのように仕上がっているかを確認するために、もう一度作るつもりだ。
それでは ウェブページ訪問ツール
を使用してゼロからツールを作成する。 マークダウン化
.
コピー
インポート インポート リクエスト from markdownify import markdownify from requests.exceptions import RequestException from smolagents import tool ツール def visit_webpage(url: str) -> str: """与えられたURLでウェブページを訪問し、その内容をマークダウン文字列として返します。 引数 url:訪問するウェブページのURL。 戻り値: Markdownに変換されたウェブページのコンテンツ、またはリクエストが失敗した場合はエラーメッセージ。 """ を試みます: # URLにGETリクエストを送る response = requests.get(url) response.raise_for_status() # ステータスコードが不正な場合に例外を発生させる # HTMLコンテンツをMarkdownに変換する markdown_content = markdownify(response.text).strip() # 複数の改行を削除する markdown_content = re.sub(r"˶n{3,}", "˶n", markdown_content) return markdown_content except RequestException as e: return f "ウェブページの取得エラー:str(e)}""ウェブページの取得エラー: {str(e)}" except Exception as e: return f "予期しないエラーが発生しました:{str(e)}""予期せぬエラーが発生しました。
では、ツールを初期化してテストしてみよう!
コピー
print(visit_webpage("https://en.wikipedia.org/wiki/Hugging_Face")[:500])
マルチエージェントシステムの構築 🤖 🤖 🤖 ↪So_1F91D #
すべてのツールが揃った今 探索
そして 訪問_ウェブページ
ウェブエージェントを作成するために使用することができます。
このエージェントにはどのコンフィギュレーションを選べばいいのか?
- ウェブブラウジングは、並列ツールコールを必要としないシングル・タイムライン・タスクであるため、JSONツールコールはそれに適している。そのため
JsonAgent
. - また、ウェブ検索では、正しい答えを見つけるまでに何ページも探さなければならないことがあるため、検索するページ数を増やしたい。
最大ステップ数
から10まで。
コピー
from smolagents import ( CodeAgent、 ToolCallingAgent、 HfApiModel、 ManagedAgent、 DuckDuckGoSearchTool、 LiteLLMModel、 ) model = HfApiModel(model_id) web_agent = ToolCallingAgent( tools=[DuckDuckGoSearchTool(), visit_webpage]、 model=model、 max_steps=10、 )
このエージェントを マネージド・エージェント
これは、マネージャー・エージェントから呼び出し可能になる。
コピー
managed_web_agent = ManagedAgent( エージェント=web_agent、 name="search"、 description="ウェブ検索を実行します。引数としてクエリを渡してください、 )
最後に、マネージャエージェントを作成し、初期化時に管理エージェントの マネージド・エージェント
という議論になる。
このエージェントは、計画や思考を担当するため、高度な推論が有益である。 コードエージェント
が最良の選択だろう。
また、当年を含む質問をし、追加のデータ計算をしたい。 additional_authorized_imports=["time", "numpy", "pandas"]。
エージェントがこれらのパッケージを必要とする場合に備えて。
コピー
manager_agent = CodeAgent( tools=[]、 model=model、 managed_agents=[managed_web_agent]、 additional_authorized_imports=["time", "numpy", "pandas"]、 )
以上だ!では、システムを動かしてみよう!計算と調査が必要な問題を選びます:
コピー
answer=manager_agent.run("LLMトレーニングが2030年まで現在のリズムでスケールアップし続けるとしたら、2030年までに最大のトレーニングを実施するために必要な電力はGWで何GWになるでしょうか?それは、いくつかの国と比べてどの程度に相当しますか?使用した数値の出典を教えてください。")
その答えがこのレポートだ:
コピー
現在の成長予測とエネルギー消費量の見積もりに基づくと、LLM研修が現在のリズムで2030年まで拡大し続けた場合、次のようになる。 2030年まで現在のリズムで拡大した場合 1.2030年までに最大の研修を実施するために必要な電力は約303.74GWとなり、これは年間約2,660,762GWhに相当する。 これは、年間約2,660,762GWhに相当する。 2.これを各国の電力消費量と比較すると - 中国の総電力消費量の約34%に相当する。 - インド(184%)、ロシア(267%)、日本(291%)の総電力消費量を上回る。 - イタリアやメキシコのような国の電力消費量の9倍近くになる。 3.数字の出所: - 将来のLLMトレーニングの5GWという最初の見積もりは、AWSのマット・ガーマンCEOによるものである。 - 成長予測には、スプリングス社の市場調査による年平均成長率79.80%を使用。 - 各国の電力消費データは、米国エネルギー情報局(U.S. Energy Information Administration)によるもので、主に2021年のものである。 2021.
となると、それなりのパワープラントが必要になりそうだ。 スケーリング仮説 はこれからも変わらない。
我々のエージェントは、タスクの解決に向けて効率的に協力することができた!✅
💡 このオーケストレーションを、より多くのエージェントに簡単に拡張することができます:1つはコードの実行、1つはウェブ検索、1つはファイルのロードを処理...。