DeepSeek V4-Pro + Codex: руководство по интеграции через Responses API для кодовых агентов
Как подключить DeepSeek V4-Pro и V4-Flash к Codex и другим кодовым агентам на базе Responses API. Настройка, совместимость, подводные камни и расчёт стоимости — чтобы вы могли решить, стоит ли добавлять DeepSeek в стек агентной разработки.
DeepSeek API теперь нативно поддерживает формат Responses API. Это значит, что Codex — агентный кодовый ассистент OpenAI — может обращаться к DeepSeek V4-Pro и V4-Flash напрямую, без промежуточных адаптеров. Достаточно указать base URL https://api.deepseek.com, зарегистрировать модели, и агент начинает работать.
Мы протестировали эту связку, потому что агентные кодовые нагрузки затрагивают все ключевые параметры API-провайдера: надёжность вызова инструментов, задержку потоковой передачи, глубину рассуждений и стоимость за один ход. DeepSeek V4-Pro хорошо показывает себя по всем четырём пунктам, особенно по стоимости. В этом руководстве мы разбираем настройку, границы совместимости и подводные камни, которые стоит знать до запуска в продакшен.
OpenAI-совместимость означает, что провайдер предоставляет endpoint chat-completions, чей контракт запроса и ответа достаточно близок к API OpenAI, чтобы немодифицированный вызов OpenAI SDK работал после замены трёх значений: API key, base URL, название модели. Минимальная поверхность на практике —POST /v1/chat/completions с messages, model и потоковым ответом в форме OpenAI.
Начало работы за 3 минуты
Шаг 1. Получите API-ключ. Зарегистрируйтесь на platform.deepseek.com и создайте ключ на странице API Keys. Ключ показывается один раз — сохраните его.
Шаг 2. Зарегистрируйте DeepSeek в Codex. DeepSeek выпустил официальное руководство по интеграции с Codex с готовой конфигурацией моделей. Интеграционный скрипт регистрирует deepseek-v4-flash и deepseek-v4-pro как доступные модели в Codex, задаёт base URL на https://api.deepseek.com и настраивает Codex-специфичные параметры: apply_patch_tool_type, multi_agent_version и политику обрезки.
Если коротко: запустите скрипт от DeepSeek, задайте переменную окружения DEEPSEEK_API_KEY, и обе модели DeepSeek появятся в списке Codex.
Шаг 3. Проведите дымовой тест. Перед тем как дать агенту доступ на запись в репозиторий, убедитесь, что базовый запрос через Responses API проходит:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_DEEPSEEK_KEY",
base_url="https://api.deepseek.com",
)
response = client.responses.create(
model="deepseek-v4-flash",
instructions="You are a helpful coding assistant.",
input="Write a Python function that reverses a linked list.",
)
print(response.output_text)
Если пришёл осмысленный ответ — вызов инструментов и потоковая передача тоже будут работать. Responses API на DeepSeek поддерживает тот же поток SSE-событий, что и реализация OpenAI.
Responses API на DeepSeek: что работает
Страница совместимости Responses API у DeepSeek составлена необычно прозрачно: чётко перечислено, что поддерживается, а что нет. Ниже — практическая сводка для сценариев с кодовыми агентами.
Полная поддержка
| Функция | Примечания |
|---|---|
model | deepseek-v4-flash, deepseek-v4-pro, deepseek-v4-flash-vision-exp |
input | Строка или структурированный список input items |
instructions | Вставляются первым system message |
stream | Полный поток SSE-событий с семантическими типами |
tools (function) | Стандартные function-calling инструменты |
tool_choice | none, auto, required или конкретный инструмент |
reasoning | Параметр effort поддерживается (low / high / max) |
temperature, top_p | Стандартные диапазоны (не действуют в режиме размышления) |
max_output_tokens | До 384K |
top_logprobs | Диапазон 0–20 |
Частичная поддержка
| Функция | Статус |
|---|---|
tools (web_search) | Поддерживается, но code_interpreter и file_search игнорируются |
text.format | Полная поддержка, но verbosity не действует |
reasoning.summary | Принимается, но summary не генерируется |
parallel_tool_calls | Игнорируется; параллельный вызов инструментов всегда включён |
Не поддерживается
| Функция | Влияние на Codex |
|---|---|
previous_response_id | API DeepSeek stateless — серверная история диалога отсутствует |
conversation | Аналогично; мультитурновое состояние управляется на клиенте |
background | Фоновое выполнение не поддерживается |
store | Ответ всегда содержит store: false |
truncation | Запросы, превышающие контекстное окно, возвращают 400 |
Для Codex отсутствие previous_response_id не проблема — Codex управляет состоянием диалога на клиенте. Отсутствие background означает, что все ходы Codex выполняются синхронно, что и так является поведением по умолчанию.
Вызов инструментов для кодовых агентов
Кодовые агенты стоят или падают на надёжности вызова инструментов. DeepSeek V4-Pro и V4-Flash поддерживают полную схему function calling OpenAI через оба интерфейса — Chat Completions и Responses API. Вызов инструментов работает и в режиме размышления, и без него.
Типичный поток вызова инструментов кодового агента выглядит так:
tools = [
{
"type": "function",
"function": {
"name": "read_file",
"description": "Read the contents of a file at the given path.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Absolute path to the file",
}
},
"required": ["path"],
},
},
},
]
response = client.responses.create(
model="deepseek-v4-pro",
instructions="You are a coding agent with file system access.",
input="Read the contents of /src/main.py and suggest improvements.",
tools=tools,
)
DeepSeek также поддерживает strict режим (через base URL /beta для Chat Completions), гарантирующий точное соответствие JSON Schema в выводе инструментов. Для агентных потоков, где некорректный формат вызова вызывает каскадные ошибки, эту возможность стоит протестировать. Однако beta-endpoint и Responses API — отдельные пути.
Codex-специфичные типы инструментов
Codex использует проприетарный инструмент apply_patch для записи изменений в файлы. Интеграция DeepSeek настраивает его как "apply_patch_tool_type": "freeform" — модель генерирует содержимое патча в свободном текстовом формате. web_search_tool_type установлен в "text", что соответствует нативной поддержке web search у DeepSeek.
Режим размышления и глубина рассуждений
V4-Pro и V4-Flash по умолчанию работают в режиме размышления. Для задач, требующих глубоких рассуждений (рефакторинг сложной кодовой базы, отладка тонких условий гонки), режим размышления даёт заметно лучшие результаты. Для простых задач (переименование переменной, добавление docstring) он лишь увеличивает задержку без пропорциональной пользы.
Responses API на DeepSeek принимает параметр reasoning.effort с тремя уровнями:
| Уровень | Поведение | Подходит для |
|---|---|---|
low | Быстро, лёгкое рассуждение | Простые правки, форматирование, шаблонный код |
high | По умолчанию; более глубокая цепочка рассуждений | Большинство задач кодирования |
max | Максимальная глубина рассуждений | Архитектурные решения, сложная отладка |
Codex отображает эти уровни на собственный селектор глубины рассуждений. Интеграция DeepSeek по умолчанию использует high, все три уровня доступны.
Важный нюанс: reasoning.summary принимается, но DeepSeek не генерирует summary рассуждений. Если ваш агентный пайплайн считывает summary для определения следующего шага, от DeepSeek вы его не получите.
Стоимость: математика расходов на кодовых агентов
Здесь DeepSeek выигрывает убедительнее всего. Кодовые агенты дорого обходятся из-за длинных цепочек вызовов инструментов, каждый с объёмным контекстом на входе. Вот как V4-Pro соотносится с моделями, которые Codex обычно использует:
| Модель | Вход (промах кэша) | Вход (попадание) | Выход | Контекст |
|---|---|---|---|---|
| DeepSeek V4-Pro (off-peak) | $0.66 / 1M | $0.022 / 1M | $1.98 / 1M | 1M |
| DeepSeek V4-Pro (peak) | $1.32 / 1M | $0.044 / 1M | $3.96 / 1M | 1M |
| DeepSeek V4-Flash (off-peak) | $0.22 / 1M | $0.007 / 1M | $0.66 / 1M | 1M |
| DeepSeek V4-Flash (peak) | $0.44 / 1M | $0.014 / 1M | $1.32 / 1M | 1M |
Пиковые часы — 01:00–04:00 и 06:00–10:00 UTC, с понедельника по пятницу. Всё остальное время — off-peak со скидкой 50%.
Цена при попадании в кэш — ключевое число для кодовых агентов. Агентные потоки многократно отправляют один и тот же системный промпт, содержимое файлов и историю диалога. Автоматическое кэширование контекста у DeepSeek означает, что после первого хода значительная часть входных данных попадает в кэш. При $0.022 за миллион токенов (off-peak, V4-Pro, попадание в кэш) можно выполнить сотни ходов агента за стоимость одного некэшированного запроса у ряда конкурентов.
Для чувствительных к затратам нагрузок V4-Flash с off-peak кэшем ($0.007 / 1M input) стоит поразительно мало. Если ваш кодовый агент в основном работает с задачами, не требующими рассуждений уровня Pro, Flash — очевидный выбор по умолчанию.
Ограничения параллелизма
DeepSeek использует лимиты на параллельные соединения, а не RPM/TPM:
| Модель | Лимит параллельности |
|---|---|
deepseek-v4-pro | 500 |
deepseek-v4-flash | 2 500 |
deepseek-v4-flash-vision-exp | 2 500 |
Запрос считается одним параллельным соединением от отправки до завершения ответа модели. Превышение лимита возвращает HTTP 429.
В командной среде, где кодовые агенты работают одновременно, лимит 500 соединений для V4-Pro может стать узким местом. Каждый разработчик с работающим Codex на V4-Pro потребляет одно соединение на активный ход. Если 50 разработчиков одновременно ведут мультитурновые кодовые сессии, вы можете приблизиться к лимиту. DeepSeek предлагает бесплатное расширение ёмкости через форму запроса.
Маршрутизация и fallback
Запускать кодового агента на единственном провайдере рискованно. API DeepSeek сталкивался с замедлениями в пиковые периоды. Слой маршрутизации с автоматическим переключением на резервного провайдера защищает рабочий процесс разработчиков.
Схема простая, потому что DeepSeek использует тот же OpenAI-совместимый протокол. Конфигурация model fallback выглядит так:
# Пример конфигурации маршрутизации
primary:
provider: deepseek
model: deepseek-v4-pro
fallback:
- provider: anthropic
model: claude-sonnet-5
- provider: openai
model: gpt-5.5-pro
Когда DeepSeek возвращает 429 (превышение параллельности) или 5xx (серверная ошибка), слой маршрутизации повторяет запрос на следующем провайдере. Кодовый агент не видит сбоя, потому что формат запроса и ответа идентичен.
Это же позволяет выполнять cost-aware маршрутизацию. Простые задачи направляются на V4-Flash (самый дешёвый), сложные рассуждения — на V4-Pro, при недоступности DeepSeek — fallback на Claude или GPT. На странице провайдера DeepSeek на TheRouter — актуальный список моделей и статус маршрутизации.
Чек-лист дымового теста перед продакшеном
Прежде чем давать кодовому агенту на DeepSeek доступ на запись в продакшен-репозиторий, проверьте каждый пункт:
- Базовое дополнение. Отправьте простой промпт и убедитесь в адекватном ответе.
- Вызов инструментов. Определите тестовый инструмент, отправьте промпт, который должен его вызвать, и проверьте, что вызов содержит корректный JSON.
- Потоковая передача. Включите
stream=Trueи убедитесь в получении непрерывных событийresponse.output_text.delta. - Режим размышления. Отправьте сложный промпт с
reasoning={"effort": "max"}и проверьте, что модель генерирует цепочку рассуждений. - Длинный контекст. Отправьте запрос с большим файлом (50K+ токенов кода) и убедитесь в отсутствии обрезки или ошибки.
- Обработка ошибок. Намеренно превысьте лимит параллельности и убедитесь, что ваша fallback-логика ловит 429.
# Дымовой тест вызова инструментов
response = client.responses.create(
model="deepseek-v4-pro",
instructions="You are a coding agent.",
input="What files are in the current directory?",
tools=[{
"type": "function",
"function": {
"name": "list_directory",
"description": "List files in a directory.",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"],
},
},
}],
)
# Проверяем, что модель выполнила вызов инструмента
for item in response.output:
if item.type == "function_call":
print(f"Tool call: {item.name}({item.arguments})")
Распространённые ошибки и способы их устранения
| Ошибка | Причина | Решение |
|---|---|---|
400: input_image must have image_url or file_id | Недостающее обязательное поле при вводе изображения | Используйте deepseek-v4-flash-vision-exp для изображений; указывайте image_url или file_id |
| 400: context length exceeded | Запрос превышает окно в 1M токенов | Сократите историю диалога; DeepSeek не поддерживает параметр truncation |
| 429: rate limit exceeded | Достигнут лимит параллельности | Реализуйте retry с экспоненциальным back-off; настройте fallback-провайдера |
reasoning.summary пустой | DeepSeek принимает параметр, но не генерирует summary | Не полагайтесь на reasoning summary в управлении потоком; считывайте выход напрямую |
previous_response_id не работает | API DeepSeek stateless | Управляйте состоянием диалога на клиенте (Codex уже так делает) |
Когда DeepSeek V4-Pro подходит для вашего кодового стека
Выбирайте V4-Pro, когда:
- Стоимость — главный приоритет. Off-peak цены V4-Pro значительно ниже, чем у большинства frontier-моделей, а высокий процент попаданий в кэш на агентных нагрузках усиливает экономию.
- Нужны глубокие рассуждения, но не абсолютный потолок. Режим размышления V4-Pro уверенно справляется со сложными рефакторингами, отладкой и архитектурными вопросами.
- Ваша команда работает в off-peak часы. Если команда в Азиатско-Тихоокеанском регионе работает в стандартное время, вы естественным образом попадаете в окно off-peak (всё, кроме UTC 01:00–04:00 и 06:00–10:00).
Выбирайте V4-Flash, когда:
- Пропускная способность важнее глубины. 2 500 параллельных соединений Flash и более низкая стоимость делают его лучшим выбором для частых, менее сложных задач.
- Вы строите мультимодельный пайплайн. Простые задачи — на Flash, сложные — на Pro.
Рассмотрите другого провайдера, когда:
- Нужно фоновое выполнение. DeepSeek не поддерживает параметр
background. - Нужно серверное состояние диалога. Параметры
previous_response_idиconversationне поддерживаются. - 500 параллельных соединений на Pro недостаточно. Запросите расширение ёмкости или используйте слой маршрутизации для распределения нагрузки между провайдерами.
Дополнительные материалы
- DeepSeek API: полное руководство — Полный справочник по Chat Completions и Responses API
- DeepSeek V4-Pro vs Flash: сравнение API — Детальное сравнение цен и производительности
- Сравнение маршрутизации моделей для кодовых агентов 2026 — V4-Pro в сравнении с Claude, Kimi K3 и GLM-5
- Страница провайдера DeepSeek — Текущий набор моделей, статус маршрутизации и интеграция
- Страница модели DeepSeek V4-Pro — Спецификации, цены и бенчмарки
- Страница модели DeepSeek V4-Flash — Спецификации, цены и бенчмарки