APIMaster.ai

OpenAI API Python 튜토리얼 2026 | APIMaster.ai

완벽한 OpenAI API Python 튜토리얼—SDK 설치, 채팅 완료 생성, 스트리밍 응답, 함수 호출 사용, 비동기 앱 구축. 할인된 가격으로 APIMaster.ai와 함께 작동합니다.

OpenAI API Python 튜토리얼

이 튜토리얼은 설치부터 고급 사용 사례까지 Python에서 OpenAI API를 사용하는 방법을 다룹니다. 모든 예제는 APIMaster.ai에서 작동합니다—api_keybase_url만 변경하면 됩니다.

설치

pip install openai

Python 3.8+가 필요합니다. openai 패키지는 OpenAI의 공식 Python SDK(버전 1.x)입니다.

초기 설정

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai/v1",
)

또는 환경 변수 사용 (권장):

export OPENAI_API_KEY="YOUR_APIMASTER_KEY"
export OPENAI_BASE_URL="https://apimaster.ai/v1"
from openai import OpenAI
client = OpenAI()  # 환경 변수를 자동으로 읽음

기본 채팅 완료

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "You are a Python expert."},
        {"role": "user", "content": "What is a generator in Python?"},
    ],
)

print(response.choices[0].message.content)
print(f"사용된 토큰: {response.usage.total_tokens}")

스트리밍 응답

stream = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "Write a binary search in Python."}],
    stream=True,
)

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

다중 턴 대화

messages = [
    {"role": "system", "content": "You are a helpful coding assistant."}
]

def send(user_text):
    messages.append({"role": "user", "content": user_text})
    resp = client.chat.completions.create(model="gpt-5.4", messages=messages)
    reply = resp.choices[0].message.content
    messages.append({"role": "assistant", "content": reply})
    return reply

print(send("Explain list comprehensions."))
print(send("Give me a harder example."))

구조화된 출력 (JSON 모드)

모델이 유효한 JSON을 반환하도록 강제:

import json

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": "Extract the name, email, and company from: 'Contact Jane Smith (jane@acme.com) at Acme Corp.'",
        }
    ],
    response_format={"type": "json_object"},
)

data = json.loads(response.choices[0].message.content)
print(data)  # {"name": "Jane Smith", "email": "jane@acme.com", "company": "Acme Corp"}

함수 호출 (도구 사용)

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "Get the current stock price for a ticker symbol",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string", "description": "Stock ticker, e.g. AAPL"},
                },
                "required": ["ticker"],
            },
        },
    }
]

messages = [{"role": "user", "content": "What's the current price of Apple stock?"}]

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

# 도구 호출 처리
if response.choices[0].finish_reason == "tool_calls":
    tool_call = response.choices[0].message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(f"{tool_call.function.name} 호출 중: {args}")
    
    # 함수 결과 시뮬레이션
    result = {"ticker": args["ticker"], "price": 189.50}
    
    # 결과를 다시 보내기
    messages.append(response.choices[0].message)
    messages.append({
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": json.dumps(result),
    })
    
    final = client.chat.completions.create(model="gpt-5.4", messages=messages)
    print(final.choices[0].message.content)

임베딩

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["OpenAI API Python tutorial", "Machine learning basics"],
)

embeddings = [item.embedding for item in response.data]
print(f"임베딩 차원: {len(embeddings[0])}")

비동기 사용

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai/v1",
)

async def generate(prompt: str) -> str:
    resp = await client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": prompt}],
    )
    return resp.choices[0].message.content

async def main():
    # 5개의 요청을 동시에 실행
    prompts = [f"Explain concept #{i}" for i in range(5)]
    results = await asyncio.gather(*[generate(p) for p in prompts])
    for r in results:
        print(r[:100])

asyncio.run(main())

오류 처리

from openai import OpenAI, AuthenticationError, RateLimitError, APIError
import time

def safe_call(client, **kwargs):
    for attempt in range(3):
        try:
            return client.chat.completions.create(**kwargs)
        except AuthenticationError:
            raise  # 인증 오류는 재시도하지 않음
        except RateLimitError:
            time.sleep(2 ** attempt)
        except APIError as e:
            if e.status_code >= 500:
                time.sleep(1)
            else:
                raise
    raise RuntimeError("최대 재시도 횟수 초과")

모델 선택 가이드

작업 모델 이유
요약, 분류 gpt-4o-mini 저비용
일반 코딩, 글쓰기 gpt-5.4 최고의 균형
복잡한 추론 gpt-5.5 또는 o3 높은 능력
배치 처리 gpt-4o-mini 또는 gpt-5.4 품질과 예산에 따라 선택

자주 묻는 질문

OpenAI Python 라이브러리를 어떻게 설치하나요? pip install openai를 실행하세요. APIMaster 접근을 위해 추가 패키지가 필요하지 않습니다—클라이언트 초기화 시 base_urlapi_key만 설정하면 됩니다.

OpenAI 라이브러리에 필요한 Python 버전은 무엇인가요? Python 3.8 이상입니다. 비동기 클라이언트는 최상의 호환성을 위해 Python 3.10+가 필요합니다.

Python에서 OpenAI API 속도 제한을 어떻게 처리하나요? 지수 백오프를 사용하세요—RateLimitError를 캐치하고 지연 시간을 증가시키며 재시도합니다. tenacity 라이브러리가 이를 단순화합니다. APIMaster의 라우팅이 추가적인 안정성을 제공합니다.

OpenAI Python 라이브러리를 Claude 모델과 함께 사용할 수 있나요? 네—APIMaster를 통해 가능합니다. base_url="https://apimaster.ai/v1"로 설정하고 claude-sonnet-4-6 같은 모델 ID를 사용하세요. 응답 형식은 GPT 응답과 동일합니다.

Python에서 비동기 OpenAI 호출을 어떻게 사용하나요? OpenAI 대신 AsyncOpenAI를 사용하고 API 호출을 await하세요. 위 가이드의 비동기 예제를 참조하세요.

APIMaster를 통해 OpenAI API 액세스 받기 →