Hello ChatKit! ~ ミニマムなチャットWebアプリを作る
前回まではAgents SDKだけを使って,コマンドラインで動作する対話エージェントを作りました。WebアプリケーションのチャットGUIのためのツールキットとして,ChatKitがあります。本エントリでは,前回作ったエージェントにミニマムなWeb GUIをつけてみます。
ChatKitとは
AIエージェントのチャットアプリを作るのに必要なフロントエンド,バックエンドの機能をフルセットで提供するアプリケーションフレームワーク。カスタマイズ性が高くて機能がすごくたくさん(語彙が足りない)あります。
とりあえず手を動かす
ChatKitのバックエンドは,
- Agent Builderというノーコードツールでエージェントワークフローを作ってOpenAIのプラットフォームにデプロイする方法
- ChatKit SDKを使ってFast APIサーバーを立てて,自前のバックエンドを実装する方法(advanced)
の2通りがあります。ノーコードツールのほうは詳しくなるモチベーションが湧かなかったので,最初からadvancedな方法でやってみます。
とはいえGUIのチャットアプリとなるとやはり複雑で,ほどよいクイックスタート的なガイドが見当たらず,スクラッチで書くのも公式で提供されているexampleを改変するのも,手こずりました...。
フロントエンド
最新のフロントエンドにだいぶ疎いので,公式のexampleリポジトリからコピーして,勘でいじりました。
バックエンド
openai-chatkit==1.4.0時点の,「とりあえずチャットができる」最小限のバックエンドのコードを書きました。(SDKアップグレードでおそらくアグレッシブに変わる。)エージェント部分はAgents SDKなので,前回作ったエージェントを流用しています。
# server.py
# ChatKitサーバー本体
=
: =
=
=
= await
# Runner expects the most recent message to be last.
=
# Translate ChatKit thread items into agent input.
= await
=
yield
return
"""Return a configured ChatKit server instance if dependencies are available."""
return
# main.py
# Fast APIサーバーのエントリポイント
=
: | None =
return
= await
= await
return
return
return
return
# memory_store.py
# ChatKitのインメモリストア。ユーザーの発話,アシスタントの応答,添付ファイルなど,すべての会話ログが格納される
# 実際のアプリでは永続化ストアを使うべき
: =
# Attachments intentionally unsupported; use a real store that enforces auth.
# 省略。実装は以下参照。
# https://github.com/openai/openai-chatkit-advanced-samples/blob/main/examples/cat-lounge/backend/app/memory_store.py
起動
フロントエンド(node)とバックエンド(python)をそれぞれ起動します。
# フロントエンド
# バックエンド
ブラウザでフロントエンドのURLにアクセス。

これを起点として,ファイル添付やカスタムツールなど,拡張していけそうです。
これは Agents SDK+αのTipsを一人で書いていくアドカレ Advent Calendar 2025の4日目の記事です。