Agno チームを使用して自律型マルチエージェント・システムを構築できます。
チームは、タスクを達成するために連携するエージェント (or 他のサブチーム) のコレクションです。チームには、エージェントやチームのインスタンスである、メンバーのリストがあります。
Agno 2.x : Learn : チーム – 概要 & チームの構築
作成 : クラスキャット・セールスインフォメーション
作成日時 : 11/04/2025
バージョン : Agno 2.2.6
* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています。スニペットはできる限り日本語を使用しています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
 

Agno 2.x : Learn : チーム – 概要
Agno チームを使用して自律型マルチエージェント・システムを構築します。
チームは、タスクを達成するために連携するエージェント (or 他のサブチーム) のコレクションです。
チームには、エージェントやチームのインスタンスである、メンバーのリストがあります。
from agno.team import Team
from agno.agent import Agent
team = Team(members=[
    Agent(name="Agent 1", role="あなたは英語で質問に答えます"),
    Agent(name="Agent 2", role="あなたは中国語で質問に答えます"),
    Team(name="Team 1", members=[Agent(name="Agent 3", role="あなたはフランス語で質問に答えます")], role="あなたはチームメンバーと協力して、フランス語で質問に答えます"),
])
チームリーダーは、メンバーのロールとタスクの性質に依存して、タスクをメンバーに委任します。See the Delegation guide for more details.
エージェントと同様に、チームは以下の機能をサポートします :
- モデル : タスクをメンバーに割り当てるために、「チームリーダー」により使用されるモデルを設定します。
 - 指示 : チームリーダーに問題解決方法を指示します。チームメンバーの名前、説明やロールは自動的にチームリーダーに提供されます。
 - ツール : チームリーダーがツールを直接使用できる必要がある場合、ツールをチームに追加できます。
 - 推論 (Reasoning) : チームリーダーが、応答したり、チームメンバーにタスクを委任する前に「考える」こと、チームメンバーの応答の結果を「分析する」ことを可能にします。
 - ナレッジ : チームが情報を検索する必要がある場合、ナレッジベースをチームに追加できます。これはチームリーダーがアクセス可能です。
 - ストレージ : チームのセッション履歴と状態はデータベースに保存されます。これは、チームが会話を中断したところから再開することを可能にし、複数ターンにわたる長期の会話を可能にします。
 - メモリ : チームが以前のやり取りからの情報を保存して呼び出す機能を提供し、ユーザの好みを学習して応答をパーソナライズできます。
 
Agno 2.x : Learn : チーム – チームの構築
Agno でチームを構築する方法を学習します。
効果的なチームを構築するため、モデル、メンバーと指示だけの単純なものから始めましょう。それらが動作したら、必要に応じてより多くの機能を組み込みます。
以下は、専門エージェントを備えた、考えうる限り最も単純なチームです :
news_weather_team.py
from agno.team import Team
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
# Create specialized agents
news_agent = Agent(
    id="news-agent",
    name="News Agent", 
    role="最新のニュースを入手し、要約を提供します",
    tools=[DuckDuckGoTools()]
)
weather_agent = Agent(
    id="weather-agent",
    name="Weather Agent", 
    role="天気情報と予報を入手します", 
    tools=[DuckDuckGoTools()]
)
# Create the team
team = Team(
    name="News and Weather Team",
    members=[news_agent, weather_agent],
    model=OpenAIChat(id="gpt-4o"),
    instructions="チームメンバーと連携して、包括的な情報を提供します。ユーザのリクエストに基づいて、タスクを委任します。" 
)
team.print_response("東京の最新ニュースと天気予報はどうなっていますか?", stream=True)
💡 チームリーダーによる適切な識別のために、各チームメンバーの id, name と role フィールドを指定することを勧めます。id はチーム内やチームリーダーのコンテキストでチームメンバーを識別するために使用されます。
Note : モデルが指定されていない場合、チームメンバーは parent チームからモデルを継承します。明示的なモデルを持つメンバーはそれを保持します。ネストされたチームでは、メンバーは直属の (immediate) parent から継承します。モデルが指定されていないチームは OpenAI gpt-4o がデフォルトになります。
これは以下に適用されます : model, reasoning_model, parser_model, 及び output_model.
See the model inheritance example.
チームの実行
チームを実行する場合、Team.print_response() メソッドを使用して、端末でレスポンスを表示します。
例えば :
team.print_response("What's the latest news and weather in Tokyo?")
これは開発目的のみに使用され、本番環境での使用には推奨されません。本番環境では、Team.run() や Team.arun() メソッドを使用します。例えば :
from typing import Iterator
from agno.team import Team
from agno.agent import Agent
from agno.run.team import TeamRunOutputEvent
from agno.models.openai import OpenAIChat
from agno.utils.pprint import pprint_run_response
from agno.tools.duckduckgo import DuckDuckGoTools
news_agent = Agent(name="News Agent", role="最新ニュースを取得する。", tools=[DuckDuckGoTools()])
weather_agent = Agent(name="Weather Agent", role="今後7日間の天気予報を取得する。", tools=[DuckDuckGoTools()])
team = Team(
    name="News and Weather Team", 
    members=[news_agent, weather_agent],
    model=OpenAIChat(id="gpt-4o")
)
# Run team and return the response as a variable
response = team.run("東京の天気はどうですか?")
# Print the response
print(response.content)
################ STREAM RESPONSE #################
stream: Iterator[TeamRunOutputEvent] = team.run("東京の天気はどうですか?", stream=True)
for chunk in stream:
    if chunk.event == "TeamRunContent":
        print(chunk.content)
# ################ STREAM AND PRETTY PRINT #################
stream: Iterator[TeamRunOutputEvent] = team.run("東京の天気はどうですか?", stream=True)
pprint_run_response(stream, markdown=True)
出力例
INFO Agent 'News Agent' inheriting model from Team: gpt-4o INFO Agent 'Weather Agent' inheriting model from Team: gpt-4o こちらのリンクから、東京の現在の天気と今後7日間の天気予報を確認できます: - [東京の現在の天気 - AccuWeather](https://www.accuweather.com/en/jp/tokyo/226396/current-weather/226396) - [東京の7日間の天気予報 - AccuWeather](https://www.accuweather.com/en/jp/tokyo/226396/daily-weather-forecast/226396) どうぞご覧ください。 東京 の 今 後 7 日 間 の 天 気 予 報 は 、 [ ウェ ザ ーニ ュ ース の こちら の ページ ]( https :// weather news .jp / one box / ten ki /t ok yo / 131 00 /week .html ) で 確認 する こと が できます 。 詳細 な 予 報 を見る ため に リンク を クリック してください 。 ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 東京の最新の天気と今後7日間の天気予報について以下のリンクから詳しい情報を確認できます。 │ │ │ │ • 最新の天気情報: 日本気象協会 tenki.jp │ │ • 7日間の天気予報: freemeteo.jp │ │ │ │ これらのサイトでは、現在の天気、気温、降水確率などの詳細な情報が確認できますので、ぜひチェックしてみてください。delegate_task_to_member(member… │ │ task=東京の最新の天気予報を取得してください。特に現在の天気と今後7日間の予報に重点を置いてください。) completed in 0.0080s. │ │ 東京の最新の天気情報や今後7日間の天気予報については、以下のリンクから詳細をご覧いただけます: │ │ │ │ • 最新の天気情報: 日本気象協会 tenki.jp │ │ • 7日間の天気予報: freemeteo.jp │ │ │ │ これらのサイトでは、現在の天気や気温、降水確率などの情報が提供されていますので、参考になさってください。 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
端末に表示されるものを変更する
print_response を使用する場合、チームのツール呼び出し (通常はすべてのメンバーへの委任) だけが表示されます。メンバーからのレスポンスも表示したい場合、show_members_responses パラメータを使用できます。
team.print_response("What is the weather in Tokyo?", show_members_responses=True)
以上