Hello Agents! - OpenAI Agents SDK
最近仕事で,AIエージェントの開発に関わっています。現職(現配属チーム)では,エージェントフレームワークとしてOpenAI AgentKitを使っています。
AgentKitはそれ自体が具体的なツールというわけではなく,ここでリストアップされているように,多数のフレームワーク/ツールキットからなるツールキット群で,必要なツールを選んで組み合わせて使う感じです。たとえば,私が触っているのはこのあたりのツール群です。
Hello, Agents!
本エントリでは,Agents SDK (Python) のドキュメントを参考に,初歩的なエージェントを書いて動作させます。
ところでエージェントって何なの
マーケティング用語としての「AIエージェント」はさておき,Agents SDKのドキュメントでは,
Agents are the core building block in your apps. An agent is a large language model (LLM), configured with instructions and tools.
エージェントはアプリの中核となる構成要素です。エージェントとは、指示とツールで構成された大規模言語モデル(LLM)です。
と説明されています。エンジニアリングの視点から見てメンタルモデルが作りやすく,使いやすい定義だと思います。
OpenAI のフレームワークなので,少なくとも現時点では,「LLM」はOpenAIのモデルに限定されます。また,Agents SDKはResponses APIを抽象化したラッパーであるため,LLMのI/FとしてはResponses APIが前提となります。そのためResponses APIのリファレンスも併せて参照すると捗ります。というよりは,Responses APIを知らないとHello World以上のことはできないため,嫌でも詳しくなれます。
2025/12/05追記
LiteLLM を介して,OpenAI以外のモデルを使うことができる,とご指摘をいただきました。ありがとうございます。
この初日の記事で OpenAI のモデルのみとなっていましたが、実は他のモデルも併用できます(ただし、その場合は handoff したいなら Responses API と混ぜないとか、当然 OpenAI の組み込みツールは使えないなどの制約はあります)
https://openai.github.io/openai-agents-python/ja/models/litellm/
from Kazuhiro Seraさん https://bsky.app/profile/seratch.bsky.social/post/3m77dr6kamk2x
また,このドキュメントによると,Responses API以外にChat Completions APIも使えるみたいです。
Hello Agents!
Agents SDKは,複数のエージェントを協調動作させるマルチエージェントシステムのためのツールキットですが,まずは,ひとつのエージェントだけからなる簡単なアプリを作ります。
以下のコードはmanコマンドをツールとして使い,日本語でやさしくLinuxコマンドの使い方を教えてくれるエージェントです。
デモ用のREPL utilityが用意されていて,とりあえず対話的に動かして試行錯誤する時はこれを使うのが便利です。
"""man コマンドを実行するツール"""
return f
= .
return f
return
=
=
await
Agent の初期化コードを見ると,最初に引用した定義どおり,指示(instructions)とツール(tools)とモデル(model)を指定していることがわかります。
@function_tool デコレータは,普通のPythonの関数をエージェントが使えるツールとして登録するためのおまじないです。docstringはツールの説明としてエージェントが参照するので,サボらずに書きます。
export OPENAI_API_KEY="sk-..." でOpenAI APIキーを環境変数に設定して,実行。
> tarコマンドでbzip2ファイルを解凍したい
指示に書いたように,プレーンテキストでコマンド例を交えた回答が返ってきました。
LLMの知識の範囲で回答せずに,本当にツールを呼んでるの?というのは,run_demo_loop() のオプションで stream=True を指定して,tool callのログを出力させると確認できます。
> duでホームディレクトリの容量を確認したい
) )
|
存在しないコマンドについて聞いてみる
嘘を生成しないか確認するために,存在しないコマンド hmm について聞いてみます。
> hmmコマンドの使い方
|
エージェントの用途と関係ないことを聞いてみる
linuxコマンドと関係ない質問をしてみます。指示(instructions)に書いたように,用途から外れた質問には「答えない」ことが確認できます。
> 人類が次に月に行くのはいつ
これは Agents SDK+αのTipsを一人で書いていくアドカレ Advent Calendar 2025の1日目の記事です。