2026-04-15

Python 에서 DeepSeek V4 사용하기: 0 에서 프로덕션까지

DeepSeek V4 는 OpenAI 호환 API 를 제공하므로, Python 에서 새 SDK 를 배울 필요가 없습니다. 표준 openai 패키지로 base URL 과 API 키만 바꾸면 바로 동작합니다. 이 글은 설치부터 첫 호출, 스트리밍, function calling, 그리고 대규모 운영에서의 tokens 비용 관리까지 한 번에 다룹니다.

1. SDK 설치와 API 키 설정

DeepSeek 전용 패키지는 필요 없습니다. openai 공식 Python SDK 가 그대로 붙습니다. API 키는 반드시 환경변수에 두고 코드에 하드코딩하지 마세요.

API 키는 DeepSeek 공식 콘솔에서 발급하거나 /pricing 에서 동일 스펙의 할인 키로 받을 수 있습니다. DEEPSEEK_API_KEY 로 셸에 등록하세요.

pip install "openai>=1.40.0" python-dotenv
echo "DEEPSEEK_API_KEY=sk-..." >> .env

2. 첫 chat completion

OpenAI 클라이언트를 만들고 base_url 을 DeepSeek 엔드포인트로 지정합니다. chat.completions.create 는 OpenAI 와 동일하고, 모델 이름만 다릅니다. 일반용 deepseek-chat, 추론 특화 deepseek-reasoner.

import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/v1",
)

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a concise technical assistant."},
        {"role": "user", "content": "Write a Python one-liner to flatten a nested list."},
    ],
    temperature=0.2,
)

print(response.choices[0].message.content)
print("tokens used:", response.usage.total_tokens)

3. 저지연 UI 를 위한 스트리밍

채팅 UI, CLI, 에이전트 루프에서는 tokens 가 생성되는 대로 보여주고 싶습니다. stream=True 를 넘기고 chunk 를 순회하세요. 각 chunk 는 OpenAI 호환 delta 입니다.

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "Explain MoE in 3 sentences."}],
    stream=True,
)

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

4. Function calling (tool use)

V4 는 OpenAI 스타일 tool use 를 지원합니다. JSON Schema 로 도구를 선언하고, 모델이 호출을 결정하면 앱이 실행 후 다음 턴에 결과를 돌려주는 구조입니다. V3 대비 안정성이 눈에 띄게 좋아졌습니다.

모델이 준 인자는 사용자 입력처럼 검증 후 실행하세요. pydantic, jsonschema 로 막을 수 있습니다.

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get the current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
    tools=tools,
)

call = response.choices[0].message.tool_calls[0]
# call.function.name == "get_weather"
# call.function.arguments == '{"city":"Tokyo"}'

5. tokens 비용 줄이기

입력 / 출력 tokens 를 분리 과금하고, 출력이 약 2 배. system prompt 와 히스토리까지 모두 입력 tokens 에 포함됩니다. 긴 대화를 그대로 두면 비용이 빨리 튑니다.

실용 팁: system prompt 를 짧고 안정적으로 (캐시에 유리), 6k tokens 넘으면 히스토리 요약, max_tokens 상한 설정. 규모가 크면 /pricing 의 할인 공식 키로 단가를 더 낮출 수 있습니다.

FAQ

DeepSeek 전용 Python SDK 가 필요한가요?

아닙니다. 표준 openai 패키지, LangChain, LlamaIndex, Instructor 등 OpenAI 호환 라이브러리가 모두 동작합니다.

deepseek-chat 과 deepseek-reasoner 중 뭘 쓸까요?

일단 deepseek-chat. 수학·논리·긴 추론이 필요하면 deepseek-reasoner 로 전환.

비동기로 쓰려면?

AsyncOpenAI 로 바꾸면 됩니다. API 형태는 동일하고 그대로 await 하세요.

할인 API 키는 어디서?

/pricing 에 공식과 동일 스펙의 할인 키가 있습니다.

Python + DeepSeek V4 는 2026 년 기준 가장 가성비 좋은 LLM 조합입니다. 이미 아는 SDK, GPT-4o 급 품질, 소규모 팀도 감당 가능한 단가.