2026-04-15
DeepSeek V4 в Python: от нуля до продакшена
DeepSeek V4 предоставляет OpenAI-совместимый API, поэтому в Python не нужен новый SDK: стандартный пакет openai работает как есть — достаточно заменить base URL и API-ключ. В этом гиде: установка, первый chat completion, стриминг, function calling и контроль стоимости tokens при большом объёме.
1. Установка SDK и настройка ключа
Отдельный DeepSeek-SDK не нужен — официальный openai для Python работает с DeepSeek-эндпоинтом напрямую. Ключ держите в переменной окружения, не в коде.
Ключ берёте в консоли DeepSeek или в /pricing (тот же API, дешевле). Экспортируйте как 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 и итерируете chunks — каждый 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 поддерживает tool use в стиле OpenAI: вы описываете 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
DeepSeek тарифицирует входные и выходные tokens раздельно, выходные — примерно в 2 раза дороже. system prompt и вся история считаются входными, длинные диалоги быстро надувают счёт.
Три приёма: короткий стабильный system prompt (кэшируется), суммирование истории после ~6k tokens, ограничение max_tokens. На объёме — скидочные официальные ключи в /pricing.
FAQ
Нужен отдельный DeepSeek-SDK?
Нет. Работает стандартный openai, а также LangChain, LlamaIndex, Instructor.
deepseek-chat или deepseek-reasoner?
Начинайте с deepseek-chat, переключайтесь на deepseek-reasoner для математики, строгой логики и длинных цепочек.
Можно asyncio?
Да, используйте AsyncOpenAI — остальное без изменений.
Где ключ дешевле?
В /pricing — официальные ключи со скидкой.
Python + DeepSeek V4 — самый короткий путь к боевому LLM-стеку в 2026: знакомый SDK, качество уровня GPT-4o и цена, которая реально помещается в бюджет.