OpenAIのAIエージェントSwarmとは?概要から使ってみたまで徹底解説
2024/10/12にOpenAIが新たなフレームワークとなるswarmを公開!
このフレームワークは複数のAIエージェントを協調的に実行することで、複雑なタスクを遂行させるために登場しました。しかし、OpenAIは本番環境での実装を想定しておらず、公式リリースはされておらず、注意が必要です。
本記事では、swarmについて紹介しつつ、google colaboratoryで実装する方法を解説します。本記事を最後まで読むことでgoogle colaboratoryでswarmを実装できるようになり、簡単にマルチエージェントシステムを複雑な設定なしに構築ができます。
ぜひ最後までお読みください!
swarmの概要
swarmは、OpenAIによって開発されたAIエージェントのネットワークを編成するための実験的なフレームワークです。
AIエージェントが互いに協調的かつ自律的に複雑なタスクに取り組むことを可能にする相互接続されたAIネットワークを作成するための技術を提供します。
しかし、OpenAIの研究者は、swarmは公式のOpenAI製品ではなく、実験的なコードであり、本番環境での使用を意図しておらず、OpenAIによってサポートされないことを明確にしています。
swarmが社会に与える影響
社会における影響として、swarmは企業の業務効率を大幅に向上させると期待されています。
異なる部門に特化したAIエージェントのネットワークを構築し、それぞれのエージェントが市場分析やマーケティング、顧客サポートなどを自動で行うことで、業務が大幅に効率化される可能性があります。これにより、企業は人間の介入を最小限に抑えながら、多くのタスクを実行し、戦略的な取り組みに集中させることができるでしょう。
一方で、swarmの普及には社会的な影響も大きく、いくつかの倫理的課題も伴います。
swarmと倫理的課題
swarmが登場したことにより、swarmが持つ自律性と複雑さ、社会に及ぼす潜在的な影響力により倫理的課題が話題になっています。
まず、セキュリティの面では、自律エージェントのネットワークにおける誤用や誤動作を防ぐために、強固な保護措置が必要。特に、悪意のある人物がswarmを悪用し、AIエージェントを制御して不正な活動を行わせるリスクが懸念されます。
また、偏見と公平性の問題も重要です。
swarmによって行われた決定が個人や社会に大きな影響を与えるため、その判断が偏っていないことや公平であることが求められるでしょう。特に、AIエージェントが学習するデータに偏りがあると、その偏見がエージェントに反映され、結果的に差別や不公平な扱いを生む可能性があります。
さらに、swarmが企業の業務効率を大幅に向上させることにより、人間の労働力が不要になる場面が増えるかもしれません。これにより、特にホワイトカラーの職業が自動化され、大規模な失業が発生する可能性が懸念されます。
AIエージェントが自律的に行動するようになると、問題が発生した際の責任の所在が不明瞭になることも課題です。AIエージェントの開発者や使用者、あるいはエージェント自体が問題に責任を負うべきか、明確なルールを策定することが必要です。
swarmのライセンス
swarmはMITライセンスです。そのため、基本的には商用利用や改変など自由に行うことができますが、その際には著作権表示とライセンス条件を含めることが必須です。
利用用途 | 可否 |
---|---|
商用利用 | ⭕️ |
改変 | ⭕️ |
配布 | ⭕️ |
特許使用 | ⭕️ |
私的使用 | ⭕️ |
なお、科学文献に強いAIエージェントについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
swarmの使い方
swarmのコードはGitHubに上がっているので、GitHubを参考にgoogle colaboratoryで実装します。
swarmを使う場合には、OpenAIのAPIキーが必要なので、OpenAIのAPIキーをまだ取得していない場合には、先に取得をしておきましょう。
OpenAIのAPIキー取得
まずはOpenAIのページにアクセスします。
APIキーを取得するためには、OpenAIのアカウントが必要なので右上からログインもしくはアカウントを作成しましょう。
ChatGPTのアカウントを持っていれば同じアカウントでログインできます。
ログインもしくはアカウント作成後に、「dashboard」と右上に表示されますので、そちらをクリックします。
dashboardに移動後、画面向かって左側に「API Keys」という表示があるので、そちらをクリック
APIキーを作成するためには、電話認証が必要なので、電話番号を登録します。
電話番号の認証が終了したら「+ Create new secret key」をクリックするとAPIキーを作成できます。
以前は無料クレジットが貰えていましたが、現在はもらえなくなっていました。また、従量課金制だったのですが、現在は前払い制になっているため、先に支払いをしなくてはいけません。
画面向かって右上の歯車アイコンをクリックして設定画面に移動し、左のメニューから「Billing」を選択。
支払い方法を登録していない場合はクレジット残高の下に「Add payment details」というボタンが表示されるのでクリックします。
登録できる支払い方法はクレジットカードのみです。個人での利用か会社での利用かを選んで、必要な情報を入力しましょう。
クレジットカードを登録した後はAPI用のクレジットを購入する必要があります。最低5ドルからで一度に保有できるクレジットの上限は100ドルです。
また、購入したクレジットの有効期限は1年なので、必要な分だけ購入するのがいいでしょう。
これでOpenAIのAPIキーを使えるようになりました。
google colaboratoryでswarmを実装する
ここからは実際にgoogle colaboratoryでswarmを実装します。GPUを消費していないので、無料版のgoogle colaboratoryでも利用することが可能です。
■Pythonのバージョン
Python 3.10以上
■使用ディスク量
29.2GB
■GPU RAMの使用量
0.0GB
■システムRAMの使用量
1.6GB
まずは必要ライブラリのインストールとAPIキーの設定を行っていきます。
(参考にしたコードはこちら)
GitHubのクローンはこちら
!git clone https://github.com/Sunwood-ai-labs/swarm-sample-box.git
必要ライブラリのインストールはこちら
!pip install git+https://github.com/openai/swarm.git
%cd swarm-sample-box
APIキーの設定はこちら
import os
# OpenAI APIキーを環境変数に設定
os.environ["OPENAI_API_KEY"] = "your_api_key"
これでswarmを使用する準備が整いました。
swarm client.runの引数
swarmのrun()関数は、Chat Completions APIのchat.completions.create()関数に類似しています。
ただし、違いとして、エージェントの関数実行、ハンドオフ、コンテキスト変数の参照を処理し、ユーザーに戻る前に複数のターンを取ることが可能です。
swarmのclient.run()は以下のループを実装できます。
- 現在のエージェントから完了を取得
- ツール呼び出しを実行し、結果を追加
- 必要に応じてエージェントを切り替え
- 必要に応じてコンテキスト変数を更新
- 新しい関数呼び出しがなければ、返す
引数 | 型 | 説明 | デフォルト |
---|---|---|---|
agent | Agent | 初期に呼び出されるエージェント | 必須 |
messages | List | メッセージオブジェクトのリスト Chat Completions messagesと一緒 | 必須 |
context_variables | dict | エージェントと関数の指示で使うことができる追加コンテキスト変数の辞書 | {} |
max_turns | int | 会話のターン数 | float("inf") |
model_override | str | エージェントが使用するモデルを変更するためのオプションの文字列。 | None |
execute_tools | bool | False の場合、エージェントが関数を呼び出そうとすると実行を中断し、直ちに tool_calls メッセージを返します。 | True |
stream | bool | Trueの場合、ストリーミング応答を有効にする | False |
debug | bool | Trueの場合、デバッグ・ロギングを有効にする | False |
応答フィールド
フィールド | 型 | 説明 |
---|---|---|
messages | List | 会話中に生成されたメッセージオブジェクトのリスト。Chat Completions messagesに非常に似ていますが、メッセージの送信元を示す送信者フィールドがあります。 |
agent | Agent | メッセージを処理する最後のエージェント。 |
context_variables | dict | 入力変数と同じで、変更点があればそれを加える。 |
Agentフィールド
フィールド | 型 | 説明 | デフォルト |
---|---|---|---|
name | str | エージェントの名前。 | "Agent" |
model | str | エージェントが使用するモデル。 | "gpt-4o" |
instructions | str or func() -> str | 文字列または文字列を返す callable である。 | "You are a helpful agent." |
functions | List | エージェントが呼び出せる関数のリスト。 | [] |
tool_choice | str | もしあれば、エージェントのツール選択。 | None |
swarm検証
GitHubのexamplesにサンプルが用意されているので、実際に1つずつ実行していきます。
基本的には以下のコードを一部変更すれば実行できるので、ぜひ試してみてください。
基本の実行コードはこちら
%cd /content/swarm-sample-box/examples/airline
! python main.py
airline
航空会社のカスタマーサービスに関連するシナリオをシミュレーションしており、ユーザーからのフライトに関するリクエストに対応する機能を実装しています。
airlineを実行する場合はこちら↓
実行コードはこちら
%cd /content/swarm-sample-box/examples/airline
! python main.py
airlineは以下のことを行ってくれます。
- 振り分けエージェント: リクエストの種類を判断し、適切なエージェントに転送。
- フライト変更エージェント: フライト変更に関するリクエストを処理し、さらに以下に振り分け。
- フライトキャンセルエージェント: フライトキャンセルリクエストを管理。
- フライト変更エージェント: フライト変更リクエストを管理。
- 手荷物紛失エージェント: 手荷物紛失の問い合わせを処理。
basic
基本的な機能やエージェント間の簡単な対話や処理の流れを示すために設計されています。主に、複雑な設定を行わずにswarmを使った簡単なAIエージェントシステムの動作を理解するために使用されます。
コードはこちら↓
basicの実行コードはこちら
%cd /content/swarm-sample-box/examples/basic
! python simple_loop_no_helpers.py
この実行動画はsimple_loop_no_helpers.pyを動かしている時の動画で、basicは実行ファイルを選ぶことで、様々なことを行うことができます。
それぞれどんなことができるか簡単に解説していきます。
agent_handoff.py: エージェント間の引き継ぎ
機能: 異なる言語を話すエージェント間でのスムーズな引き継ぎを示します。
使用法: スペイン語を話すユーザーを英語エージェントからスペイン語エージェントに転送します。
応用: 多言語カスタマーサポート、言語学習アプリケーション
bare_minimum.py: 最小限の設定
機能: Swarmの最も基本的な設定を示します。
使用法: シンプルなユーザーメッセージに応答するエージェントをセットアップします。
応用: 迅速なプロトタイピング、シンプルなチャットボットの作成
context_variables.py: コンテキスト変数の活用
機能: エージェントの動作をカスタマイズするためのコンテキスト変数の使用方法を示す。
使用法: コンテキスト変数を使用してユーザーを名前で挨拶し、アカウント詳細を表示。
応用: パーソナライズされたユーザー体験、動的なシステム設定管理。
function_calling.py: 関数呼び出し
機能: エージェントから特定の関数を呼び出す方法を示す。
使用法: 指定された場所の天気情報を返すことができるエージェントをセットアップ。
応用: リアルタイムデータ統合、APIとの連携、複雑なタスクの自動化。
simple_loop_no_helpers.py: シンプルな対話ループ
機能: ヘルパー関数を使用せずに基本的な対話ループを実装する方法を示す。
使用法: ユーザーがエージェントと継続的に対話できるループをセットアップし、会話を表示。
応用: カスタム対話システムの開発、長期的な対話セッションの管理。
customer_service_streaming
ストリーミング型のカスタマーサービスシステムをシミュレートしており、複数のAIエージェントが協力してリアルタイムでユーザーの問い合わせに対応する機能を示しています。
特に、ユーザーからの問い合わせを処理しながら、その場で関連する情報を提供したり、アクションを実行したりする複雑な対話型システムを構築する方法を学ぶためのものです。
customer_service_streamingを動かすには、追加でライブラリをインストールする必要があります。
追加ライブラリのインストールはこちら
!pip install loguru
!pip install art
!pip install pyfiglet
!pip install colorama
!pip install qdrant-client
上記をインストールするとセッションの再起動を求められるので、セッションを再起動しましょう。
すると、APIキーの設定も初期化されるので、再度APIキーをgoogle colaboratory上で設定する必要があるので注意してください。
APIキーの設定はこちら
import os
# OpenAI APIキーを環境変数に設定
os.environ["OPENAI_API_KEY"] = "your_api_key"
customer_service_streamingの実行はこちら
%cd /content/swarm-sample-box/examples/customer_service_streaming
! python main.py
以下のことが実行されます。
- ユーザー入力を分析し、適切な機能またはサブアシスタントにルーティング。
- 一般的な問い合わせを処理し、応答を調整。
- OpenAIのドキュメンテーションから関連情報を取得。
- ユーザーの問題やリクエストに対するヘルプチケットを作成。
- ユーザーへのメールを作成して送信。
- 複雑な問い合わせに対して文脈を考慮した応答を生成。
personal_shopper
パーソナルショッパーとは、個人的な買い物サポートを提供するエージェントをシミュレーションするもので、複数のAIエージェントが協力してユーザーの購入や返品、サポートリクエストに対応する機能があります。
personal_shopperの実行はこちら
%cd /content/swarm-sample-box/examples/personal_shopper
! python main.py
personal_shopperでは次のことが可能です。
- トリアージエージェント: リクエストの種類を判断し、適切なエージェントに転送。
- 払い戻しエージェント: 顧客の払い戻しを管理。払い戻しを開始するにはユーザーIDとアイテムIDの両方が必要。
- 販売エージェント: 注文に関連するアクションを処理。購入を完了するにはユーザーIDと製品IDの両方が必要。
support_bot
主にカスタマーサポートを自動化するためのエージェントシステムをシミュレーションしたものです。このサンプルでは、複数のAIエージェントが協力して、ユーザーの問い合わせやサポートリクエストに対応するプロセスを実装しています。
support_botの実行はこちら
%cd /content/swarm-sample-box/examples/support_bot
! python main.py
support_botでは以下のことができます。
- ユーザーインターフェースエージェント: 最初のユーザー対応を行い、必要に応じてヘルプセンターエージェントに案内。
- ヘルプセンターエージェント: 様々なツールを使用して詳細なヘルプとサポートを提供。Qdrant VectorDBとの統合により、ドキュメント検索も可能です。
triage_agent
特定のリクエストやタスクを適切なエージェントに振り分ける役割を持ったエージェントシステムをシミュレーションしています。
このコードは、ユーザーのリクエストを分類して、最も適切なエージェントにタスクを割り当てる「トリアージ」機能を実現する例を示しています。
triage_agentの実行はこちら
%cd /content/swarm-sample-box/examples/triage_agent
! python run.py
- トリアージエージェント: ユーザーの要求を分析し、適切なエージェントに転送。
- 販売エージェント: 販売に対して非常に熱心。
- 返金エージェント: 返金要求の処理を担当。
weather_agent
都市の天気情報を取得するためのエージェントシステムを示しています。このサンプルコードでは、エージェントがユーザーからのリクエストを受け取り、そのリクエストに基づいて外部の天気情報を取得し、ユーザーに提供する機能を実装しています。
weather_agentの実行はこちら
%cd /content/swarm-sample-box/examples/weather_agent
! python run.py
weather_agentでは以下のことができます。
- 天気情報取得: 特定の都市の天気を取得。
- メール送信: 天気情報を含むメールを送信。
- 単一エージェント: 複数の機能を1つのエージェントで処理。
なお、無料で簡単にAI開発できる自動化ツールについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
まとめ
本記事ではswarmについて紹介し、GitHubに掲載されているコードを実装しました。
公式リリースではありませんが、swarmはOpenAIが提供する実験的なフレームワークで、複数のAIエージェントが協力してタスクを実行できるマルチエージェントシステムを構築することができます。
Swarmはまだ実験段階であるため、公式発表されることを待って、キャッチアップするようにしたいと思います。発表があり次第、新しい情報を基に戦略を見直し、対応策を検討していく予定です!
AIエージェントに関連する記事は以下からご覧ください。
最後に
いかがだったでしょうか?
生成AIを活用したマルチエージェントシステムや業務自動化の導入で、貴社のビジネスプロセスを効率化しませんか?AIエージェントによる顧客対応やデータ分析の最適化など、最新の技術でビジネスに新たな価値を生み出すことが可能です。
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。