OpenAI Agents SDK

はじめに

 今回は、最近リリースされたOpenAIのAgents SDKを紹介する。いま流行りのAIエージェントを作るためのフレームワーク(Pythonライブラリ)である。

環境構築(概略)

 まず最初にOpenAIのアカウントを作り、APIキーを作成しておく。次に、「openai-agents」をインストールする。詳細なインストール手順は本家を見てほしい。

サンプルプログラム

 本家にアップされているREADME.mdに簡単なサンプルが3つ掲載されている。

  • Hello world example
  • Handoffs example
  • Functions example

それぞれを少しずつアレンジして紹介する。

Hello world example

 ユーザの質問に何でも答えるエージェントを作る。サンプルプログラムは以下の通り。

他のサンプルとも共通するエージェントの作成と実行の基本が書かれている。

  • 9行目と10行目:APIキーを環境変数にセットする。
  • 13行目:クラスAgentのインスタンスを作成する。
  • 14行目:クラスRunnerのクラスメソッドrun_syncを実行する。

run_syncは、その名称から分かる通り同期処理を行うメソッドである。他のサンプルでは非同期処理も登場する。上のプログラムの出力は以下の通り。

Handoffs example

 handoffとは「引き継ぎ」と言う意味である。つまり、リクエストを見て適当なエージェントに回答を任せるということである。例えば、リクエストが日本語の場合は日本語エージェントに、リクエストが英語の場合は英語エージェントに引き継ぐ。これを実現するプログラムは以下の通り。

  • 13行目:スペイン語エージェントを作る。
  • 14行目:日本語エージェントを作る。
  • 15行目:英語エージェントを作る。
  • 16行目:エージェントを選定するエージェントを作る。triageとは選別・選定の意。19行目で各エージェントを渡していることに注意する。
  • 23行目:非同期で実行されるメイン関数の定義
  • 24行目から33行目:特定の言語でリクエストを投げる(Runner.runの実行)。awaitがあるから、全ての処理が終わるまでこの関数で待つ。
  • 37行目:非同期でメイン関数を実行する。

出力は以下の通り。
日本語の場合

英語の場合

スペイン語の場合

Functions example

 ユーザが定義した関数を呼び出すエージェントを作ることができる。

  • 13行目から15行目:エージェントが呼び出す関数を定義する。
  • 21行目:Agentのインスタンスを作るとき引数として上の関数get_countryを渡す。

上のプログラムを実行すると、入力プロンプト「日本の首都は何ですか」から「日本」を抽出し、これを変数countryに代入し、15行目の文章が作られる。出力は以下の通り。

応用例

 README.mdに書かれていない応用例として、外部ツールを呼び出し今日の天気を返してくれるエージェントを作る。

ここでは、外部ツールとして、OpenWeatherMapというサービスを利用した。あらかじめアカウントを作り、APIキーを取得しておく必要がある。また、URLに地名を埋め込む際に地名を英訳する必要があるので、deep_translatorというPythonライブラリも利用した(前回取り上げたライブラリ)。

  • 21行目から39行目まで:エージェントが呼び出す関数get_weatherを定義する。
  • 23行目:get_weatherに渡される引数cityは日本語の地名である。これを英訳する。
  • 24行目:OpenWeatherMapを利用するためのAPIである。eng_cityとアクセスキーOPENWEATHERMAP_API_KEYを埋め込む。
  • 29行目から32行目:天気情報を取り出す。
  • 33行目から37行目:文章に天気情報を埋め込む。

出力は以下の通り。

名古屋を東京や大阪に変えればそれぞれの天気を得ることができる。関数get_weatherが返す文章は英語であるが、最終的な文章は日本語になった。これは予想しなかった振る舞いである。

まとめ

 AIエージェントを作成するフレームワークであるAgents SDKを紹介した。AIエージェントを作るフレームワークは既に存在しており、有名なものとしてLangGraphがある。今回、OpenAIから純正のフレームワークが出たことになる。LangGraphは他社の生成AIもバックエンドとして使うことができるので、どちらが良いかは一概には言えないが、OpenAIの生成AIを使うのであれば、Agents SDKを選択すべきであろう。

Kumada Seiya

Kumada Seiya

仕事であろうとなかろうと勉強し続ける、その結果”中身”を知ったエンジニアになれる

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP