[Web] HTTP Streaming

#http #chunk #streaming

Image


ChatGPT์˜ ์‹ค์‹œ๊ฐ„ ์‘๋‹ต ์›๋ฆฌ โ€” HTTP Chunked Transfer Encoding

GPT API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‘๋‹ต์ด ํ•œ๋ฒˆ์— ์˜ค์ง€ ์•Š๊ณ , ๋งˆ์น˜ โ€œ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผโ€ ์กฐ๊ธˆ์”ฉ ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋ฐ”๋กœ HTTP Chunked Transfer Encoding ๋•๋ถ„์ž…๋‹ˆ๋‹ค.

HTTP Chunked Transfer Encoding ์ด๋ž€?

  • HTTP ์‘๋‹ต์„ ํ•œ ๋ฒˆ์— ์ „์†กํ•˜์ง€ ์•Š๊ณ , ์ž‘์€ ์กฐ๊ฐ(chunk) ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ „์†กํ•˜๋Š” ๋ฐฉ์‹
  • GPT API๋Š” ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋” ๋น ๋ฅด๊ฒŒ ์‘๋‹ต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์˜ˆ์‹œ

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json
{
  "delta": { "content": "Hello" }
}

WebSocket๊ณผ์˜ ์ฐจ์ด์ 

ํ•ญ๋ชฉHTTP StreamingWebSocket
๋ฐ์ดํ„ฐ ๋ฐฉํ–ฅ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ (๋‹จ๋ฐฉํ–ฅ)ํด๋ผ์ด์–ธํŠธ โ†” ์„œ๋ฒ„ (์–‘๋ฐฉํ–ฅ)
์‚ฌ์šฉ ์˜ˆGPT ์‘๋‹ต, ๋กœ๊ทธ์ฑ„ํŒ…, ํ˜‘์—… ํˆด

๊ฒฐ๋ก 

GPT๋Š” WebSocket ๋Œ€์‹  HTTP Streaming์„ ํ†ตํ•ด ํšจ์œจ์ ์ด๋ฉด์„œ๋„ ์นœ์ˆ™ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์‘๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.