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-..." >> .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 и итерируете 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 и цена, которая реально помещается в бюджет.