curlでLLMを叩いたとき内部で何が起きているか

curlでリクエストを送った瞬間に起きていること

AI APIはHTTPで呼び出せます。
そのため、たった1行のコマンドで動きます。

curl https://api.example.com/v1/chat \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"LLMとは何?"}]}'

これを実行すると、数秒後に文章が返ってきます。
非常にシンプルに見えますが、内部ではかなり大掛かりな処理が走っています。

重要なのは、
サーバーは「文章を検索」しているわけではありません。
その場で生成しています。

① リクエストの受信と前処理

まずサーバーはHTTPリクエストを受け取ります。

  • 認証確認(APIキー)
  • 使用量制限チェック
  • モデル選択
  • 安全性チェック

ここまでは一般的なWeb APIと同じです。

しかし次の工程から、通常のAPIと大きく変わります。

② 文章はそのまま読まれない(トークン化)

あなたが送った文章は、そのままAIに渡されません。
まず「トークン」に分割されます。

「LLMとは何?」 → [LLM][とは][何][?]

実際にはもっと細かく分割され、
それぞれが数値IDに変換されます。

トークン → 整数列

この時点で、AIにとって文章は「数値の並び」になります。

③ 数値ベクトルへ変換(埋め込み)

次に、各トークンはベクトル(数値の配列)に変換されます。

[125, 983, 44, 201] → ベクトル空間の座標

このベクトルは意味ではなく、
「他の単語とどのくらい似ているか」を表現しています。

つまりAIは文字を読んでいるのではなく、
座標の関係を見ています。

④ Transformerによる計算(ここが本体)

ここからがLLMの核心です。

Transformerという構造が、
すべての単語同士の関係性を同時に計算します。

例えば:

  • 「LLM」と「何」
  • 「とは」と「?」

これらの関連度を一気に評価します。

各トークン同士の関係を全組み合わせで計算

この計算は膨大です。
数十億〜数百億のパラメータが関与します。

そしてここで、
「次に来るトークンの確率」が算出されます。

⑤ 次の単語を1つ決定

AIは次の単語候補を確率で持ちます。

  • 大規模言語モデル
  • AI
  • それは
  • 近年

ここから1つを選びます。
この選択は決定ではなく、確率です。

選ばれたトークンが、最初の1文字になります。

⑥ これを何百回も繰り返す

ここが重要です。

AIは一度に文章を作っていません。

while 文章が終わるまで:
    次のトークンを予測
    追加

1トークンずつ生成しています。
1文の回答でも、この処理が何百回も行われます。

だからレスポンスに時間がかかります。
検索ではなく、逐次生成だからです。

⑦ テキストに戻して返却

最後に、トークン列が文字列に変換されます。

トークン列 → 日本語文章

これがHTTPレスポンスとして返ります。
私たちが見ている「AIの回答」です。

なぜGPUが必要なのか

この処理の中で最も重いのが
Transformerの計算です。

トークン同士の関係計算は行列演算になります。

巨大行列 × 巨大行列

これはCPUが苦手で、GPUが得意な処理です。
そのためAIサーバーはGPUクラスタで動作しています。

なぜ遅延が発生するのか

通常のAPIは:

  • DB検索
  • 結果返却

です。

AI APIは:

  • トークン化
  • ベクトル変換
  • 大規模計算
  • 逐次生成

を毎回実行します。

つまりキャッシュではなく、
毎回ゼロから文章を書いています。

結局curlの裏で何が起きているのか

curlの1行は単なるHTTP通信です。
しかしその先では、

  • 数値計算
  • 確率推定
  • 逐次生成

が数百回繰り返されています。

AIはデータを取り出しているのではありません。
その場で文章を構築しています。

私たちはAPIを呼び出しているつもりですが、
実際には「巨大な数式に文章を書かせている」のかもしれません。