⚠️ Внимание!

Для быстрого и простого подключения DeepSeek V3.2 по API в Ваш проект мы рекомендуем использовать сервис VseGPT.ru - единый доступ к 120 нейросетям по API с оплатой из России.

Обзор DeepSeek API

DeepSeek предоставляет RESTful API, полностью совместимый с OpenAI API форматом. Это позволяет использовать существующие SDK и библиотеки для быстрой интеграции.

Совместимость

Используйте OpenAI SDK или любые совместимые инструменты для доступа к DeepSeek API

Базовый URL

https://api.deepseek.com

или https://api.deepseek.com/v1 для совместимости с OpenAI

Поддерживаемые модели

  • deepseek-chat - стандартная чат-модель
  • deepseek-reasoner - модель с режимом рассуждений

⚠️ Важное обновление

Модели deepseek-chat и deepseek-reasoner были обновлены до DeepSeek-V3.2:

  • deepseek-chat - стандартный режим DeepSeek-V3.2
  • deepseek-reasoner - режим рассуждений (thinking mode) DeepSeek-V3.2

Регистрация и получение API ключа

Шаг 1: Создание аккаунта

  1. Перейдите на DeepSeek Platform
  2. Зарегистрируйтесь или войдите в существующий аккаунт
  3. Подтвердите email (если требуется)

Шаг 2: Получение API ключа

  1. В личном кабинете перейдите в раздел "API Keys"
  2. Нажмите "Create new API key"
  3. Укажите название ключа (например, "Production Key")
  4. Скопируйте и сохраните ключ в безопасном месте

⚠️ Внимание!

API ключ показывается только один раз при создании! Сохраните его в надежном месте.

Рекомендуемые заголовки запросов

HTTP Headers
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
Accept: application/json

Ваш первый API запрос

Пример cURL запроса

cURL
curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer \${DEEPSEEK_API_KEY}" \
  -d '{
        "model": "deepseek-chat",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "stream": false
      }'

Ответ сервера

JSON Response
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "deepseek-chat",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Hello! How can I assist you today?"
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 8,
    "total_tokens": 18
  }
}

Модели и цены

Параметр deepseek-chat deepseek-reasoner
Версия модели DeepSeek-V3.2 (Стандартный режим) DeepSeek-V3.2 (Режим рассуждений)
Длина контекста 128K токенов
Максимальный вывод По умолчанию: 4K, Максимум: 8K По умолчанию: 32K, Максимум: 64K
JSON Output
Tool Calls
1M входных токенов (кэш попадание) $0.028
1M входных токенов (кэш промах) $0.28
1M выходных токенов $0.42

💰 Правила списания

Расход = количество токенов × цена. Средства списываются с пополненного баланса, а при наличии грантового баланса - сначала с грантового.

См. также Как оплатить DeepSeek из России

Chat Completions API

Эндпоинт

Endpoint
POST https://api.deepseek.com/chat/completions

Обязательные параметры

JSON Body
{
  "model": "deepseek-chat",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "Hello!"
    }
  ]
}

Дополнительные параметры

Параметр Тип Описание По умолчанию
temperature float Креативность (0-2) 1.0
max_tokens integer Максимум токенов ответа Зависит от модели
top_p float Качество генерации (0-1) 1.0
stream boolean Потоковый ответ false
response_format object Формат ответа (например JSON) null

JSON Output (Структурированный вывод)

Для получения ответов в строгом JSON формате:

⚠️ Требования

  1. Установите response_format: {'type': 'json_object'}
  2. Включите слово "json" в системный или пользовательский промпт
  3. Предоставьте пример желаемого JSON формата
  4. Установите разумное значение max_tokens

Пример на Python

Python
import json
from openai import OpenAI

client = OpenAI(
    api_key="ваш_api_ключ",
    base_url="https://api.deepseek.com",
)

system_prompt = """
Пользователь предоставит текст. Пожалуйста, распарсите "вопрос" и "ответ" 
и выведите их в JSON формате.

ПРИМЕР ВВОДА: 
Какая самая высокая гора в мире? Эверест.

ПРИМЕР JSON ВЫВОДА:
{
    "question": "Какая самая высокая гора в мире?",
    "answer": "Эверест"
}
"""

user_prompt = "Какая самая длинная река в мире? Нил."

messages = [
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": user_prompt}
]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    response_format={'type': 'json_object'}
)

print(json.loads(response.choices[0].message.content))

Tool Calls (Вызов инструментов)

Базовый пример

Python
from openai import OpenAI

client = OpenAI(
    api_key="ваш_api_ключ",
    base_url="https://api.deepseek.com",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Получить погоду в указанном месте",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Город и область, например: Москва"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

messages = [
    {"role": "user", "content": "Какая погода в Москве?"}
]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    tools=tools
)

# Обработка ответа с вызовом функции
message = response.choices[0].message
if message.tool_calls:
    tool_call = message.tool_calls[0]
    function_name = tool_call.function.name
    arguments = json.loads(tool_call.function.arguments)
    
    print(f"Вызвана функция: {function_name}")
    print(f"Аргументы: {arguments}")

Примеры на Python

Базовый клиент

Python - Базовый клиент
import requests
import json

class DeepSeekClient:
    def __init__(self, api_key, base_url="https://api.deepseek.com"):
        self.api_key = api_key
        self.base_url = base_url
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }
    
    def chat_completion(self, messages, model="deepseek-chat", **kwargs):
        url = f"{self.base_url}/chat/completions"
        
        payload = {
            "model": model,
            "messages": messages,
            **kwargs
        }
        
        try:
            response = requests.post(
                url,
                headers=self.headers,
                json=payload,
                timeout=60
            )
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"API Error: {e}")
            return None

# Использование
client = DeepSeekClient("ваш_api_ключ")
messages = [
    {"role": "system", "content": "Ты полезный ассистент."},
    {"role": "user", "content": "Привет!"}
]

response = client.chat_completion(messages, temperature=0.7)
if response:
    print(response['choices'][0]['message']['content'])

Потоковый режим

Python - Потоковый режим
def stream_chat(self, messages, model="deepseek-chat", **kwargs):
    url = f"{self.base_url}/chat/completions"
    
    payload = {
        "model": model,
        "messages": messages,
        "stream": True,
        **kwargs
    }
    
    response = requests.post(
        url,
        headers=self.headers,
        json=payload,
        stream=True,
        timeout=60
    )
    response.raise_for_status()
    
    for line in response.iter_lines():
        if line:
            line = line.decode('utf-8')
            if line.startswith("data: "):
                data = line[6:]
                if data != "[DONE]":
                    try:
                        chunk = json.loads(data)
                        if 'choices' in chunk and chunk['choices']:
                            delta = chunk['choices'][0].get('delta', {})
                            if 'content' in delta:
                                print(delta['content'], end='', flush=True)
                    except json.JSONDecodeError:
                        continue

Примеры на JavaScript/Node.js

Базовый клиент

JavaScript/Node.js
const axios = require('axios');

class DeepSeekClient {
    constructor(apiKey, baseUrl = 'https://api.deepseek.com') {
        this.apiKey = apiKey;
        this.baseUrl = baseUrl;
        this.client = axios.create({
            baseURL: this.baseUrl,
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            },
            timeout: 60000
        });
    }

    async chatCompletion(messages, options = {}) {
        const {
            model = 'deepseek-chat',
            temperature = 0.7,
            max_tokens = 1000,
            stream = false,
            ...otherOptions
        } = options;

        try {
            const response = await this.client.post('/chat/completions', {
                model,
                messages,
                temperature,
                max_tokens,
                stream,
                ...otherOptions
            });

            return response.data;
        } catch (error) {
            console.error('API Error:', error.response?.data || error.message);
            throw error;
        }
    }
}

// Использование
async function main() {
    const client = new DeepSeekClient('ваш_api_ключ');
    
    const messages = [
        { role: 'system', content: 'Ты полезный ассистент.' },
        { role: 'user', content: 'Привет!' }
    ];

    try {
        const response = await client.chatCompletion(messages, {
            temperature: 0.7,
            max_tokens: 500
        });

        console.log('Ответ:', response.choices[0].message.content);
    } catch (error) {
        console.error('Ошибка:', error);
    }
}

main();

Обработка ошибок

Код ошибки Описание Решение
400 Invalid Format - Неверный формат запроса Проверьте тело запроса согласно документации
401 Authentication Fails - Ошибка аутентификации Проверьте API ключ
402 Insufficient Balance - Недостаточно средств Пополните баланс
422 Invalid Parameters - Неверные параметры Проверьте параметры запроса
429 Rate Limit Reached - Превышен лимит запросов Снизьте частоту запросов
500 Server Error - Ошибка сервера Повторите запрос позже
503 Server Overloaded - Сервер перегружен Повторите запрос позже

Пример обработки ошибок на Python

Python - Обработка ошибок
def handle_api_error(error):
    """Обработка ошибок API"""
    
    if isinstance(error, requests.exceptions.HTTPError):
        status_code = error.response.status_code
        
        if status_code == 400:
            return "Некорректный запрос. Проверьте параметры."
        elif status_code == 401:
            return "Неверный API ключ. Проверьте аутентификацию."
        elif status_code == 429:
            return "Превышены лимиты запросов. Попробуйте позже."
        elif status_code >= 500:
            return "Ошибка сервера DeepSeek. Попробуйте позже."
        else:
            return f"HTTP ошибка {status_code}: {error.response.text}"
    
    elif isinstance(error, requests.exceptions.Timeout):
        return "Таймаут запроса. Проверьте соединение."
    
    elif isinstance(error, requests.exceptions.ConnectionError):
        return "Ошибка соединения. Проверьте сеть."
    
    else:
        return f"Неизвестная ошибка: {str(error)}"

Лучшие практики

1. Управление API ключами

Python - Переменные окружения
import os
from dotenv import load_dotenv

load_dotenv()
API_KEY = os.getenv('DEEPSEEK_API_KEY')

2. Рейт-лимитинг

Python - Декоратор для лимитов
import time
from functools import wraps

def rate_limiter(max_calls, period):
    """Декоратор для ограничения частоты запросов"""
    def decorator(func):
        calls = []
        
        @wraps(func)
        def wrapper(*args, **kwargs):
            now = time.time()
            calls[:] = [call for call in calls if call > now - period]
            
            if len(calls) >= max_calls:
                sleep_time = period - (now - calls[0])
                time.sleep(sleep_time)
            
            calls.append(now)
            return func(*args, **kwargs)
        
        return wrapper
    return decorator

# Использование
@rate_limiter(max_calls=50, period=60)  # 50 запросов в минуту
def make_api_call():
    # ваш код
    pass

3. Рекомендации по temperature

Тип задачи Рекомендуемый temperature
Программирование / Математика 0.0
Очистка данных / Анализ 1.0
Общий разговор 1.3
Перевод 1.3
Творческое письмо / Поэзия 1.5

FIM Completion (Заполнение середины) - Beta

⚠️ Beta функция

Для использования требуется базовый URL: https://api.deepseek.com/beta

Максимальное количество токенов: 4K

Пример на Python

Python - FIM Completion
from openai import OpenAI

client = OpenAI(
    api_key="ваш_api_ключ",
    base_url="https://api.deepseek.com/beta",
)

response = client.completions.create(
    model="deepseek-chat",
    prompt="def fib(a):",
    suffix="    return fib(a-1) + fib(a-2)",
    max_tokens=128
)

print(response.choices[0].text)

Chat Prefix Completion - Beta

⚠️ Требования

  • Последнее сообщение в массиве messages должно иметь роль "assistant"
  • Установите prefix: True для последнего сообщения
  • Используйте базовый URL: https://api.deepseek.com/beta

Пример на Python

Python - Chat Prefix
from openai import OpenAI

client = OpenAI(
    api_key="ваш_api_ключ",
    base_url="https://api.deepseek.com/beta",
)

messages = [
    {"role": "user", "content": "Напишите код быстрой сортировки"},
    {"role": "assistant", "content": "```python\n", "prefix": True}
]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=messages,
    stop=["```"],
)

print(response.choices[0].message.content)

Лимиты запросов (Rate Limit)

📊 Важная информация

DeepSeek API не ограничивает количество запросов пользователя. Мы стараемся обслуживать каждый запрос.

⚠️ При высокой нагрузке

  • Запросы могут занимать больше времени
  • HTTP соединение остается открытым
  • Вы можете получать пустые строки или keep-alive комментарии
  • Если запрос не начал инференс через 10 минут - соединение закрывается

Оптимальные значения

  • Таймаут соединения: 10 секунд
  • Таймаут чтения: 30 секунд
  • Общий таймаут: 60 секунд
  • Частота запросов: 10-60 запросов в минуту

Заключение

✅ Ключевые моменты

  • DeepSeek API полностью совместим с OpenAI API форматом
  • Используйте базовый URL: https://api.deepseek.com
  • Все модели обновлены до DeepSeek-V3.2
  • Длина контекста: 128K токенов
  • Поддерживаются JSON Output, Tool Calls, потоковый режим
  • Beta функции доступны через /beta endpoint

Документация

Официальная документация: platform.deepseek.com/api-docs

Поддержка

Проверяйте баланс и настройки в личном кабинете

Обновления

Следите за обновлениями в официальном блоге и документации

Получить API ключ Официальная документация