© 2021 Addapter Inc.

BLOG

ChatGPTの応答をストリームとして処理するには

コーディング2023/04/12
blog author
アダプター
no image

目次

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 )

scroll to Top