Основные выводы
- OpenAI-совместимый API: DeepSeek следует формату OpenAI API — переключитесь, изменив base URL и API key. OpenAI Python SDK, LangChain и LlamaIndex работают сразу после установки.
- Экономия 90% благодаря context caching: Общие префиксы prompt кэшируются автоматически по цене $0.028/1M tokens по сравнению с $0.28/1M при cache misses — изменений в коде не требуется.
- 5 миллионов бесплатных tokens для начала: Новые аккаунты получают 5M бесплатных tokens без необходимости привязки кредитной карты, чего достаточно для обширных экспериментов.
- Два режима: deepseek-chat для стандартных задач (макс. вывод 8K) и deepseek-reasoner для рассуждений Chain-of-Thought (макс. вывод 64K) — reasoner использует больше tokens, но показывает лучшие результаты в сложных задачах.
Руководство по DeepSeek V4 API: Цены, настройка и примеры кода
DeepSeek стал ценовым лидером среди LLM API. Благодаря ценам, которые на порядок ниже, чем у OpenAI и Anthropic, и полной совместимости с OpenAI SDK, переход на DeepSeek занимает около пяти минут. Это руководство проведет вас через все этапы: настройку аккаунта, расчет стоимости, примеры кода на Python и JavaScript, context caching и миграцию с OpenAI.
Независимо от того, создаете ли вы чат-бота, помощника по написанию кода или обрабатываете целые кодовые базы с помощью окна контекста в 1M tokens, это руководство вам поможет.
Быстрый старт: Ваш первый вызов DeepSeek API
Начало работы включает три шага.
1. Создайте аккаунт
Перейдите на platform.deepseek.com и зарегистрируйтесь. Новые аккаунты получают 5 миллионов бесплатных tokens без необходимости привязки кредитной карты — этого достаточно для долгих экспериментов перед оплатой.
2. Сгенерируйте API Key
Перейдите в раздел API Keys в панели управления. Нажмите Create new API key, дайте ему имя и немедленно скопируйте ключ. Вы не сможете просмотреть его снова.
Сохраните ключ как переменную окружения:
export DEEPSEEK_API_KEY="sk-your-key-here"
3. Сделайте свой первый запрос
Поскольку DeepSeek следует формату OpenAI API, вы можете использовать официальный OpenAI SDK. Сначала установите его:
pip install openai
Затем сделайте простой вызов chat completion:
from openai import OpenAI
client = OpenAI(
api_key="sk-your-key-here",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain Python decorators in three sentences."}
]
)
print(response.choices[0].message.content)
Это все. Если вы ранее использовали OpenAI API, единственными отличиями будут base_url и ваш API key.
Анализ цен
Модель ценообразования DeepSeek проста и значительно дешевле конкурентов. Ключевым отличием является context caching, который снижает затраты на ввод на 90% для повторяющихся префиксов prompt.
Цены на DeepSeek API
| Тип Token | Стоимость за 1M Tokens |
|---|---|
| Ввод (cache hit) | $0.028 |
| Ввод (cache miss) | $0.28 |
| Вывод | $0.42 |
Сравнение
| Провайдер / Модель | Ввод (за 1M) | Вывод (за 1M) |
|---|---|---|
| DeepSeek V4 (cache hit) | $0.028 | $0.42 |
| DeepSeek V4 (cache miss) | $0.28 | $0.42 |
| OpenAI GPT-5.4 | $2.50 | $10.00 |
| Anthropic Claude Opus 4.6 | $15.00 | $75.00 |
| Google Gemini 3.1 Pro | $1.25 | $5.00 |
Цифры говорят сами за себя. При cache hits DeepSeek примерно в 90 раз дешевле, чем OpenAI на вводных tokens, и в 500 раз дешевле, чем Claude Opus. Даже без кэширования тариф DeepSeek за cache-miss в размере $0.28/M все равно в 9 раз дешевле, чем цена ввода GPT-5.4.
Пример стоимости
Обработка 100 запросов, каждый из которых содержит системный prompt на 2,000 tokens и пользовательский запрос на 500 tokens, с генерацией ответов по 1,000 tokens:
- С кэшированием (99 cache hits): ~ $0.05 итого
- Без кэширования: ~ $0.29 итого
- Та же нагрузка на GPT-5.4: ~ $3.75 итого
Для высоконагруженных приложений экономия накапливается быстро.
Режимы API: deepseek-chat против deepseek-reasoner
DeepSeek предлагает два различных режима моделей, каждый из которых оптимизирован для разных задач.
deepseek-chat
Стандартный режим для задач общего назначения. Быстрый, эффективный и подходящий для большинства приложений.
| Свойство | Значение |
|---|---|
| Макс. входных tokens | 1,000,000 |
| Макс. выходных tokens | 8,192 |
| Лучше всего для | Чата, суммаризации, генерации кода, общих Q&A |
deepseek-reasoner
Включает рассуждения Chain-of-Thought (CoT). Модель «думает» шаг за шагом перед тем, как выдать окончательный ответ, что значительно повышает точность в сложных задачах.
| Свойство | Значение |
|---|---|
| Макс. входных tokens | 1,000,000 |
| Макс. выходных tokens | 64,000 |
| Лучше всего для | Математики, логических задач, сложной отладки, многошаговых рассуждений |
Reasoner возвращает как процесс рассуждения, так и окончательный ответ:
# The reasoning chain
print(response.choices[0].message.reasoning_content)
# The final answer
print(response.choices[0].message.content)
Когда использовать reasoner: Если задача требует многошаговой логики, математических доказательств или сложной отладки кода, используйте deepseek-reasoner. Для всего остального deepseek-chat быстрее и дешевле.
Примеры кода
Python: Базовый Chat Completion
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com"
)
def ask_deepseek(prompt, system_prompt="You are a helpful assistant."):
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=2048
)
return response.choices[0].message.content
answer = ask_deepseek("Write a Python function to merge two sorted lists.")
print(answer)
Python: Streaming
Для длинных ответов streaming обеспечивает лучший пользовательский опыт, возвращая tokens по мере их генерации:
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a senior software engineer."},
{"role": "user", "content": "Review this code and suggest improvements:\n\ndef fib(n):\n if n <= 1: return n\n return fib(n-1) + fib(n-2)"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Python: Режим Reasoner
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "user", "content": "Find all bugs in this code and explain why each is a bug:\n\ndef quicksort(arr):\n if len(arr) <= 1:\n return arr\n pivot = arr[0]\n left = [x for x in arr if x < pivot]\n right = [x for x in arr if x > pivot]\n return quicksort(left) + [pivot] + quicksort(right)"}
]
)
print("Reasoning:", response.choices[0].message.reasoning_content)
print("Answer:", response.choices[0].message.content)
JavaScript / Node.js: Базовый чат
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.DEEPSEEK_API_KEY,
baseURL: "https://api.deepseek.com",
});
async function askDeepSeek(prompt) {
const response = await client.chat.completions.create({
model: "deepseek-chat",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: prompt },
],
});
return response.choices[0].message.content;
}
const answer = await askDeepSeek("Explain closures in JavaScript.");
console.log(answer);
JavaScript / Node.js: Streaming
const stream = await client.chat.completions.create({
model: "deepseek-chat",
messages: [
{ role: "user", content: "Write a REST API in Express.js with CRUD routes for a todo app." },
],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) {
process.stdout.write(content);
}
}
Context Caching: Экономия 90% на повторяющихся Prompts
Context caching в DeepSeek — одно из его сильнейших конкурентных преимуществ, и оно требует нулевых изменений в коде с вашей стороны.
Как это работает
Когда вы отправляете запрос, DeepSeek проверяет, совпадает ли начало вашего prompt с ранее кэшированным префиксом. Если первые N tokens идентичны недавнему запросу, эти tokens обслуживаются из кэша по сниженной ставке ($0.028/M против $0.28/M).
Это происходит автоматически. Вам не нужно объявлять cache keys, устанавливать TTL или каким-либо образом изменять вызовы API.
Когда активируется кэширование
Кэширование включается, когда:
- Одинаковый системный prompt в разных запросах. Если каждый запрос начинается с «Вы — опытный Python-разработчик...», этот префикс кэшируется после первого вызова.
- Общая история диалога. В многоходовых диалогах накопленная история из предыдущих ходов кэшируется.
- Пакетная обработка с согласованными шаблонами. Выполнение одного и того же аналитического prompt для различных входных данных означает, что только переменная часть тарифицируется по полной стоимости.
Максимизация Cache Hits
Чтобы получить максимальную отдачу от кэширования:
- Ставьте статический контент первым. Структурируйте свои сообщения так, чтобы системный prompt и любые фиксированные инструкции шли перед переменным контентом.
- Используйте идентичные системные prompts. Даже разница в один символ нарушает соответствие в кэше.
- Группируйте похожие запросы. Отправляйте запросы с общими префиксами быстро друг за другом, чтобы кэш оставался «горячим».
- Уверенно используйте длинные системные prompts. Системный prompt на 10,000 tokens почти ничего не стоит после первого запроса, если он остается кэшированным.
Миграция с OpenAI
Если вы в данный момент используете OpenAI API, переход на DeepSeek — это изменение в две строки. Формат API идентичен.
До (OpenAI)
from openai import OpenAI
client = OpenAI(
api_key="sk-openai-key-here"
# base_url по умолчанию https://api.openai.com/v1
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)
После (DeepSeek)
from openai import OpenAI
client = OpenAI(
api_key="sk-deepseek-key-here",
base_url="https://api.deepseek.com" # <-- добавьте эту строку
)
response = client.chat.completions.create(
model="deepseek-chat", # <-- измените название модели
messages=[{"role": "user", "content": "Hello"}]
)
Это вся миграция. Изменены две строки: base_url и model. Все остальное — формат сообщений, streaming, function calling, режим JSON — работает так же.
Подход с использованием переменных окружения
Для проектов, которым нужно легко переключаться между провайдерами:
import os
from openai import OpenAI
provider = os.getenv("LLM_PROVIDER", "deepseek")
config = {
"deepseek": {
"api_key": os.getenv("DEEPSEEK_API_KEY"),
"base_url": "https://api.deepseek.com",
"model": "deepseek-chat"
},
"openai": {
"api_key": os.getenv("OPENAI_API_KEY"),
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o"
}
}
client = OpenAI(
api_key=config[provider]["api_key"],
base_url=config[provider]["base_url"]
)
Использование DeepSeek с инструментами Open Source
Поскольку DeepSeek совместим с OpenAI, он работает с растущей экосистемой инструментов для кодинга на базе ИИ с открытым исходным кодом. Вот самые популярные из них.
OpenCode
OpenCode — это помощник для кодинга на базе ИИ с открытым исходным кодом для терминала. Настройте его на использование DeepSeek, установив провайдера в конфигурации:
{
"provider": {
"name": "deepseek",
"apiKey": "sk-your-key",
"baseURL": "https://api.deepseek.com",
"model": "deepseek-chat"
}
}
Aider
Aider — это ИИ-напарник для программирования в командной строке. Направьте его на DeepSeek с помощью переменных окружения:
export OPENAI_API_BASE="https://api.deepseek.com"
export OPENAI_API_KEY="sk-your-deepseek-key"
aider --model openai/deepseek-chat
Continue (Расширение VS Code)
Continue — это открытый ИИ-помощник для VS Code и JetBrains. Добавьте DeepSeek в ваш ~/.continue/config.json:
{
"models": [
{
"title": "DeepSeek V4",
"provider": "openai",
"model": "deepseek-chat",
"apiBase": "https://api.deepseek.com",
"apiKey": "sk-your-key"
}
]
}
Все три инструмента воспринимают DeepSeek как прямую замену OpenAI. Никаких специальных адаптеров или плагинов не требуется.
Использование окна контекста в 1M Token
Окно контекста DeepSeek в 1 миллион tokens открывает возможности для рабочих процессов, которые раньше были непрактичными.
Анализ всей кодовой базы
Типичный проект среднего размера (50,000 строк кода) — это примерно 500,000 tokens. С контекстом DeepSeek в 1M вы можете поместить всю кодовую базу в один prompt для:
- Архитектурного ревью. Попросите модель выявить циклические зависимости, отсутствующие абстракции или непоследовательные паттерны во всем проекте.
- Межфайлового рефакторинга. Опишите желаемое изменение и позвольте модели сгенерировать скоординированные правки в нескольких файлах.
- Аудита безопасности. Просканируйте всю кодовую базу на наличие SQL injection, XSS и других уязвимостей за один проход.
Практические советы для больших контекстов
- Сначала предоставьте дерево файлов. Начните свой prompt со структуры каталогов, чтобы модель понимала макет проекта перед чтением отдельных файлов.
- Используйте четкие разделители. Оборачивайте каждый файл в маркеры типа
--- FILE: src/auth.py ---, чтобы модель могла ссылаться на конкретные файлы в своем ответе. - Задавайте сфокусированные вопросы. Окно контекста в 1M не означает, что вам нужны расплывчатые prompts. Будьте конкретны в том, что вы хотите проанализировать.
- Комбинируйте с кэшированием. Если вы делаете несколько запросов к одной и той же кодовой базе, часть с кодом кэшируется после первого запроса — последующие вопросы стоят лишь малую часть от первоначального вызова.
Лучшие практики по оптимизации затрат
1. Структурируйте Prompts для максимальных Cache Hits
Размещайте самый длинный и стабильный контент в начале массива сообщений. Системные prompts, examples и справочная документация должны идти перед переменным запросом пользователя.
2. Используйте deepseek-chat по умолчанию
Резервируйте deepseek-reasoner для задач, которые действительно требуют многошаговых рассуждений. Для простой генерации, суммаризации и дополнения кода deepseek-chat быстрее и использует меньше tokens.
3. Устанавливайте соответствующие max_tokens
Не устанавливайте max_tokens выше, чем вам нужно. Если вы ожидаете ответ в 200 tokens, установка max_tokens: 8192 сама по себе не будет стоить дороже, но она не позволит модели остановиться раньше, если она начнет «пустословить».
4. Группируйте похожие запросы
Объединяйте запросы, которые используют один и тот же системный prompt, и отправляйте их быстро друг за другом. Это поддерживает кэш в актуальном состоянии и гарантирует, что большинство запросов попадет в кэшированный префикс.
5. Мониторьте использование Token
Проверяйте поле usage в ответах API, чтобы отслеживать фактическое потребление:
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Hello"}]
)
print(f"Input tokens: {response.usage.prompt_tokens}")
print(f"Output tokens: {response.usage.completion_tokens}")
print(f"Cache hit tokens: {response.usage.prompt_cache_hit_tokens}")
print(f"Cache miss tokens: {response.usage.prompt_cache_miss_tokens}")
6. Используйте Streaming для длинных ответов
Streaming не экономит деньги, но улучшает воспринимаемую задержку. Пользователи видят первые tokens в течение миллисекунд вместо того, чтобы ждать генерации полного ответа.
Заключение
API от DeepSeek сочетает в себе агрессивное ценообразование, совместимость с OpenAI и окно контекста в 1M tokens в пакете, который трудно игнорировать. Путь миграции с OpenAI тривиален — измените две строки кода, и ваше существующее приложение заработает. Context caching обеспечивает автоматическую экономию средств без каких-либо изменений в коде. А экосистема инструментов с открытым исходным кодом уже поддерживает DeepSeek как первоклассного провайдера.
Для разработчиков, создающих приложения с учетом стоимости, высокопроизводительные конвейеры обработки или инструменты анализа всей кодовой базы, DeepSeek V4 заслуживает серьезного рассмотрения. Начните с 5 миллионов бесплатных tokens, сравните его с вашим текущим провайдером и позвольте цифрам направить ваше решение.