OpenAI DevDay 2025でAgent Builderが発表になりました。今までマルチステップエージェントを構築する場合、Agent SDKでプログラムする必要がありました。Agent Builderを使えばGUIで構築できます。Agent Builderの基本的な作り方を解説します。
マルチステップエージェントの構成要素
マルチステップエージェントを構成するのはワークフローです。ワークフローはノードをエッジで繋ぐことで構築します。ワークフローはStartノードで始まりEndノードで終わります。ワークフロー内で状態を管理する状態変数としてStateを使用できます。様々なノードが準備されておりそれらをStartからEndまでエッジで繋ぐことでワークフローを作ります。
ノード
Agent Builderで使えるノードは以下の12個です。
| カテゴリ | ノード | 用途 |
|---|---|---|
| Core | Agent | 生成AIに処理を実行させる |
| Start | ワークフローの開始 Stateを定義 削除不可 | |
| End | ワークフローの終了 出力定義 | |
| Note | メモ。何も処理はしません。 | |
| Tools | File Search | 指定したファイルを検索 あらかじめ作成したVector StoreのIDを指定 |
| Guardrails | 生成内容を安全性を検査 | |
| MCP | MCPサーバーに接続 | |
| Logic | If / else | 条件分岐 |
| While | 反復処理 | |
| User approval | ユーザー承認 human-in-the-loop | |
| Data | Transform | 変数の変換 |
| Set state | Stateに値を設定 |
変数
ワークフロー内で使える変数には参照できる範囲が決まっています。ワークフローを呼び出した際のユーザー入力は input_as_text に格納されておりワークフローのどこからも参照できます。それ以外の変数は各ノードの直後のみ参照可能でノードの処理結果を確認できます。
| スコープ | 変数名 | 内容 |
|---|---|---|
| ワークフロー全体 | input_as_text | ワークフロー呼び出し時の入力文字列 |
| Agentノードの直後 | output_text | Agent が生成したテキスト |
| output_parsed | Agentノードの生成したJSON | |
| GuardrailsノードのPassの直後 | safe_text | チェック済みの安全な文字列 |
| GuardrailsノードのFailの直後 | guardrails | どの検査に抵触したか等の結果 |
| File Searchノードの直後 | results(配列) | ファイル名やメタデータ属性 |
| MCPノードの直後 | results(オブジェクト) | MCP 呼び出し結果 |
State
Stateは状態を管理する状態変数です。StateはStartノードでのみ定義可能で、型と名前と初期値を定義できます。
| 型 | 説明 |
|---|---|
| String | 文字列 未定なら "" で初期化が安全 |
| Number | 数値 |
| Boolean | 真偽値 |
| Object | JSON。スキーマ定義は次の3通り – + Add property: 1つずつ手作業で追加– Generate: 生成AIでスキーマを生成– Advanced: JSON定義を記述 |
| List | 配列 初期値は改行区切りで定義可能 |
Agentノードの作り方
基本の設定はNameとInstructionsの2つです。Nameはエージェントの名前、Instructionsは生成AIに与えるプロンプトです。最初の入力欄はシステムプロンプトです。 +ボタンをクリックすることで入力欄を増やせます。左上のドロップダウンリストでUserとAssistantを切り替えることができます。

コンテキストの追加
右下の Add contextからコンテキストを追加できます。選択すると入力欄に{{スコープ.変数名}}の形式で入力されます。入力欄で青い文字色で表示されていれば正しく認識されています。黒い文字色の場合は正しく認識されていないので注意して下さい。
注意点: InstructionsではCELは使用できません。

生成AIの設定
エージェントが処理に使用する生成AIの挙動を制御できます。
| 項目 | 設定内容 |
|---|---|
| Include chat history | 以前のAgentノードの入出力を含めるか |
| Model | 使用するモデル |
| Reasoning effort | 推論モデルの推論強度 |
| Tools | エージェントで使用する各種ツール – Client tool – MCP server – File search: 作成したVector StoreのIDを指定 – Web search: サイトを指定、サイトの地域を指定 – Code Interpreter: Pythonコードをアップロード – Function: OpenAI Functions互換の関数定義 – Custom: 任意の拡張 |
| Output format | 出力の形式 – Text: 文字列 – JSON: Stateと同様にスキーマを指定 – Widget: ウィジェットUI出力に最適 |
Set stateノードの使い方
Stateに値を設定できます。Assign valueでStateに設定する値を、To variableで設定するStateを指定できます。Assign valueではCELという言語を使って値を編集できます。

Whileノードの使い方
ループする条件をCELで指定します。条件を満たしている間Whileノード内の処理を繰り返します。ノードをドラッグアンドドロップでWhileノードの中に移動できます。
foreachには対応していないので配列の要素数とループカウンタの比較でループできます。

If / else ノードの使い方
条件をCELで記述し、条件は複数追加できます。他のノードとは違いノードの出口が複数あります。それぞれの条件を満たした場合の遷移先のノードを接続します。

CEL(Common Expression Language)
値を編集したり条件判断を行うことができます。
| 例 | 処理内容 | |
|---|---|---|
| 値の取得 | input.results[0] | 配列の0番目 |
| workflow.input_as_text | このワークフロー実行の入力値 | |
| size(input.authors) | 配列の要素数 | |
| 条件判断 | input.score >= 0.8 | スコアが0.8以上か |
| input.tags != null | タグが設定されているか | |
| 値の設定 | “The region is: ” + input.metadata[“region”] | 文字列連結 |
| input.score > (state.flags.beta ? 0.9 : 0.8) | 三項演算子 betaがtrueなら0.9、falseなら0.8 | |
| 複合処理 | state.emails.all(email, email.contains(“@”)) | 全てのメールが「@」を含むか |
| “Patrick Star” in state.employees | 従業員リストに Patrick Star がいるか |
まとめ
Agent Builderの使い方の基本を解説しました。ここまでの基本を押さえるだけでもマルチステップエージェントを構築できます。Agent SDKでプログラムするよりもかなり簡単に構築できるようになりました。マルチステップエージェントはアイディア次第で可能性は無限大です。様々なアイディアをAgent Builderで形にしていきましょう!
この記事を書いた人
