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:
- Usar un SDK oficial de OpenAI.
- Cambiar lo siguiente:
- Actualiza tu URL base para que apunte a la API de Claude.
- Reemplaza tu clave de API por una clave de API de Claude de la Claude Console.
- Si tu clave es una clave personal o de cuenta de servicio que no está limitada a un espacio de trabajo, envía también el encabezado
anthropic-workspace-iden cada solicitud (por ejemplo,default_headersen el SDK de Python odefaultHeadersen TypeScript); consulta Seleccionar un espacio de trabajo. - Actualiza el nombre de tu modelo para usar un modelo de Claude.
- 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
strictpara "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
systemde 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
| Campo | Estado de compatibilidad |
|---|---|
model | Usa nombres de modelos Claude |
max_tokens | Totalmente compatible |
max_completion_tokens | Totalmente compatible |
stream | Totalmente compatible |
stream_options | Totalmente compatible |
top_p | Se 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_calls | Totalmente compatible |
stop | Todas las secuencias de parada que no sean espacios en blanco funcionan |
temperature | Entre 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. |
n | Debe ser exactamente 1 |
logprobs | Ignorado |
metadata | Ignorado |
response_format | Se ignora. Para obtener una salida JSON, usa salidas estructuradas con la API de Claude nativa. |
prediction | Ignorado |
presence_penalty | Ignorado |
frequency_penalty | Ignorado |
seed | Ignorado |
service_tier | Ignorado |
audio | Ignorado |
logit_bias | Ignorado |
store | Ignorado |
user | Ignorado |
modalities | Ignorado |
top_logprobs | Ignorado |
reasoning_effort | Ignorado |
Campos tools / functions
Campos tools[n].function
| Campo | Estado de compatibilidad |
|---|---|
name | Totalmente compatible |
description | Totalmente compatible |
parameters | Totalmente compatible |
strict | Se ignora. Usa salidas estructuradas con la API de Claude nativa para una validación estricta del esquema. |
Campos functions[n]
| Campo | Estado de compatibilidad |
|---|---|
name | Totalmente compatible |
description | Totalmente compatible |
parameters | Totalmente compatible |
strict | Se ignora. Usa salidas estructuradas con la API de Claude nativa para una validación estricta del esquema. |
Campos del array messages
Campos para messages[n].role == "developer"
| Campo | Estado de compatibilidad |
|---|---|
content | Totalmente compatible, pero elevado |
name | Ignorado |
Campos para messages[n].role == "system"
| Campo | Estado de compatibilidad |
|---|---|
content | Totalmente compatible, pero elevado |
name | Ignorado |
Campos para messages[n].role == "user"
| Campo | Variante | Subcampo | Estado de compatibilidad |
|---|---|---|---|
content | string | Totalmente compatible | |
array, type == "text" | Totalmente compatible | ||
array, type == "image_url" | url | Totalmente compatible | |
detail | Ignorado | ||
array, type == "input_audio" | Ignorado | ||
array, type == "file" | Ignorado | ||
name | Ignorado |
Campos para messages[n].role == "assistant"
| Campo | Variante | Estado de compatibilidad |
|---|---|---|
content | string | Totalmente compatible |
array, type == "text" | Totalmente compatible | |
array, type == "refusal" | Ignorado | |
tool_calls | Totalmente compatible | |
function_call | Totalmente compatible | |
audio | Ignorado | |
refusal | Ignorado |
Campos para messages[n].role == "tool"
| Campo | Variante | Estado de compatibilidad |
|---|---|---|
content | string | Totalmente compatible |
array, type == "text" | Totalmente compatible | |
tool_call_id | Totalmente compatible | |
tool_choice | Compatible. Los valores "required" y de función con nombre fuerzan una llamada a herramienta; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 y Claude Mythos 5.1 no admiten el uso forzado de herramientas y devuelven un error, así que usa "auto" en esos modelos. Consulta Forzar el uso de herramientas. | |
name | Ignorado |
Campos para messages[n].role == "function"
| Campo | Variante | Estado de compatibilidad |
|---|---|---|
content | string | Totalmente compatible |
array, type == "text" | Totalmente compatible | |
tool_choice | Compatible. Los valores "required" y de función con nombre fuerzan una llamada a herramienta; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 y Claude Mythos 5.1 no admiten el uso forzado de herramientas y devuelven un error, así que usa "auto" en esos modelos. Consulta Forzar el uso de herramientas. | |
name | Ignorado |
Campos de respuesta
| Campo | Estado de compatibilidad |
|---|---|
id | Totalmente compatible |
choices[] | Siempre tiene una longitud de 1 |
choices[].finish_reason | Totalmente compatible |
choices[].index | Totalmente compatible |
choices[].message.role | Totalmente compatible |
choices[].message.content | Totalmente compatible |
choices[].message.tool_calls | Totalmente compatible |
object | Totalmente compatible |
created | Totalmente compatible |
model | Totalmente compatible |
finish_reason | Totalmente compatible |
content | Totalmente compatible |
usage.completion_tokens | Totalmente compatible |
usage.prompt_tokens | Totalmente compatible |
usage.total_tokens | Totalmente compatible |
usage.completion_tokens_details | Siempre vacío |
usage.prompt_tokens_details | Siempre vacío |
choices[].message.refusal | Siempre vacío |
choices[].message.audio | Siempre vacío |
logprobs | Siempre vacío |
service_tier | Siempre vacío |
system_fingerprint | Siempre 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.
| Encabezado | Estado de compatibilidad |
|---|---|
x-ratelimit-limit-requests | Totalmente compatible |
x-ratelimit-limit-tokens | Totalmente compatible |
x-ratelimit-remaining-requests | Totalmente compatible |
x-ratelimit-remaining-tokens | Totalmente compatible |
x-ratelimit-reset-requests | Totalmente compatible |
x-ratelimit-reset-tokens | Totalmente compatible |
retry-after | Totalmente compatible |
request-id | Totalmente compatible |
openai-version | Siempre 2020-10-01 |
authorization | Totalmente compatible |
openai-processing-ms | Siempre vacío |
Was this page helpful?