ChatGPTでうまくいったから、そのまま自社サービスに組み込めるはず。そう考えると、前提の違いで転びます。製品としてのChatGPTと、開発者向けのAPIがどう違うのかを見ていきます。プログラミングに馴染みがなければ、最後の使い分けの節だけ読んで構いません。
シリーズ目次 / 前章: 09. ChatGPTカスタムGPTとエージェント / 次章: 11. ChatGPTの限界とリスク
Table of contents
この章のねらい
- ChatGPTとAPIの役割・課金・データ扱いの違いを理解する
- APIの最小構成と、会話履歴の扱い方を把握する
- どんなときにAPIへ移行すべきかを判断できるようになる
何が違うのか
API(Application Programming Interface) は、プログラムから別のプログラムの機能を呼び出すための窓口です。OpenAI APIを使えば、自作のアプリやスクリプトからモデルを直接呼び出せます。
| 観点 | ChatGPT | OpenAI API |
|---|---|---|
| 使う人 | 誰でも(画面を操作) | 開発者(コードから呼び出す) |
| 提供されるもの | 完成した製品(UI・機能・履歴管理) | モデルへのアクセスと、APIから使える機能・ツール |
| 課金 | 月額のプラン | トークンやツールなど、利用量に応じた従量課金 |
| 会話の記憶 | サービス側が管理する | エンドポイントにより異なる。手動管理または状態保持を選べる |
| 検索・ファイル解析 | 機能として組み込み済み | Responses APIなどの組み込みツール、または自作ツールを使う |
| データの既定の扱い | プランと設定による | 既定では学習に使われない扱いが基本(規約要確認) |
| 応答の制御 | 画面上の選択肢の範囲 | パラメータで細かく制御できる |
第1章で書いたとおり、ChatGPTのAPIという表現は正確ではありません。同じモデルに対する2つの入口です。
APIの最小構成
会話履歴を自分で渡すChat Completions APIの最小例です。APIへ送るのはモデル名とメッセージの配列。メッセージには役割(role)が付きます。
| role | 意味 |
|---|---|
| system(または developer) | 全体の方針・役割の指定。ChatGPTのカスタム指示に相当 |
| user | 利用者の発言 |
| assistant | モデルの過去の応答 |
1回の送信に何が入るのかを図にすると、構造が見えてきます。
コマンドラインからの最小例です。<YOUR_API_KEY> と <MODEL_NAME> は自分の値に置き換えてください。
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "<MODEL_NAME>",
"messages": [
{"role": "system", "content": "簡潔な日本語で答えてください。"},
{"role": "user", "content": "APIとは何ですか。3行で説明してください。"}
]
}'
Pythonの公式ライブラリを使う場合は次のようになります。
from openai import OpenAI
# APIキーは環境変数などから読み込み、コードに直接書かない
client = OpenAI()
response = client.chat.completions.create(
model="<MODEL_NAME>",
messages=[
{"role": "system", "content": "簡潔な日本語で答えてください。"},
{"role": "user", "content": "APIとは何ですか。3行で説明してください。"},
],
)
print(response.choices[0].message.content)
APIキーはパスワードと同じです。ソースコードに直接書かない。リポジトリにコミットしない。クライアント側(ブラウザやスマホアプリ)に埋め込まない。ここが最低ラインです。漏れたら第三者に使われて、利用料はこちらに来ます。
会話状態の管理方法
APIの会話状態は、使うエンドポイントによって管理方法が異なります。Chat Completionsでは各リクエストが独立しているため、会話を続けたければ過去のメッセージを自分で含めて送る必要があります。一方、Responses APIではprevious_response_id、Conversations APIでは会話IDを使って状態を継続できます。
1ターン目に送るもの: system + user1
2ターン目に送るもの: system + user1 + assistant1 + user2
3ターン目に送るもの: system + user1 + assistant1 + user2 + assistant2 + user3
2つの方式では、ターンが進んだときに送るものの量が変わります。
Chat Completionsで履歴を毎回送ると、会話が長くなるほど送信量、つまり料金が増えます。古い発言を要約して圧縮する、必要な部分だけ残す、といった工夫が要ります。Responses APIやConversations APIを使う場合も、会話状態の保持方法とコンテキスト上限は確認してください。
料金の考え方
APIの料金は利用量に応じた従量課金です。モデルの入出力は、第2章で説明したトークンが主な課金単位。使う機能によっては別の課金単位も乗ります。
- 入力トークン(送った文章+添付テキスト)と出力トークン(生成された文章)で単価が異なり、通常は出力のほうが高い
- Web検索やFile Searchは呼び出し回数、File Searchの保存領域は容量と日数、Code Interpreterなどのコンテナはセッションに応じた料金が加わる
- 同じ内容でも日本語はトークン数が多くなりがちで、英語より割高になりやすい
- 思考型モデルは内部思考ぶんのトークンも消費するため、単純な出力量より高くつく
コストを抑える手はこのあたりです。
- 用途に対して過剰に高性能なモデルを使わない
- 不要に長いプロンプトを送らない(会話履歴の圧縮)
- 繰り返し送る共通部分にキャッシュの仕組みを使う
- 出力の上限トークン数を設定する
何が積み上がって総額になるのか、抑える手段と並べて見ておきます。
制御できること
画面ではいじれない設定が、APIでは明示的に指定できます。
| 項目 | 内容 |
|---|---|
| temperature など | 出力のばらつき具合。低くすると安定し、高くすると多様になる |
| 最大出力トークン数 | 生成の長さの上限 |
| 構造化出力 | JSONなど決まった形式での出力を強制する |
| ツール(組み込み・関数)呼び出し | 組み込みツールを使う、またはモデルに関数を選ばせてアプリ側で実行し、結果を返す |
| ストリーミング | 生成中の文字を逐次受け取る |
業務システムに組み込むなら、構造化出力が効きます。自由文の応答は解析が難しく壊れやすいのに対し、決まった形式で受け取れれば後続処理が安定します。
関数呼び出しは、第9章のエージェントの土台です。モデルは関数を直接実行しません。この関数をこの引数で呼びたい、という要求を返すだけです。実際に実行するのはアプリ側で、だからこそそこに権限の制御を入れられます。なお、Web検索やファイル検索などの組み込みツールは、API側が実行する方式もあります。
どちらを使うべきか
| 状況 | 選択 |
|---|---|
| 自分や同僚が手作業で使う | ChatGPT |
| 定型作業を共有したい | ChatGPTのカスタムGPT |
| 自社サービスの機能として組み込む | API |
| 大量のデータを一括処理する | API |
| 出力を決まった形式で受け取り後続処理へ渡したい | API |
| 社内システムの権限管理下で動かしたい | API |
分かれ目は、人が画面で結果を読むのか、プログラムが結果を処理するのか。前者ならChatGPT、後者ならAPIです。
要点
- ChatGPTとAPIは同じモデルへの異なる入口であり、製品機能と開発者向けの制御という役割の違いがある
- APIでは、エンドポイントにより手動の履歴管理と会話状態の保持を使い分けられる
- APIには検索・ファイル検索などの組み込みツールがあり、自作ツールも追加できる
- 課金は利用量に応じた従量制で、モデルのトークン料金に加えてツール呼び出し・保存容量・コンテナなどの料金が発生する場合がある
- APIキーはパスワード同等に扱い、コードやクライアント側に埋め込まない
- 構造化出力とツール呼び出しが、システム組み込みの鍵になる
参考資料
- OpenAI Platform Docs https://platform.openai.com/docs/ — API仕様、モデル一覧、パラメータ(基準日: 2026-08-03)
- OpenAI Platform Docs「Conversation state」 https://developers.openai.com/api/docs/guides/conversation-state — Chat Completions、Responses API、Conversations APIの状態管理
- OpenAI「New tools and features in the Responses API」 https://openai.com/index/new-tools-and-features-in-the-responses-api/ — APIの組み込みツール
- OpenAI Platform Docs「Pricing」 https://platform.openai.com/docs/pricing — トークン単価
- OpenAI Platform Docs「Function calling」 https://platform.openai.com/docs/guides/function-calling — ツール呼び出しの仕組み
シリーズ目次 / 前章: 09. ChatGPTカスタムGPTとエージェント / 次章: 11. ChatGPTの限界とリスク