「考えてから返している」のではない
AIチャットを使っていると、人間がタイピングしているように文章が少しずつ表示されます。
多くの人は「AIが考えながら打っている」と感じますが、実際には違います。
AIは完成した文章を一度に作り、それを分割して送っています。
つまりリアルタイムで返っているのではなく、「生成結果を逐次配信している」状態です。
なぜ一文字ずつ表示されるのか
もしAIが作った文章をまとめて送ると、次のような動きになります。
1. 数秒待つ
2. 一気に全文が表示される
これでは、待ち時間が長く感じられます。
そこで「ストリーミング」と呼ばれる方法が使われます。
AIが生成したテキストを小さな単位に分け、完成を待たずに送信します。
サーバの送信イメージ:
サーバ → 「本」
サーバ → 「本日」
サーバ → 「本日は」
サーバ → 「本日は晴」
ブラウザは受け取るたびに表示を更新します。
通常のWeb通信との違い
通常のWebページは「1回の通信で1つの結果」を受け取ります。
GET /page
→ HTML全体が返る
||
しかしAIチャットでは通信が継続します。
接続を閉じずに、データだけが流れ続けます。
これがリアルタイムに見える理由です。
* どんな通信が使われているか
代表的な方法は2つあります。
** Server-Sent Events(SSE)
サーバからクライアントへ一方向にデータを送り続けます。
文章表示型のサービスでよく使われます。
** WebSocket
双方向通信です。
チャットやゲームなど、継続的なやり取りに使われます。
>|javascript|
const ws = new WebSocket("wss://example.com/chat");
||
接続を維持したまま、必要な分だけデータをやり取りします。
* ブラウザ側で起きていること
ブラウザは到着した文字列をそのまま表示しているわけではありません。
受信するたびに画面を再描画しています。
>|javascript|
messageBox.textContent += chunk;
||
そのため、入力されているように見えます。
* なぜ待ち時間が短く感じるのか
人間は「最初の反応」があるだけで待ち時間を短く感じます。
最初の1文字が出るだけで「応答が始まった」と認識します。
もし5秒後に全文が表示されるより、1秒後に1文字が出て6秒で完成した方が、体感は速くなります。
リアルタイム表示は、速度だけでなく体験設計でもあります。
* 注意点:リアルタイム=即答ではない
AIがすぐ答えているように見えても、内部では計算に時間がかかっています。
表示が始まった後も、裏では文章生成が続いています。
つまり、表示と生成は同時進行です。
* よくある誤解
** 入力に合わせて即座に考えている?
AIは人間のように文章全体を理解してから話しているわけではありません。
次に続く単語を確率的に選び続けています。
文章生成は「思考」ではなく「予測の連続」です。
その結果が自然な文章に見えています。
* 通信が途切れると止まる理由
ネットワークが切れると、文章が途中で止まります。
これはサーバからのデータ配信が止まるためです。
ページ更新でやり直しになるのは、接続が終了したからです。
* まとめ:リアルタイムに見える設計
AIチャットは瞬時に答えているわけではありません。
生成と表示を同時進行させ、待ち時間を感じさせないようにしています。
一括送信ではなく、連続送信。
ページ表示ではなく、通信の継続。
私たちは会話しているように感じますが、実際に行われているのは、計算結果のストリーム配信です。