반응형
Streaming API responses
ChatGPT API는 강력한 언어 모델 기능을 제공할 뿐만 아니라, 이젠 스트리밍(Streaming) 기능을 통해 실시간 응답 처리까지 지원합니다.
기존의 ChatGPT API는 사용자가 질문을 보내면, 모든 응답을 생성한 후 한 번에 결과를 반환하였지만, Streaming API는 생성되는 응답을 한 조각씩(chunk) 실시간으로 받아올 수 있습니다.
이는 마치 채팅 애플리케이션에서 상대방이 타이핑하는 걸 보듯, 점진적으로 응답을 받아보며 사용자 경험을 개선할 수 있습니다.
예제 코드
import openai
openai.api_key = 'your key'
stream = openai.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": "윤동주시인에 대해서 알려주세요",
},
],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
위의 코드에서 가장 중요한 부분은 아마 stream=True 일것입니다. True로 설정하면 OpenAI는 응답을 스트리밍 형태로 제공하여 여러개의 Chunk(조각) 단위로 응답이 도착하여, 점진적인 출력을 할 수 있습니다.
잠깐 코드 설명 드릴까요?
반응형
구성요소 | 설명 |
for chunk in stream: | OpenAI API가 반환하는 제너레이터(generator)를 순회합니다. 한 번에 전체 응답이 아니라 조각(chunk) 단위로 수신됩니다. |
chunk.choices[0].delta.content | 각 chunk 안에 담긴 텍스트의 신규 추가분만 포함되어 있습니다. 전체 응답이 아닌, "지금 막 생성된 텍스트"입니다. |
if ... is not None: | 스트리밍 중간에 None이 들어올 수도 있기 때문에 예외 처리로 안전하게 필터링합니다. |
print(..., end="") | 응답이 조각별로 오기 때문에 end=""를 사용하여 줄바꿈 없이 실시간 이어서 출력합니다. |
처음 예시 코드처럼 " 윤동주 시인은 누구인가요?" 라고 질문을 하면 GPT는 기존방식대로라면 한번의 아래와 같은 답변을 응답할 것입니다.
윤동주(尹東柱, 1917년 12월 30일 ~ 1945년 2월 16일)는 일제강점기 조선의 대표적인 저항 시인입니다. 대표작으로는 <서시>, <별 헤는 밤> 등이 있으며, 순수한 언어로 조국에 대한 사랑과 슬픔을 노래했습니다. |
하지만 Streaming API에서는 아래와 같이 여러개의 Chunk로 나뉘어 전달 됩니다.
순서 | chunk.choices[0].delta.content |
1 | "윤동주(" |
2 | "尹東柱, 1917년 12월 30일 ~ " |
3 | "1945년 2월 16일)는 일제강점기 조선의 대표적인 " |
4 | "저항 시인입니다. 대표작으로는 " |
5 | "<서시>, <별 헤는 밤> 등이 있으며, " |
6 | "순수한 언어로 조국에 대한 사랑과 슬픔을 노래했습니다." |
각 Chunk는 바로바로 화면에 출력되고, 사용자는 위 텍스트가 실시간으로 생성되는 듯한 UX 경험을 하게 됩니다.
이 구조를 이용하면 채팅형태, 로딩 애니메이션, 음성 API와 연동, 타자효과 등 다양한 곳에서 활용 가능하며, 사용자에게는 GPT에서 오는 답변 소요시간이 개선된것처럼 보이는 효과를 제공 할 수 있답니다.
반응형
'IT > CHATGPT' 카테고리의 다른 글
[ChatGPT] 지브리 스타일 이미지 생성 기능 ! (0) | 2025.04.03 |
---|---|
[ChatGPT] Vision API (with Python) (2) | 2024.12.09 |
[ChatGPT] Audio API : 음성 대화하기 (Text to Speech) (2) | 2024.11.13 |
[ChatGPT]Assistants API 활용 (1) | 2024.06.09 |
[ChatGPT] GPTs Action 기능으로 API 연동하기 (0) | 2024.05.08 |
댓글