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-..." >> .env2. 첫 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 급 품질, 소규모 팀도 감당 가능한 단가.