0Pricing
Learn AI with Python · 강의

OpenAI API: chat.completions와 스트리밍

OpenAI 클라이언트, messages 목록, system/user/assistant 역할, stream=True를 사용한 스트리밍을 다룹니다.

OpenAI API: chat.completions와 스트리밍은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

OpenAI Python SDK 만나기

openai Python 패키지는 GPT-4o 같은 OpenAI 모델과 통신하는 공식 방법입니다. pip install openai로 설치하면 인증, 재시도, 요청 구성을 대신 처리하는 하나의 OpenAI 클라이언트 클래스를 사용할 수 있습니다.

모든 호출은 이 클라이언트를 거치므로 한 번 생성한 뒤 재사용하는 것이 표준적인 패턴입니다.

pip install openai

from openai import OpenAI

클라이언트 만들기

OpenAI()로 클라이언트를 인스턴스화합니다. 기본적으로 OPENAI_API_KEY 환경 변수에서 키를 읽으므로 소스 코드에 비밀 정보를 넣지 않아도 됩니다.

키를 명시적으로 전달할 수도 있지만, 프로덕션 앱에서는 환경 변수를 사용하는 방법을 권장합니다.

from openai import OpenAI

# Reads OPENAI_API_KEY from the environment
client = OpenAI()

# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")

messages 목록

채팅 모델은 메시지 목록을 기반으로 작동합니다. 각 메시지는 role과 content를 포함하는 딕셔너리입니다. 핵심 역할은 system(지침), user(사람), assistant(모델)의 세 가지입니다.

이 목록은 모델이 매번 호출될 때 확인하는 전체 대화 맥락입니다.

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the capital of France?"}
]

첫 번째 응답 생성

model과 messages를 지정하여 client.chat.completions.create()를 호출합니다. 응답 텍스트는 response.choices[0].message.content에 있습니다.

API는 선택 항목의 목록을 반환하지만, 일반적으로는 첫 번째 항목을 읽습니다.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages
)

print(response.choices[0].message.content)

매개변수로 출력 제어하기

두 매개변수가 응답의 형태를 결정합니다. temperature(0이면 결정적이고, 높을수록 더 창의적임)와 max_tokens(응답 길이의 상한을 설정함)입니다. 낮은 온도는 사실 기반 작업에 적합하고, 높은 온도는 브레인스토밍에 적합합니다.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    temperature=0.2,
    max_tokens=300
)

응답을 스트리밍하는 이유

스트리밍하지 않으면 전체 응답이 생성될 때까지 아무것도 볼 수 없습니다. 스트리밍을 사용하면 생성되는 즉시 토큰이 도착하므로, ChatGPT처럼 사용자 인터페이스에 텍스트를 실시간으로 표시할 수 있습니다.

stream=True로 스트리밍을 활성화하면 반환값이 단일 객체에서 반복자로 바뀝니다.

스트리밍 활성화하기

create()에 stream=True를 전달합니다. 이제 완성된 응답 대신 모델이 생성하는 동안 청크를 차례로 반환하는 생성기를 받습니다.

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    stream=True
)

청크 순회하기

stream을 순회합니다. 각 청크에는 chunk.choices[0].delta.content에 텍스트의 일부가 들어 있습니다. 처음과 마지막 청크에는 이 값이 None일 수 있으므로, 출력하기 전에 값이 있는지 확인해야 합니다.

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta is not None:
        print(delta, end="", flush=True)

delta와 message 이해하기

일반 응답에서는 message.content(전체 응답)를 읽습니다. 스트림에서는 delta.content(새로 추가된 부분만)를 읽습니다. 델타라는 단어는 마지막 청크 이후의 "변경 내용"을 의미합니다.

모든 델타를 이어 붙이면 전체 메시지를 복원할 수 있습니다.

full_text = ""
for chunk in stream:
    piece = chunk.choices[0].delta.content or ""
    full_text += piece
print("\nFinal:", full_text)

다중 턴 대화

대화를 계속하려면 assistant의 응답을 messages에 다시 append한 다음, 다음 사용자 메시지를 추가합니다. 모델은 상태를 저장하지 않으므로 YOU가 대화 기록을 관리해야 합니다.

messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})

follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)

토큰 사용량 확인하기

스트리밍하지 않은 응답에는 prompt_tokens, completion_tokens, total_tokens가 포함된 usage 객체가 있습니다. API 비용은 토큰 단위로 청구되므로, 이를 통해 API 비용을 추적하고 예산을 관리할 수 있습니다.

print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)

빠른 확인

스트리밍에 대한 이해도를 확인해 보세요.

복습: Chat Completions와 스트리밍

OpenAI 클라이언트 생성, system/user/assistant 역할로 messages 목록 구성, chat.completions.create() 호출 방법을 배웠습니다. 일반 응답은 choices[0].message.content에서 읽습니다.

stream=True를 사용하면 청크를 순회하면서 실시간 출력을 위해 delta.content를 읽을 수 있고, 응답을 append하여 기록을 유지하며, usage 객체로 비용을 추적할 수 있습니다.

자주 묻는 질문

“OpenAI API: chat.completions와 스트리밍” 강의는 무료인가요?

네 — “OpenAI API: chat.completions와 스트리밍” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“OpenAI API: chat.completions와 스트리밍”에서 뭘 배우나요?

OpenAI 클라이언트, messages 목록, system/user/assistant 역할, stream=True를 사용한 스트리밍을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“OpenAI API: chat.completions와 스트리밍” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. OpenAI API: chat.completions와 스트리밍
  2. Python에서 Anthropic Claude API 사용하기
  3. LLM의 함수 호출과 도구 사용
  4. 프로덕션 LLM 앱을 위한 프롬프트 엔지니어링
← Learn AI with Python(으)로 돌아가기