Claude Platform Docs
SDKs, CLI y bibliotecasBibliotecas e integraciones

Compatibilidad con el SDK de OpenAI

Anthropic proporciona una capa de compatibilidad que te permite usar el SDK de OpenAI para probar la API de Claude. Con unos pocos cambios en el código, puedes evaluar las capacidades de los modelos de Anthropic.

Primeros pasos con el SDK de OpenAI

Para usar la función de compatibilidad con el SDK de OpenAI, necesitas:

  1. Usar un SDK oficial de OpenAI.
  2. Cambiar lo siguiente:
  3. Revisa las siguientes secciones para ver qué funciones son compatibles.

Ejemplo de inicio rápido

import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("ANTHROPIC_API_KEY"),  # Your Claude API key
    base_url="https://api.anthropic.com/v1/",  # the Claude API endpoint
)

response = client.chat.completions.create(
    model="claude-opus-5-5",  # Claude model name
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"},
    ],
)

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

Limitaciones importantes de compatibilidad con OpenAI

Comportamiento de la API

Estas son las diferencias más sustanciales con respecto al uso de OpenAI:

  • El parámetro strict para "function calling" (llamada a funciones) se ignora, lo que significa que no se garantiza que el JSON de uso de herramientas siga el esquema proporcionado. Para garantizar la conformidad con el esquema, usa la API de Claude nativa con salidas estructuradas.
  • La entrada de audio no es compatible; se ignora y se elimina de la entrada.
  • El almacenamiento en caché de prompts no es compatible, pero sí lo es en los SDK de Anthropic.
  • Los mensajes de sistema/desarrollador se elevan y se concatenan en el campo system de nivel superior, sin importar dónde aparezcan en la conversación. Para agregar instrucciones del sistema a mitad de una conversación, usa mensajes del sistema a mitad de la conversación en la Claude API nativa.

La mayoría de los campos no compatibles se ignoran silenciosamente en lugar de producir errores. Todos ellos están documentados en las siguientes secciones.

Consideraciones sobre la calidad de la salida

Si has ajustado tu prompt extensamente, es probable que esté bien adaptado específicamente a OpenAI. Considera reformularlo para Claude usando la guía de mejores prácticas de prompting.

Elevación de mensajes de sistema / desarrollador

La mayoría de las entradas del SDK de OpenAI se corresponden claramente de forma directa con los parámetros de la API de Claude, pero una diferencia distintiva es el manejo de los prompts de sistema / desarrollador. Estos dos prompts pueden colocarse a lo largo de una conversación de chat en la API de OpenAI. La capa de compatibilidad toma todos los mensajes de sistema/desarrollador y los concatena con un único salto de línea (\n) entre ellos. Esta cadena completa se proporciona luego como el campo system de nivel superior, antes de todos los mensajes.

Compatibilidad con el pensamiento

Puedes habilitar el pensamiento agregando el parámetro thinking. En los modelos actuales, el pensamiento es adaptativo: Claude determina cuándo y con qué profundidad pensar, y en los modelos Claude 5 está activado de forma predeterminada; el "extended thinking" (pensamiento extendido) configurado manualmente es un modo heredado. Aunque el pensamiento mejora el razonamiento de Claude en tareas complejas, el SDK de OpenAI no devuelve el pensamiento de Claude. Para obtener todas las funciones de pensamiento, incluido el pensamiento resumido, usa la Claude API nativa.

response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Who are you?"}],
    extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)

Límites de velocidad

Los "rate limits" (límites de velocidad) siguen los límites estándar de Anthropic para el endpoint /v1/messages.

Compatibilidad detallada con la API compatible con OpenAI

Campos de solicitud

Campos simples

CampoEstado de compatibilidad
modelUsa nombres de modelos Claude
max_tokensTotalmente compatible
max_completion_tokensTotalmente compatible
streamTotalmente compatible
stream_optionsTotalmente compatible
top_pSe pasa al modelo. Los modelos Claude 4.7 y posteriores y Claude Mythos Preview devuelven un error 400 para cualquier valor distinto de 0.99, el predeterminado, así que omítelo. Una solicitud que establece tanto temperature como top_p también devuelve un error 400. Consulta Trabajar con mensajes.
parallel_tool_callsTotalmente compatible
stopTodas las secuencias de parada que no sean espacios en blanco funcionan
temperatureEntre 0 y 1 (inclusive). Los valores mayores que 1 se limitan a 1. En los modelos Claude 4.7 y posteriores y Claude Mythos Preview, cualquier valor inferior a 1 devuelve un error 400, así que omítelo. Consulta Trabajar con mensajes.
nDebe ser exactamente 1
logprobsIgnorado
metadataIgnorado
response_formatSe ignora. Para obtener una salida JSON, usa salidas estructuradas con la API de Claude nativa.
predictionIgnorado
presence_penaltyIgnorado
frequency_penaltyIgnorado
seedIgnorado
service_tierIgnorado
audioIgnorado
logit_biasIgnorado
storeIgnorado
userIgnorado
modalitiesIgnorado
top_logprobsIgnorado
reasoning_effortIgnorado

Campos tools / functions

Campos del array messages

Campos de respuesta

CampoEstado de compatibilidad
idTotalmente compatible
choices[]Siempre tiene una longitud de 1
choices[].finish_reasonTotalmente compatible
choices[].indexTotalmente compatible
choices[].message.roleTotalmente compatible
choices[].message.contentTotalmente compatible
choices[].message.tool_callsTotalmente compatible
objectTotalmente compatible
createdTotalmente compatible
modelTotalmente compatible
finish_reasonTotalmente compatible
contentTotalmente compatible
usage.completion_tokensTotalmente compatible
usage.prompt_tokensTotalmente compatible
usage.total_tokensTotalmente compatible
usage.completion_tokens_detailsSiempre vacío
usage.prompt_tokens_detailsSiempre vacío
choices[].message.refusalSiempre vacío
choices[].message.audioSiempre vacío
logprobsSiempre vacío
service_tierSiempre vacío
system_fingerprintSiempre vacío

Compatibilidad de mensajes de error

La capa de compatibilidad mantiene formatos de error coherentes con la API de OpenAI. Sin embargo, los mensajes de error detallados no son equivalentes. Usa los mensajes de error solo para registro y depuración.

Compatibilidad de encabezados

Aunque el SDK de OpenAI gestiona automáticamente los encabezados, esta es la lista completa de encabezados compatibles con la API de Claude para los desarrolladores que necesiten trabajar con ellos directamente.

EncabezadoEstado de compatibilidad
x-ratelimit-limit-requestsTotalmente compatible
x-ratelimit-limit-tokensTotalmente compatible
x-ratelimit-remaining-requestsTotalmente compatible
x-ratelimit-remaining-tokensTotalmente compatible
x-ratelimit-reset-requestsTotalmente compatible
x-ratelimit-reset-tokensTotalmente compatible
retry-afterTotalmente compatible
request-idTotalmente compatible
openai-versionSiempre 2020-10-01
authorizationTotalmente compatible
openai-processing-msSiempre vacío

Was this page helpful?