目次
ChatGPTの公式APIを使うとデフォルトでは、あるリクエストに対して、応答が全て取得できたら、レスポンスが返ってきます。
これをChatGPT本家のようにタイピング形式 (細切れ形式?)で返したい場合に
参考になる情報を調べたので共有いたします。
■ 概要としては以下のとおりです。
– APIのリクエストパラメータのstreamをtrueにすることでAPIのレスポンスが SSE (Server sent event)で返ってきます。
– それらをフロントに細切れに読み出していくためにReadableStreamとして処理します
– フロントではストリームが完了([DONE]まで)するまでデコードを繰り返して、値を取り出していきます。
■ NextJSでの実装を公式が用意してくれてました。
(Edge Functionsを使ったChatGPT APIのstream形式でのレスポンスの受け取り方)
https://vercel.com/blog/gpt-3-app-next-js-vercel-edge-functions#edge-functions-with-streaming
また、NextJS公式がChatGPTの他、いろいろなAIを使ったテンプレートを用意してくれてるみたいです
https://vercel.com/templates?type=ai
〜追記〜
これらを、Zenn.devにて、わかりやすく記事にまとめていた方を発見しました
https://zenn.dev/saikou_kunisaki/articles/8046641b01a384
ChatGPTのAPIも誰でも使えるのでぜひ!ちなみに、無料枠もあります👍
■ 参考
– SSEとは ( https://developer.mozilla.org/ja/docs/Web/API/Server-sent_events/Using_server-sent_events )
– ReadableStreamとは ( https://sbfl.net/blog/2018/05/26/javascript-streams-api/ )
– ChatGPT API streamの説明 ( https://platform.openai.com/docs/api-reference/completions/create )