DeepSeek con Anthropic SDK: modelos, Vision y límites

Aviso de independencia: DeepSeek Español es un sitio informativo independiente operado por Ahmed Aly. No pertenece a DeepSeek ni a Anthropic y no está afiliado ni respaldado por ninguna de las dos empresas. Esta guía usa el cliente oficial de Anthropic contra el endpoint compatible que publica DeepSeek; no afirma que DeepSeek sea un modelo Claude ni que exista paridad completa entre ambos servicios.

Última actualización documental: 24 de agosto de 2026. Los ejemplos no contienen una clave real. Esta actualización no ejecutó una prueba nueva; la captura del 25 de julio se conserva como registro histórico.

Respuesta rápida

Para usar DeepSeek con Anthropic SDK, crea el cliente con una clave de DeepSeek y la Base URL https://api.deepseek.com/anthropic; no añadas /v1. Declara deepseek-v4-flash, deepseek-v4-pro o deepseek-v4-flash-vision-exp. Las imágenes funcionan únicamente con Vision Exp y los bloques document no están admitidos.

ElementoValor verificado
Base URL del clientehttps://api.deepseek.com/anthropic
Ruta resultante de Messages/anthropic/v1/messages
CredencialClave API de DeepSeek
Modelos actualesdeepseek-v4-flash, deepseek-v4-pro y deepseek-v4-flash-vision-exp
Node.js@anthropic-ai/sdk; Node.js 20 LTS o posterior no EOL
Pythonanthropic; Python 3.9 o posterior
FormatoAnthropic Messages compatible, con diferencias documentadas
Proveedor y facturaciónDeepSeek Open Platform

Captura histórica — 25 de julio de 2026. La imagen siguiente conserva la matriz publicada ese día. Es anterior a Pro-0813 y Vision Exp, no representa por sí sola la compatibilidad vigente y no valida funciones añadidas después.

Tabla oficial de compatibilidad del endpoint Anthropic de DeepSeek con campos admitidos, ignorados y no compatibles
Captura histórica de la matriz de compatibilidad del 25 de julio de 2026; consulte el texto actualizado y la fuente oficial vigente.

Qué significa la compatibilidad con Anthropic SDK

El SDK de Anthropic actúa como cliente HTTP. Al cambiar su Base URL, construye solicitudes con el formato Messages y las envía al host de DeepSeek. DeepSeek autentica la clave, elige el modelo, ejecuta la inferencia y registra el consumo en la cuenta de DeepSeek API.

Esta compatibilidad facilita reutilizar una integración basada en Messages, pero no convierte el servicio en la API de Anthropic. Los modelos, precios, límites, tratamiento de datos, disponibilidad y soporte pertenecen a DeepSeek. Además, la tabla oficial identifica campos ignorados y bloques que provocan incompatibilidades; por eso una aplicación debe probar las funciones que realmente utiliza.

Requisitos y manejo de la clave

  • Una cuenta de DeepSeek Platform con una clave API activa y saldo disponible.
  • Node.js 20 LTS o posterior no EOL para el SDK TypeScript, o Python 3.9 o posterior para el SDK Python.
  • Una variable de entorno privada llamada DEEPSEEK_API_KEY.
  • Un entorno de prueba sin datos personales ni secretos innecesarios.
  • Límites propios de tiempo, tamaño, concurrencia, reintentos y gasto.

DEEPSEEK_API_KEY es un nombre elegido por esta guía para que el origen de la credencial sea inequívoco. El constructor del SDK recibe ese valor mediante apiKey en TypeScript o api_key en Python. No expongas la clave en JavaScript del navegador, repositorios, registros, tickets o capturas de pantalla.

DeepSeek con Anthropic SDK en Node.js o TypeScript

Crea un proyecto, instala el paquete oficial y define la variable en la terminal:

npm install @anthropic-ai/sdk
export DEEPSEEK_API_KEY="sustituir-por-la-clave-real"

Ejemplo mínimo de Messages con V4 Pro:

import Anthropic from "@anthropic-ai/sdk";

const apiKey = process.env.DEEPSEEK_API_KEY;
if (!apiKey) {
  throw new Error("Falta la variable DEEPSEEK_API_KEY");
}

const client = new Anthropic({
  apiKey,
  baseURL: "https://api.deepseek.com/anthropic",
});

const message = await client.messages.create({
  model: "deepseek-v4-pro",
  max_tokens: 512,
  system: "Responde en español y distingue hechos de suposiciones.",
  messages: [
    {
      role: "user",
      content: "Explica en tres puntos qué valida una prueba unitaria.",
    },
  ],
});

const text = message.content
  .filter((block) => block.type === "text")
  .map((block) => block.text)
  .join("");

console.log("stop_reason:", message.stop_reason);
console.log(text);

No des por hecho que content[0] siempre es texto. Una respuesta puede incluir bloques de thinking o herramientas; filtrar por block.type evita interpretar otro tipo de bloque como salida visible.

DeepSeek con Anthropic SDK en Python

python3 -m venv .venv
source .venv/bin/activate
pip install anthropic
export DEEPSEEK_API_KEY="sustituir-por-la-clave-real"
import os
from anthropic import Anthropic

api_key = os.environ.get("DEEPSEEK_API_KEY")
if not api_key:
    raise RuntimeError("Falta la variable DEEPSEEK_API_KEY")

client = Anthropic(
    api_key=api_key,
    base_url="https://api.deepseek.com/anthropic",
)

message = client.messages.create(
    model="deepseek-v4-pro",
    max_tokens=512,
    system="Responde en español y distingue hechos de suposiciones.",
    messages=[
        {
            "role": "user",
            "content": "Explica en tres puntos qué valida una prueba unitaria.",
        }
    ],
)

text = "".join(
    block.text
    for block in message.content
    if block.type == "text"
)

print("stop_reason:", message.stop_reason)
print(text)

El SDK añade /v1/messages a la Base URL configurada. Si escribes https://api.deepseek.com/anthropic/v1 como base, puedes construir una ruta duplicada. Conserva exactamente https://api.deepseek.com/anthropic.

Modelos V4 y nombres retirados

Valor en modelEstado y entrada
deepseek-v4-flashDeepSeek-V4-Flash-0731; texto
deepseek-v4-proDeepSeek-V4-Pro-0813; GA desde el 13/08/2026; texto
deepseek-v4-flash-vision-expExperimental desde el 21/08/2026; texto e imágenes

Los tres admiten 1M de contexto, hasta 384K de salida, JSON, Tool Calls, Responses, Anthropic y Codex. Usa IDs explícitos para que una migración sea auditable; el sufijo [1m] no forma parte del ID directo de API.

A 24 de agosto de 2026, deepseek-chat y deepseek-reasoner están fuera del catálogo oficial actual y ya pasó la fecha de retirada anunciada. Las fuentes vigentes no documentan qué respuesta devuelven hoy; no afirmamos que funcionen ni que fallen sin una llamada autenticada actual. Utiliza los IDs explícitos Flash, Pro o Vision Exp en código nuevo y migra cualquier configuración heredada.

Parámetros y bloques compatibles

La matriz oficial de compatibilidad Anthropic de DeepSeek documenta estos elementos:

ÁreaElementos admitidos
AutenticaciónCabecera x-api-key, gestionada por el SDK a partir de la clave configurada.
Messagesmax_tokens, stop_sequences, stream, system, temperature de 0 a 2 y top_p.
Metadatosmetadata.user_id; el resto de metadatos se ignora.
Herramientasname, description, input_schema y tool_choice con none, auto, any o una herramienta concreta.
Contenidotext, thinking, tool_use, tool_result, server_tool_use y web_search_tool_result; image únicamente con deepseek-v4-flash-vision-exp.

Compatible no significa idéntico en todos los valores. Por ejemplo, temperature acepta hasta 2 en DeepSeek, y cuando Thinking está activo temperature y top_p no producen efecto. Valida el comportamiento con el modelo y modo concretos que utilizará tu aplicación.

Campos aceptados pero ignorados

Un campo ignorado puede no generar error, pero tampoco activa la función esperada. La documentación enumera:

  • En /messages, anthropic-version se ignora y anthropic-beta no activa funciones beta de forma general. Existe una excepción documentada para imágenes referenciadas mediante Files API, explicada en la sección siguiente.
  • container, mcp_servers, service_tier y top_k.
  • cache_control en mensajes y herramientas.
  • disable_parallel_tool_use y tool_result.is_error.
  • citations y los campos de metadata distintos de user_id.

No utilices una cabecera beta como prueba de que una función de Anthropic quedó habilitada. La excepción files-api-2025-04-14 sirve únicamente para el flujo de Files API documentado; no habilita por sí sola otros tipos de contenido. Aunque cache_control se ignora, DeepSeek mantiene por separado su caché automática de prefijos en modo best effort; no prometas un acierto de caché para una solicitud concreta.

Contenido compatible y no compatible

ElementoEstadoImplicación
Bloques imageAdmitidos de forma condicionalSolo deepseek-v4-flash-vision-exp procesa imágenes. source.type puede ser base64, url o file; la variante file requiere anthropic-beta: files-api-2025-04-14. Flash y Pro son modelos de texto.
Bloques documentNo admitidosExtraiga el texto necesario o convierta páginas autorizadas en imágenes; no presente un PDF como bloque documental compatible.
search_resultNo admitidoAdapte el flujo antes de sustituir otro tipo de resultado
redacted_thinkingNo admitidoNo espere paridad con bloques redactados
code_execution_tool_resultNo admitidoEjecute código en su propia aplicación y con permisos explícitos
mcp_tool_use y mcp_tool_resultNo admitidosTools estándar no implican MCP administrado
container_uploadNo admitidoNo envíe archivos mediante este tipo

Si una función no aparece en la matriz vigente, trátela como no confirmada hasta que exista documentación oficial o una prueba controlada.

Imágenes, Files API y documentos

Compatibilidad documental revisada el 24 de agosto de 2026; no se realizó una carga ni una llamada nueva. La matriz Anthropic vigente incluye image entre los bloques admitidos. La entrada visual funciona únicamente con deepseek-v4-flash-vision-exp; source.type puede ser base64, url o file. Flash y Pro son modelos de texto, y el bloque document continúa sin estar admitido.

En un mensaje user, image.source.type puede ser base64, url o file. Los dos primeros envían la imagen inline o mediante una URL HTTP/HTTPS. file referencia un file_id creado previamente con Files API bajo la misma API key.

{
  "type": "image",
  "source": {
    "type": "file",
    "file_id": "file-api-..."
  }
}

Cuando source.type es file, la solicitud a /messages debe incluir anthropic-beta: files-api-2025-04-14. La variante Anthropic de Files API utiliza endpoints bajo /anthropic/v1/files y exige la misma cabecera. No se documenta esa cabecera como requisito para texto ni para imágenes enviadas mediante base64 o url.

Files API admite JPEG, PNG, GIF y WebP para Vision Exp; no convierte un PDF en contenido compatible. Los bloques Anthropic document siguen sin estar admitidos. Para un PDF, extrae el texto fuera de DeepSeek o convierte únicamente las páginas autorizadas a imágenes compatibles, aplicando límites, permisos y una política de eliminación.

Consulta la guía oficial de Vision y la guía oficial de Files API antes de desplegar este flujo.

Thinking, esfuerzo y caché

Los niveles nativos actuales son low, high y max. El mapeo es low→low, medium→high, high→high, xhigh→high y max→max. budget_tokens se ignora; no prometa que otra escala conserva exactamente su semántica.

Cuando una respuesta con thinking solicita herramientas, conserva y reenvía todos los bloques del mensaje del asistente. No muestres ni registres razonamiento interno como si fuera una explicación revisada.

La caché de prefijos se activa automáticamente y funciona en modo best effort. Mide los contadores reales; no presupongas un acierto garantizado.

Streaming con el SDK

El endpoint admite Server-Sent Events y los SDK proporcionan utilidades para consumirlos. Ejemplo en Python:

with client.messages.stream(
    model="deepseek-v4-pro",
    max_tokens=512,
    messages=[
        {"role": "user", "content": "Resume qué es una API en dos frases."}
    ],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

    final_message = stream.get_final_message()

print("\nstop_reason:", final_message.stop_reason)

No concatentes todos los eventos como si fueran texto: también pueden aparecer eventos de inicio, delta, thinking, uso o herramientas. Utiliza el parser del SDK, gestiona cortes de conexión y no presentes una respuesta parcial como completa si no recibes el final del mensaje.

Uso seguro de herramientas

  1. Declara cada herramienta con un nombre estable, una descripción precisa y un input_schema restrictivo.
  2. Cuando llegue un bloque tool_use, valida su nombre y argumentos contra una lista permitida.
  3. Solicita autorización para acciones sensibles, aplica límites de tiempo y ejecuta con los privilegios mínimos.
  4. Devuelve el resultado como tool_result asociado al ID correcto.
  5. Reenvía el historial completo necesario y continúa hasta una respuesta final o un límite de iteraciones definido por tu aplicación.

La API propone una llamada; no ejecuta por sí sola una función local. Nunca conviertas argumentos generados en comandos de shell, consultas destructivas, pagos o escrituras de producción sin validación determinista y autorización explícita. Establece un máximo de pasos para evitar bucles.

Uso correcto de metadata.user_id

DeepSeek admite metadata.user_id con un máximo de 512 caracteres y los caracteres a-z, A-Z, 0-9, guion y guion bajo, según su guía de Rate Limit & Isolation. Usa un identificador seudónimo interno; no envíes correo, teléfono, nombre, dirección ni otro dato personal. Los demás campos de metadata se ignoran según la matriz publicada.

Errores, diagnóstico y reintentos

EstadoCausa documentada habitualRespuesta recomendada
400Formato incorrecto.Revisar cuerpo, Base URL, bloques y tipos; no repetir sin corregir.
401Autenticación fallida.Comprobar que la clave procede de DeepSeek y sigue activa.
402Saldo insuficiente.Revisar saldo y facturación en DeepSeek Platform.
422Parámetros inválidos.Comparar modelo y campos con la matriz vigente.
429Demasiadas solicitudes.Reducir concurrencia, poner en cola y esperar.
500 o 503Fallo temporal del servidor.Aplicar reintentos limitados con espera exponencial y aleatoria.

Registra un ID interno, estado HTTP, modelo, duración, stop_reason y uso, pero elimina la clave, el prompt sensible y los datos personales. Define un máximo de intentos y evita reintentar automáticamente un 400, 401 o 422 que requiere corrección. Consulta la guía de códigos de error de DeepSeek API y el estado oficial del servicio.

Seguridad, privacidad y coste

  • Envía solo el contexto necesario y elimina secretos antes de construir el mensaje.
  • Mantén la clave en el servidor o en un gestor de secretos; rota cualquier clave expuesta.
  • Valida la salida antes de mostrarla, ejecutarla o guardarla.
  • Separa los permisos de lectura, escritura, red y ejecución de herramientas.
  • Controla tokens de entrada, salida, thinking, caché y búsquedas para limitar el gasto.
  • No prometas retención cero, ausencia de entrenamiento o residencia en España si no está garantizado por las condiciones y el contrato aplicables.

El paquete de Anthropic es el cliente, pero la Base URL dirige el contenido a DeepSeek y el consumo se factura según las tarifas de DeepSeek API. Consulta las tarifas explicadas en español, confirma el precio vigente en la tabla oficial y revisa las condiciones de Open Platform y la política de privacidad antes de enviar datos de terceros.

Anthropic SDK, Claude Code o FIM: cuál elegir

OpciónÚsala cuandoNo la confundas con
Anthropic SDKTu aplicación ya utiliza el formato Messages o sus utilidades de streaming y tools.Paridad completa con la plataforma de Anthropic.
DeepSeek con Claude CodeNecesitas un agente de terminal que inspeccione un proyecto y coordine herramientas bajo permisos.Una integración respaldada por Anthropic para modelos no Claude.
FIM CompletionDebes completar un hueco exacto entre un prefijo y un sufijo.Messages o un agente que modifique archivos por sí solo.

Preguntas frecuentes

¿Necesito una clave de Anthropic?

No para este endpoint. Configura el SDK con una clave creada en DeepSeek Platform y la Base URL de DeepSeek. No mezcles credenciales de proveedores distintos.

¿Debo añadir /v1 a la Base URL?

No. Utiliza https://api.deepseek.com/anthropic. El SDK construye la ruta de Messages a partir de esa base.

¿Debo escribir deepseek-v4-pro[1m]?

No en una llamada directa con Anthropic SDK. Usa deepseek-v4-pro. [1m] es una convención documentada para determinadas configuraciones de Claude Code.

¿Puedo enviar imágenes o PDF?

Puedes enviar imágenes únicamente con deepseek-v4-flash-vision-exp: mediante base64, una URL HTTP/HTTPS o un file_id de Files API. El último método requiere anthropic-beta: files-api-2025-04-14. Flash y Pro no admiten entrada visual. Los bloques document, incluidos los PDF enviados como documento, no están admitidos.

¿Funciona cache_control?

El campo se ignora. DeepSeek utiliza una caché automática de prefijos en modo best effort; comprueba el uso devuelto en vez de asumir un acierto.

¿Puedo usar deepseek-chat o deepseek-reasoner?

No los utilices en una integración nueva. Están fuera del catálogo oficial actual y ya pasó la fecha de retirada anunciada, pero las fuentes vigentes no documentan su respuesta operativa de hoy. Usa deepseek-v4-flash, deepseek-v4-pro o deepseek-v4-flash-vision-exp.

Fuentes oficiales verificadas

Guías relacionadas: DeepSeek con Claude Code · FIM Completion · DeepSeek API en español · Precios de DeepSeek API.

Registro de actualización — 23 de agosto de 2026: se añadieron Pro-0813 y Vision Exp, se corrigió el soporte de imágenes y se actualizó el mapeo de razonamiento. No se realizó una prueba nueva.

Registro de actualización — 24 de agosto de 2026: se documentaron Files API, source.type=file y la excepción específica de anthropic-beta; también se matizó el estado operativo no verificado de los aliases antiguos. No se realizó una llamada API.