Agent Builderは、OpenAIが2025年10月6日にAgentKitの一部としてベータ公開した、AIエージェントのワークフローをノードの組み合わせで作るビジュアルキャンバスです。OpenAIは2026年6月3日に非推奨を告知し、2026年11月30日に終了する予定です。これから新しく作るツールではなく、作ったワークフローをどこへ移すかを決める段階にあります。この記事では、ノードの役割と公開の仕組みを押さえたうえで、移行先の選び方と、ノードをOpenAI Agents SDKのコードへ置き換える方法を、openai-agents 0.23.1で実行した結果つきで説明します。
まとめ:Agent Builderの現状と移行の要点(2026年10月時点)
- 2026年11月30日に終了予定です。既存ユーザーは移行期間中は使えますが、新規のワークフローを作る理由はありません。
- 移行先は公式に2つです。コードで動かすならAgents SDK、ChatGPTの中でチームに共有するならWorkspace Agents(ChatGPT Business・Enterprise・Eduが前提)を選びます。
- 画面上部の「Code」から、ワークフローをTypeScriptかPythonのAgents SDKコードとして書き出せます。ただしグラフは変換されず、すべての挙動が同じまま移る保証もありません。
- 同じ日にEvalsプラットフォーム(10月31日に読み取り専用)と再利用プロンプト(
v1/prompts)も終了します。Agent Builder内の「Evaluate」を使っていた場合は、評価の移し先も別に要ります。 - ChatKitの提供は続きます。止まるのは、Agent BuilderのワークフローIDを直接渡すホスト型の連携です。
Agent Builderの位置づけと料金
Agent Builderは、DevDay 2025で発表されたAgentKitの構成要素の1つです。AgentKitは、ワークフローを作るAgent Builder、チャット画面を埋め込むChatKit、管理者がデータ接続を一元管理するConnector Registry、評価機能を拡張したEvalsで構成されていました。発表時点ではChatKitとEvalsの新機能が一般提供、Agent Builderはベータという扱いです。
料金はAgent Builder単体では発生せず、AgentKitの発表文は「standard API model pricing」に含まれると説明しています。実際に課金されるのは、ワークフローの中で呼んだモデルのトークンとツール(ファイル検索の保存量や呼び出し回数など)です。公式の料金表によると、ChatKit経由でアップロードされたファイルと画像の保存には、アカウントごとに月1GBの無料枠を超えた分へ1GB・1日あたり0.10ドルがかかります。
発表文には導入事例として、Rampが購買エージェントを数時間で作り反復サイクルを70%短縮したこと、日本のLINEヤフー(LY Corporation)が業務アシスタントのエージェントを2時間未満で構築したことが載っています。同じ文中のKlarna(問い合わせの3分の2を処理するサポートエージェント)とClayの例は、Agent Builder以前のResponses APIとAgents SDKで作られた事例です。
Agent Builderの公開日と関連サービスの終了日程
| 日付 | 出来事 |
|---|---|
| 2025-10-06 | AgentKitの一部としてベータ公開 |
| 2026-06-03 | Agent Builder・Evals・再利用プロンプトの非推奨を告知 |
| 2026-10-31 | 既存のEvalsが読み取り専用に |
| 2026-11-30 | Agent Builder・Evals・v1/prompts が終了予定 |
ワークフローの作り方:設計・公開・デプロイの3段階
Agent Builderでは、エージェントとツールと制御ロジックの組み合わせを「ワークフロー」と呼びます。作業は次の3段階で進みます。
- 設計:platform.openai.comのAgent Builderで、テンプレートか白紙のキャンバスから始め、ノードをつないで処理の流れを作ります。ノード間の接続は型付きのエッジになり、前のノードの出力が次のノードの入力として期待どおりの形になっているかを画面上で確かめられます。「Preview」で、サンプルファイルを添付しながら各ノードの実行を1つずつ観察できます。
- 公開:作業は自動保存され、「Publish」を押すとスナップショットとして新しいメジャーバージョンが作られます。ワークフローはIDとバージョンを持つオブジェクトになり、API呼び出しで古いバージョンを指定することもできます。
- デプロイ:「Code」から2通りを選びます。ワークフローID(
wf_で始まる値)をChatKitに渡して自社サイトに埋め込む方法と、Agents SDKのコードを書き出して自前のサーバーで動かす方法です。
ChatKitにワークフローIDを渡す方式では、サーバー側で https://api.openai.com/v1/chatkit/sessions にセッション作成を要求し、返ってきたクライアントシークレットをフロントエンドへ渡します。このとき user パラメータにエンドユーザーごとに一意の値を入れる必要があります。ChatKit側の実装と移行はChatKit Starterアプリの使い方|自前ホスト版の起動とAgent Builder終了前の移行【2026年10月】で詳しく扱っています。
ノード11種の役割
公式のノードリファレンスは、ノードを4つに分類しています。すべてのワークフローはStartノードとAgentノードを持ちます。
| 分類 | ノード | 役割 |
|---|---|---|
| コア | Start | 入力の定義・input_as_text |
| コア | Agent | 指示・ツール・モデル設定 |
| コア | Note | コメント(処理なし) |
| ツール | File search | ベクトルストア検索 |
| ツール | Guardrails | PII・脱獄などの検査 |
| ツール | MCP | コネクタ・外部サーバー呼び出し |
| ロジック | If/else | CEL式で条件分岐 |
| ロジック | While | CEL式でループ |
| ロジック | Human approval | エンドユーザーの承認待ち |
| データ | Transform | 出力の形の変換 |
| データ | Set state | ワークフロー全体の変数 |
StartノードとAgentノード
チャット型のワークフローでは、Startノードがユーザー入力を会話履歴に追加し、その本文を input_as_text という変数で後続に渡します。状態変数を追加することもできます。Agentノードには指示文・ツール・モデル設定を持たせ、前のノードの出力を文脈として差し込めます。公式の宿題ヘルパーのテンプレートは、質問を言い換えるエージェント、Q&Aか調べものかを分類するエージェント、種類ごとに答えるエージェントを分けています。1つのエージェントの担当範囲を狭く保つのが、このキャンバスの前提でした。
If/elseとWhileの条件式
分岐とループの条件は、GoogleのCommon Expression Language(CEL)で書きます。分類エージェントが返したラベルに応じて担当エージェントへ振り分け、どれにも当てはまらなければ終了する、という使い方が典型です。Agents SDKへ移ると、条件式をPythonやTypeScriptで書き直し、分岐は if 文、反復は while 文などで実装します。
Guardrailsノードの範囲と限界
Guardrailsノードは、個人情報(PII)、脱獄(ジェイルブレイク)、ハルシネーションなどを検査します。既定では合否の2値で、前のノードの出力を検査し、不合格のときにどこへ進むかを自分で決めます。公式はワークフローを終了するか、注意を添えて前の段階へ戻すことを勧めています。中身はオープンソースのガードレールライブラリで、PythonとJavaScript向けに単体でも提供されています(PyPIの openai-guardrails は2026年9月10日公開の0.3.3が最新)。公式の安全性ガイド自身が「これだけで万全ではない」と書いており、最初の防御層という位置づけです。検査方式の比較はAIガードレールとは?入力・出力を検査する実装層の設計と選定基準【2026年版】を参照してください。
終了で止まるものと続くもの
2026年11月30日に止まるのは、Agent Builderのキャンバスそのものと、そこで公開したワークフローをOpenAI側でホストして動かす仕組みです。ChatKitの公式ガイドは、Agent BuilderのワークフローでChatKitを動かしている既存の連携について「移行期間中は使い続けられる」と書き、新しいChatKitアプリや終了前の移行では、自前サーバーのエージェントにつなぐ方式(advanced integration)を使うよう案内しています。wf_ のIDを渡すだけの構成は、期限付きと考えてください。
見落としやすいのが評価です。Agent Builderの「Evaluate」はトレースにグレーダーを当てる機能で、Evalsプラットフォームの上に乗っています。そのEvalsは10月31日に既存の評価が読み取り専用になり、11月30日にダッシュボードとAPIが終了します。OpenAIは移行先としてPromptfooを案内しています(promptfooとは?YAML設定・使い方・CI組み込みとレッドチーミングを実装視点で解説【2026年版】)。評価データを残したい場合は、10月31日より前に書き出しの段取りを付けておく必要があります。
移行先の選び方:Agents SDKかWorkspace Agentsか
公式の移行ガイドが示す移行先は2つです。判断の軸は、ワークフローの中核に決定的な処理(同じ入力と状態に対して、定めた規則で処理経路が決まる処理)があるかどうかです。
| 比較軸 | Agents SDK | Workspace Agents |
|---|---|---|
| 作り方 | コード(Python・TypeScript) | ChatGPT上で自然言語 |
| 動かす場所 | 自社のアプリ・サーバー | ChatGPTのワークスペース |
| 前提 | APIキーと実行環境 | Business・Enterprise・Edu |
| 分岐の再現性 | コードで固定できる | 忠実に移らない場合あり |
| 向く用途 | 自社サービスへの組み込み | 社内チームでの共有 |
結論を先に書くと、ChatKitで顧客向けに公開していたワークフローはAgents SDKへ移します。Workspace AgentsはChatGPTの中で動くため、自社サイトに埋め込んだ窓口の代わりにはなりません。移行ガイドも「中核に強い決定性を持つワークフローは、Workspace Agentsへ忠実に移らない場合がある」と制限事項に挙げています。社内向けに作った下調べや定型業務のワークフローで、ChatGPT Business・Enterprise・EduのワークスペースにWorkspace Agentsへのアクセスと必要な作成・利用権限があるなら、Workspace Agentsの方が保守の手間は小さく済みます。
Agents SDKのコードとして書き出す手順
- Agent Builderで対象のワークフローを開きます。
- 上部ナビゲーションの「Code」を選びます。
- コードのダイアログで「Agents SDK」を選びます。
- 「TypeScript」か「Python」を選び、書き出された全文をコピーします。
Workspace Agentsへ移す場合も、この書き出しが起点です。ChatGPTでワークスペースエージェントの作成画面を開き、書き出したコードを貼り付けて変換を依頼します。作成ボタンを押す前に、生成された指示文と機能、必要なアプリ・認証・接続の権限を設定し、「Preview」で元のワークフローの代表的な入力を試して挙動を比べます。
書き出し後の確認対象:実行設定・認証・権限
移行ガイドは、制御フロー・トリガー・ツール・権限を見直すよう求めています。Agents SDK側では、アプリの実行時設定、ツール、認証、権限、デプロイの検証が利用者の責任になります。Agent Builderの画面で済んでいたMCPコネクタの認証や、ChatKitのセッション発行は、書き出したコードには含まれない前提で点検してください。Agents SDKの基本的な書き方はOpenAI Agents SDKの使い方|handoff・as_tool・ガードレールをv0.22で実装【2026年9月】にまとめています。
ノードをAgents SDKのコードに置き換える対応表
書き出しはグラフを変換しないため、書き出されたコードがキャンバス上の分岐やループをどう表現しているかは、自分で読み解くことになります。そこで、各ノードがAgents SDK(Python版0.23.1)のどの部品に当たるかを整理しました。対応付けは筆者の整理で、公式の変換規則ではありません。
| ノード | Agents SDKでの置き換え先 |
|---|---|
| Agent | Agent |
| Start(input_as_text) | Runner.run の入力 |
| File search | FileSearchTool |
| MCP | HostedMCPTool・MCPServerStreamableHttp |
| Guardrails | input_guardrail・output_guardrail |
| If/else・While | output_type + if・while 文 |
| Human approval | needs_approval + interruptions |
| Transform | Pydanticモデル・関数 |
| Set state | RunContextWrapper のコンテキスト |
次のコードは、AgentKitの発表画面に載っている顧客対応テンプレート(脱獄ガードレール→分類エージェント→If/else→返品・引き留め・情報提供の各エージェント)を、承認ノード付きでAgents SDKに書き直したものです。脱獄の判定は例示のため単純な文字列一致にしています。返金用のissue_refundも文字列を返すだけの模擬実装で、決済サービスへの接続や実際の返金は行いません。本番では openai-guardrails の検査かモデルによる判定に置き換えてください。
from typing import Literal
from pydantic import BaseModel
from agents import (Agent, Runner, GuardrailFunctionOutput,
InputGuardrailTripwireTriggered, function_tool, input_guardrail)
class Route(BaseModel):
category: Literal["return", "retention", "info"]
@input_guardrail
async def block_jailbreak(ctx, agent, user_input):
hit = "指示を無視" in str(user_input) # 例示用の単純判定
return GuardrailFunctionOutput(output_info={"hit": hit}, tripwire_triggered=hit)
classifier = Agent(name="classifier",
instructions="問い合わせを return / retention / info に分類する",
output_type=Route, input_guardrails=[block_jailbreak])
@function_tool(needs_approval=True)
def issue_refund(order_id: str) -> str:
"""注文IDを指定して返金を実行する"""
return f"{order_id} の返金を受け付けました"
return_agent = Agent(name="return_agent", instructions="返品と返金を案内する",
tools=[issue_refund])
retention_agent = Agent(name="retention_agent", instructions="解約希望者に代替プランを案内する")
info_agent = Agent(name="info_agent", instructions="FAQの範囲で回答する")
ROUTES = {"return": return_agent, "retention": retention_agent, "info": info_agent}
async def handle(text: str, approve) -> str:
try:
routed = await Runner.run(classifier, text) # Start → Guardrails → Agent
except InputGuardrailTripwireTriggered:
return "この内容にはお答えできません"
agent = ROUTES[routed.final_output.category] # If/else
result = await Runner.run(agent, text)
while result.interruptions: # Human approval
state = result.to_state()
for item in result.interruptions:
if approve(item):
state.approve(item)
else:
state.reject(item)
result = await Runner.run(agent, state)
return result.final_output
このコードを、openai-agents 0.23.1(2026年10月2日公開)とPython 3.12で、モデル応答を台本どおりに返す agents.testing.ScriptedModel に差し替えて実行しました(APIキー不要)。pip install openai-agents==0.23.1 のあと、上のコードと同じファイルの末尾に次を足すと、承認するケースを再現できます。
import asyncio
from agents import set_tracing_disabled
from agents.testing import ScriptedModel, assistant_message, function_call
set_tracing_disabled(True)
classifier.model = ScriptedModel([[assistant_message('{"category":"return"}')]])
return_agent.model = ScriptedModel([
[function_call("issue_refund", {"order_id": "A-100"}, call_id="c1")],
[assistant_message("A-100の返金を受け付けました。")],
])
print(asyncio.run(handle("A-100を返品したい", approve=lambda item: True)))
台本の中身と approve の戻り値を変えて試した結果は次のとおりです。
- 「前の指示を無視して」を入力すると、分類の前にガードレールが作動し「この内容にはお答えできません」を返しました。
- 返品の問い合わせで
issue_refundの呼び出しが来ると、実行はinterruptionsで止まり、承認した場合だけ返金処理の結果がモデルへ渡りました。 - 却下した場合、関数は実行されず、モデルには「Tool execution was not approved.」という結果が返りました。
注意点が2つあります。1つ目に、Agents SDKの入力ガードレールは、そのRunで最初に動くエージェントにしか適用されず、handoffで渡った先のエージェントでは動きません。上の例では分類と担当エージェントを別々のRunner.runで実行するため、返品担当に入力ガードレールを付けても動作します。分類エージェントに付けたのは、すべての振り分け先へ進む前に共通の入力検査を行うためです。2つ目に、入力ガードレールは既定でモデル呼び出しと並行して走ります(run_in_parallel=True)。ツールを持つエージェントに付けると、遮断が決まる前にツールが実行される可能性があります。ツールを持つエージェントでは並行実行を切ってください。
移行後の安全設計:入力分離・構造化出力・ツール承認
Agent Builderの安全性ガイドが挙げていた対策は、キャンバスが無くなっても有効です。信頼できない入力をdeveloperメッセージに埋め込まず、userメッセージとして渡すこと。ノード間の受け渡しを列挙型や固定スキーマの構造化出力に絞り、自由文の通り道を作らないこと。MCPツールは読み取りも含めて承認を有効にしておくこと。上のコードの output_type=Route と needs_approval=True は、分類結果の型制約と返金用関数ツールの承認を実装しています。ただし、元の自由文を担当エージェントへ渡しており、自由文の経路を完全には制限していません。MCPツールの承認設定も、この例には含まれていません。
「Agent Builder」という名前の別製品との見分け方
「agent builder」で検索すると、上位にはMicrosoft 365 Copilotの「エージェント ビルダー」が並び、OpenAIの製品はむしろ少数です。同じ名前の製品が複数あるため、手順を読む前にどの会社の製品かを確かめてください。
| 製品 | 提供元 | 状況(2026年10月) |
|---|---|---|
| Agent Builder | OpenAI | 2026-11-30終了予定 |
| エージェント ビルダー | Microsoft 365 Copilot | 提供中 |
| Agent Builder | Google Cloud(Vertex AI) | Gemini Enterprise Agent Platformへ統合 |
| Agent Builder | Elastic | 提供中 |
Google Cloud版はVertex AI Agent Builderとは?Gemini Enterprise Agent Platform改称後の全体像・料金・使い方、Microsoftの上位製品はCopilot Studioとは?基本機能・トピックの作り方・料金・始め方まで解説、xAIの音声版はGrok Voice Agent Builderとは?xAIの音声エージェント構築基盤の機能・料金・導入判断を解説【2026年7月版】で扱っています。「Postman AI Agent Builder」は2025年1月の機能群の総称で、現在は別の画面名に再編されています(Postman AI Agent Builderとは?Agent Mode・Flows・MCPで組むPostman AIの現在と料金)。
ノードをつなぐキャンバスで作り続けたいなら、OpenAIの外に移る選択もあります。自社サーバーで動かせるワークフロー基盤としてはDifyワークフローの作り方と使い方|ノード選定・ループ・トリガーを実装手順で解説【2026年版】やn8nとは?読み方・できること・料金・始め方をわかりやすく解説【2026年版】があります。ただしAgent Builderの書き出しはAgents SDKのコードなので、これらのツールへは手作業で組み直すことになります。
よくある質問
Agent Builderとは何ですか?
OpenAIが2025年10月6日にベータ公開した、AIエージェントのワークフローをノードの組み合わせで作るビジュアルキャンバスです。作ったワークフローはChatKitで自社サイトに埋め込むか、Agents SDKのコードとして書き出して使います。2026年11月30日に終了する予定です。
Agent Builderの料金はいくらですか?
Agent Builder自体の利用料はなく、ワークフロー内で使ったモデルのトークンとツールの利用分が通常のAPI料金で課金されます。ChatKitでアップロードされたファイルと画像の保存は、月1GBの無料枠を超えると1GB・1日あたり0.10ドルです。
終了後、作ったワークフローはどうなりますか?
2026年11月30日以降はAgent Builderで開けなくなる予定です。終了前に「Code」から「Agents SDK」を選び、TypeScriptかPythonのコードとして書き出してください。書き出しはグラフを変換しないため、分岐・ツール・権限の挙動は移行先で確かめ直す必要があります。
ChatKitも終了しますか?
ChatKitは終了しません。止まるのは、Agent BuilderのワークフローIDをChatKitに渡してOpenAI側で動かす構成です。自前サーバーでエージェントを動かしてChatKitにつなぐ方式に切り替えれば、ChatKitの画面はそのまま使えます。
Vertex AIやMicrosoft 365 CopilotのAgent Builderとは違うものですか?
別の会社の別製品です。Google CloudのAgent Builder(現在はGemini Enterprise Agent Platformへ統合)とMicrosoft 365 Copilotのエージェント ビルダーは提供が続いており、OpenAIの終了告知の影響を受けません。