Compatibilidad con el SDK de OpenAI
Anthropic proporciona una capa de compatibilidad que te permite usar el SDK de OpenAI para probar la Claude API. Con unos pocos cambios en el código, puedes evaluar rápidamente 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, necesitarás:
- Usar un SDK oficial de OpenAI
- Cambiar lo siguiente
- Actualiza tu URL base para que apunte a la Claude API
- Reemplaza tu clave de API por una clave de API de Claude
- Si tu clave es una clave personal o de cuenta de servicio con acceso a varios espacios 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 Claude
- Revisar las siguientes secciones para saber 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", # 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 la llamada de funciones se ignora, lo que significa que no se garantiza que el JSON de "tool use" (uso de herramientas) siga el esquema proporcionado. Para garantizar la conformidad con el esquema, usa la Claude API nativa con Structured Outputs. - La entrada de audio no es compatible; se ignorará y se eliminará 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 al principio de la conversación, ya que Anthropic solo admite un único mensaje de sistema inicial.
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 hecho muchos ajustes a tu prompt, es probable que esté bien afinado específicamente para OpenAI. Considera reelaborarlo 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 Anthropic, pero una diferencia notable es el manejo de los prompts de sistema / desarrollador. Con OpenAI, estos dos prompts pueden colocarse a lo largo de toda una conversación de chat. Dado que Anthropic solo admite un mensaje de sistema inicial, la API 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 una única "system prompt" (indicación del sistema) al inicio de los mensajes.
Compatibilidad con el pensamiento
Puedes habilitar el pensamiento agregando el parámetro thinking. En los modelos actuales, el pensamiento es adaptativo, y Claude decide cuándo y con qué profundidad pensar; 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 proceso de pensamiento detallado de Claude. Para obtener todas las funciones de pensamiento, incluido el acceso a la salida del razonamiento paso a paso de Claude, 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 | Totalmente compatible |
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. |
n | Debe ser exactamente 1 |
logprobs | Ignorado |
metadata | Ignorado |
response_format | Ignorado. Para salida JSON, usa Structured Outputs con la Claude API 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 | Ignorado. Usa Structured Outputs con la Claude API 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 de respuesta
| Campo | Estado de compatibilidad |
|---|---|
id | Totalmente compatible |
choices[] | Siempre tendrá 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 serán equivalentes. Usa los mensajes de error únicamente para registro y depuración.
Compatibilidad de encabezados
Aunque el SDK de OpenAI gestiona los encabezados automáticamente, esta es la lista completa de encabezados compatibles con la Claude API 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?