API
正式名称
Application Programming Interface
- Application … ソフトウェア、アプリ
- Programming … プログラムを書くこと
- Interface … 接する面。やりとりの窓口
API(Application Programming Interface)とは、ソフトウェアのプログラム(アプリケーション)の中にあって、ソフトウェア経由でそれとやりとりできるようにする機能と規則の集まりである
— MDN Web Docs: Glossary — API より和訳
「ソフトウェア経由で」が定義に入っています。 MDNの原文は、このあと「人間向けのユーザーインターフェースとは対照的に」と続けています。 つまり人が画面を操作するのとは別の入口だという点が、定義の一部になっています。
「契約」という言い方
MDNは、もう1つの見方を示しています。
APIは、それを提供するアプリケーションと、第三者のソフトウェアやハードウェアといった他のものとの間の、単純な契約(インターフェース)と見ることができる
— MDN Web Docs: Glossary — API より和訳
契約なので、両側で守られる限り中身を作り替えてもよいという性質があります。 「APIが変わる」と言われたときに作業が発生するのは、この契約が変わるからです。
Web開発での具体的な中身も書かれています。
Web開発におけるAPIは一般に、開発者が自分のアプリの中で、利用者のブラウザの部品・利用者のPC上の他のソフトウェアやハードウェア・第三者のウェブサイトやサービスとやりとりするために使える、コード上の機能(メソッド・プロパティ・イベント・URLなど)の集まりである
— MDN Web Docs: Glossary — API より和訳
URLも含まれます。 「このURLを叩く」がAPIの利用そのものである場合があります。
画面経由とAPI経由は別物です
AIの文脈では、ここが費用と機能の分かれ目になります。
IPAのガイドラインは、画面経由の流れをこう書いています。
まず、ユーザがWeb UIを通してシステムへ質問や指示(プロンプト)を入力します。
— IPA『テキスト生成AIの導入・運用ガイドライン』
ChatGPTやClaudeの画面から使うのは、この経路です。 一方、自社のシステムに組み込むときはAPIを呼びます。 同じモデルでも、料金の数え方・使える機能・履歴の扱いが別になります。
API経由では履歴が自動で続きません
テキスト生成のリクエストは1回ごとに独立しており、状態を持たない
— OpenAI API Docs「Conversation state」より和訳
画面で使っていると気づきにくい点です。 画面側が過去のやりとりを毎回まとめて渡し直しているので、会話が続いているように見えます。 API経由で自分で組む場合、この渡し直しは自分で実装することになります。
渡せる量には上限があります。
コンテキストウィンドウとは、入力トークンと出力トークンの両方に(モデルによっては推論トークンにも)使える合計のトークン数を指す
— OpenAI API Docs「Conversation state」より和訳
超えたときの挙動も、APIの仕様として定められています。
入力だけで既にモデルのコンテキストウィンドウを超えている場合、APIは 400 のエラーを返す
— Claude Docs「Context windows」より和訳
コンテキストウィンドウの記事に詳しく書いています。
料金が発生するのはここです
OpenAIの料金ドキュメントは、単位を明示しています。
料金は100万トークンあたりで示される
— OpenAI API Pricing より和訳
「100万トークンあたり」です。 文字数でも回数でもありません(トークン)。 画面から使う定額のプランと、APIの従量課金は別の勘定になります。
店の受付窓口です。
客として店頭に並ぶのが画面からの利用、取引先として専用の窓口から発注するのがAPIからの利用にあたります。 窓口には「何をどの形式で渡すか」の決まりがあり、それを守れば相手の中の作り方を知らなくても取引できます。
店の内装が変わっても窓口の決まりが同じなら、発注のやり方は変えなくて済みます。これが「契約」と呼ばれている部分です。
こう言えば一度で済む
こう言うと伝わらない 「ChatGPTを社内システムに入れたいです」
こう言えば一度で済む 「社内の問い合わせフォームから送られた文章を、APIで要約させて担当者に振り分けたいです。月に何件くるか分かっているので、費用の見積りを出せますか」
後者なら、相手はAPI経由・従量課金・件数×トークン量として見積れます。