OpenAI Swarmのexampleフォルダには、さまざまなユースケースに基づいたサンプルが用意されています。これらのサンプルは、Swarmの基本的な使い方や応用方法を学ぶ上で非常に役立ちます。このセクションでは、`basic`という名前のサンプルについて詳しく説明します。
`basic`サンプルは、OpenAI Swarmの最もシンプルな使い方を示す例です。このサンプルは、エージェントのセットアップから始まり、エージェント間でタスクをハンドオフする基本的なプロセスを示しています。まず、複数のエージェントがどのように連携して動作するかを理解するために、シンプルなエージェントAとエージェントBを作成します。
たとえば、以下のコードでエージェントAがエージェントBに会話を引き継ぐ(ハンドオフする)流れを作ります:
from swarm import Swarm, Agent # SwarmとAgentクラスをインポート client = Swarm() # Swarmのクライアントを作成 def transfer_to_agent_b(): # エージェントBに会話を引き継ぐ関数 return agent_b # エージェントBを返すことで、会話の引き継ぎを実行 agent_a = Agent( # エージェントAを作成 name="Agent A", # エージェントAの名前を設定 instructions="You are a helpful agent.", # エージェントAに与える指示 functions=[transfer_to_agent_b], # 会話をエージェントBに引き継ぐ関数を指定 ) agent_b = Agent( # エージェントBを作成 name="Agent B", # エージェントBの名前を設定 instructions="Only speak in Haikus." # エージェントBは俳句のみを話すように設定 ) response = client.run( # エージェントAからユーザーのリクエストを処理開始 agent=agent_a, # 最初にエージェントAを使用 messages=[{"role": "user", "content": "エージェントBと話したいです。"}] # ユーザーがエージェントBと話したいとリクエスト ) print(response.messages[-1]["content"]) # 最後の応答メッセージを表示(日本語で出力される可能性があります)
上記のコードでは、エージェントAが「エージェントBと話したい」というユーザーからのリクエストを受け取り、エージェントBにハンドオフします。このとき、エージェントBは俳句のみを話すという役割を持っています。このように、各エージェントが異なる役割を持ち、必要に応じてタスクを他のエージェントに引き継ぐことができるのがSwarmの特徴です。
この`basic`サンプルは、Swarmの「エージェント」と「ハンドオフ」という2つの重要な概念を理解するのに最適です。エージェントは、それぞれ特定の指示や役割を持ち、必要に応じてタスクを別のエージェントにハンドオフします。これにより、各エージェントが得意とする分野で効率的にタスクを処理し、全体として柔軟かつ拡張性の高いシステムを構築することが可能です。
例えば、エージェントAは一般的な質問に答えることを得意とし、エージェントBは俳句を提供することを得意とする、といった形で役割分担が行われます。これにより、ユーザーは状況に応じた最適な応答を得ることができます。
`basic`サンプルは、Swarmの基礎的な動作を理解するために設計されており、特に教育的な価値が高いとされています。初心者でも簡単にエージェント間のやり取りやハンドオフの流れを体験できるため、マルチエージェントシステムの基本概念を学ぶための良い出発点となるでしょう。
このように、`basic`サンプルを使うことで、Swarmの基本的な使い方を理解し、実際の応用に向けた知識を深めることができます。他のサンプルと組み合わせて学ぶことで、さらに複雑なエージェント間の連携やタスクの自動化に対応できるようになります。
OpenAI Swarmを使ったエージェントの構築には、さまざまなアプローチがあります。このガイドでは、どのようにして目的に応じたエージェントを作成するかについて、逆引き形式で解説します。Swarmはマルチエージェントシステムを軽量に構築するためのフレームワークであり、特定のタスクを得意とするエージェントを連携させることで柔軟なシステムを構築することが可能です。
シンプルにユーザーのリクエストに応答するエージェントを作成したい場合、Swarmの`Agent`クラスを使って以下のように作成できます。
from swarm import Swarm, Agent client = Swarm() agent_a = Agent( name="Agent A", instructions="ユーザーの質問に答えるエージェントです。" ) response = client.run( agent=agent_a, messages=[{"role": "user", "content": "こんにちは"}] ) print(response.messages[-1]["content"])
特定のタスクをエージェントごとに分担させるには、ハンドオフの概念を利用します。ユーザーの質問内容に応じて別のエージェントに引き継ぐことで、柔軟な応答を可能にします。
from swarm import Swarm, Agent client = Swarm() def transfer_to_agent_b(): return agent_b agent_a = Agent( name="Agent A", instructions="一般的な質問に答えます。", functions=[transfer_to_agent_b] ) agent_b = Agent( name="Agent B", instructions="技術的な質問に答えます。" ) response = client.run( agent=agent_a, messages=[{"role": "user", "content": "技術的な質問があります"}] ) print(response.messages[-1]["content"]) - このコードでは、一般的な質問はエージェントAが、技術的な質問はエージェントBが担当します。
ユーザーの状態やコンテキストに応じてエージェントを切り替えることも可能です。たとえば、会話の内容が特定の条件を満たす場合にのみ別のエージェントに引き継ぐといった使い方です。
from swarm import Swarm, Agent client = Swarm() def check_and_transfer(context_variables): if context_variables.get("is_vip", False): return vip_agent return regular_agent regular_agent = Agent( name="Regular Agent", instructions="通常のサポートを提供します。" ) vip_agent = Agent( name="VIP Agent", instructions="VIP顧客向けの特別サポートを提供します。" ) agent_a = Agent( name="Agent A", instructions="顧客の状態に応じてサポートを提供します。", functions=[check_and_transfer] ) context = {"is_vip": True} response = client.run( agent=agent_a, messages=[{"role": "user", "content": "サポートが必要です"}], context_variables=context ) print(response.messages[-1]["content"])
顧客の問い合わせ内容に応じて、一般的な質問は通常サポートエージェント、技術的な質問は技術サポートエージェントに引き継ぎます。
ユーザーのスケジュール管理や家事、買い物リストの作成など、タスクごとに異なるエージェントを用意して、自動的にタスクを分担させるパーソナルアシスタントを構築します。
複数の学習領域に対応するエージェントを作り、数学、英語、歴史など、科目に応じて適切なエージェントに質問を振り分けます。
旅行計画を支援するエージェントで、フライト、ホテル、観光地の情報をそれぞれの担当エージェントが提供し、総合的な旅行プランを作成します。
エージェントが詩、短編小説、ブログ記事などを生成するために特化しており、ユーザーのリクエストに応じて適切なエージェントが創作を担当します。
ユーザーの症状を診断し、軽症ならセルフケアエージェント、重症の場合は医師への連絡を担当するエージェントに引き継ぎます。
ユーザーのリクエストに応じて、翻訳が必要な場合は翻訳エージェント、文化的な情報が必要な場合は文化情報エージェントに振り分けるシステム。
就職面接のシミュレーションを行うエージェントで、一般的な質問と技術的な質問の両方に対応するようにエージェントを分けて訓練を提供します。
企業のFAQページに代わるチャットボットで、商品の問い合わせには製品サポートエージェント、返品や返金についてはカスタマーサポートエージェントに引き継ぎます。
プロジェクトの進行を支援するエージェントで、タスクの進行管理、リソース割り当て、問題解決など、各タスクに応じて異なるエージェントに対応させます。
OpenAI Swarmを使用すると、特定のタスクを持ったエージェントを複数作成し、状況に応じてエージェント間でタスクをハンドオフするシステムを簡単に構築できます。これにより、ユーザー体験を向上させるだけでなく、業務効率の向上にも寄与します。用途に応じてエージェントを設計し、それらをSwarmで連携させることで、柔軟で強力なマルチエージェントシステムを構築しましょう。