Skip to main content
Anthropic Claude es un sistema de conversación AI muy potente, que puede generar respuestas fluidas y naturales en cuestión de segundos al ingresar un mensaje. La API de Claude Messages es el formato nativo oficial de Anthropic, que, a diferencia del formato compatible con OpenAI (Chat Completion), utiliza su propia estructura de solicitud y respuesta, lo que permite aprovechar mejor las capacidades únicas de Claude, como la entrada de contenido multimodal, la llamada a herramientas, el pensamiento profundo (Extended Thinking) y otras características avanzadas. Este documento describe principalmente el proceso de uso de la API de Claude Messages, que nos permite utilizar una interfaz nativa consistente con la oficial de Anthropic para invocar las funciones de conversación de Claude.

Proceso de solicitud

Para usar la API de Claude Messages, primero dirígete a Ace Data Cloud Console para obtener tu token de API, que debes guardar para uso futuro. Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invitará a registrarte e iniciar sesión; una vez completado, volverás automáticamente a la página actual. Un token de API es suficiente para acceder a todos los servicios de la plataforma, sin necesidad de solicitar uno por cada servicio. La primera solicitud te otorgará un crédito gratuito para que puedas probarlo; si el crédito es insuficiente, puedes recargar el saldo general en la consola.
📘 Documentación completa: Claude Messages API →

Uso básico

La ruta de solicitud de la API de Claude Messages es /v1/messages, manteniendo la consistencia con la API oficial de Anthropic. Necesitamos proporcionar al menos tres parámetros obligatorios:
  • model: seleccionar el modelo de Claude a utilizar. El último modelo insignia es claude-fable-5-1 (contexto de 1 millón de tokens, salida máxima de 128K tokens); el modelo original claude-fable-5 sigue siendo compatible.
  • messages: un array de mensajes de entrada, donde cada mensaje incluye role (rol) y content (contenido), siendo role compatible con user y assistant.
  • max_tokens: número máximo de tokens de salida, utilizado para limitar la longitud de la respuesta única.
Parámetros opcionales comunes:
  • system: mensaje del sistema, utilizado para establecer el comportamiento y rol del modelo.
  • temperature: aleatoriedad de la generación, entre 0 y 1, donde un valor mayor produce respuestas más dispersas.
  • stream: si se utiliza respuesta en streaming, establecer en true permite un efecto de retorno palabra por palabra.
  • stop_sequences: secuencias de parada personalizadas, el modelo dejará de generar al encontrar estos textos.
  • top_p: parámetro de muestreo nuclear, que junto con la temperatura controla la aleatoriedad de la generación.
  • top_k: muestreo solo de las K opciones con mayor probabilidad.
  • tools: definición de herramientas, para permitir que el modelo llame a funciones externas.
  • tool_choice: controla cómo el modelo utiliza las herramientas proporcionadas.
  • cache_control: crea automáticamente un punto de caché en el último bloque de contenido que se puede almacenar en caché; también se puede escribir en bloques de contenido específicos.

Ejemplo de cURL

Ejemplo de Python

Después de la llamada, el resultado devuelto es el siguiente:
Descripción de los campos del resultado devuelto:
  • id: identificador único del mensaje actual.
  • type: siempre es message.
  • role: siempre es assistant.
  • content: array de contenido de respuesta, donde cada elemento incluye type (como text) y el contenido correspondiente.
  • model: nombre del modelo que procesó la solicitud.
  • stop_reason: razón de la detención. Los valores estables incluyen end_turn, max_tokens, stop_sequence, tool_use, pause_turn (puede devolver el contenido actual del assistant tal cual para continuar), refusal y model_context_window_exceeded.
  • stop_sequence: si se detuvo debido a una secuencia de parada personalizada, muestra el texto de la secuencia de parada coincidente.
  • stop_details: cuando stop_reason es refusal, puede incluir la categoría de rechazo y la explicación.
  • usage: estadísticas de uso de tokens. input_tokens son los tokens de entrada no almacenados en caché; cache_creation_input_tokens y cache_read_input_tokens son respectivamente los tokens de entrada para escritura y lectura en caché; output_tokens es el número de tokens de salida. La tarifa base oficial de lectura de caché para Fable 5.1 es de 0.25/milloˊndetokens,ylastarifasdeescrituraencacheˊpara5minutosy1horasonde0.25/millón de tokens, y las tarifas de escritura en caché para 5 minutos y 1 hora son de 12.50 y $20/millón de tokens respectivamente; los precios reales de la plataforma se calculan según los descuentos del paquete. Las respuestas no en streaming también pueden incluir el cost registrado por Ace Data Cloud.

Mensajes del sistema

La API de Claude Messages permite establecer mensajes del sistema a través del campo system, utilizado para definir el comportamiento, rol y contexto del modelo.

Ejemplo de Python

Al establecer el mensaje system, se puede controlar con precisión el rol y el comportamiento de Claude.

Respuesta en streaming

Esta interfaz también admite respuestas en streaming; al establecer el parámetro stream en true, se puede obtener un efecto de retorno paso a paso, lo que es muy adecuado para implementar la visualización palabra por palabra en una página web.

Ejemplo de Python

La respuesta en streaming se devuelve en formato de Eventos Enviados por el Servidor (SSE), cada línea precedida por event: y data:. Los tipos de eventos en streaming incluyen:
  • message_start: inicio del mensaje, que contiene la información básica del mensaje y el nombre del modelo.
  • content_block_start: inicio del bloque de contenido.
  • content_block_delta: actualización incremental del bloque de contenido, que contiene fragmentos de texto generados recientemente.
  • content_block_stop: fin del bloque de contenido.
  • message_delta: actualización incremental a nivel de mensaje, que incluye stop_reason e información final de usage.
  • message_stop: fin del mensaje.
El resultado de salida es el siguiente:
Como se puede ver, el evento content_block_delta en la respuesta en streaming contiene el contenido de texto generado paso a paso, y al concatenar todos los text_delta se puede obtener la respuesta completa.

Ejemplo de JavaScript

Diálogo de múltiples turnos

Si desea habilitar la función de diálogo de múltiples turnos, debe alternar los mensajes de los roles user y assistant en el array messages, incluyendo el historial de conversación anterior.

Ejemplo en Python

El resultado devuelto es el siguiente:
Al pasar el historial completo de la conversación en messages, Claude puede proporcionar respuestas precisas en función del contexto.

Modelo de pensamiento profundo

El pensamiento de Claude y el resumen del pensamiento son dos conceptos diferentes: el modelo puede realizar inferencias internas, pero la API no devolverá la cadena de pensamiento original. Cuando se necesita mostrar el proceso de razonamiento, la API devuelve un resumen procesado. El modelo actual sugiere usar pensamiento adaptativo y controlar la inversión total de razonamiento a través de output_config.effort:
El bloque de pensamiento en la respuesta tiene la forma:
  • display: "summarized" devuelve un resumen de pensamiento legible; no es la cadena de pensamiento original.
  • display: "omitted" devuelve thinking: "", pero aún conserva la signature opaca para soportar diálogos posteriores.
  • Los modelos Fable 5.1, Fable 5, Opus 5, Sonnet 5, Opus 4.8 y Opus 4.7 tienen un valor predeterminado de omitted para display; los modelos Opus 4.6, Sonnet 4.6 y anteriores que soportan pensamiento utilizan por defecto summarized.
  • Display solo afecta el contenido devuelto y la latencia en streaming, no cierra el razonamiento ni reduce la facturación de tokens de pensamiento.
  • Si el pensamiento se habilita por defecto y el valor predeterminado de display son dos cuestiones independientes. Opus 5 y Sonnet 5 habilitan por defecto el pensamiento adaptativo; Opus 4.8, 4.7 y 4.6 necesitan ser habilitados explícitamente.
  • budget_tokens solo se utiliza para modelos antiguos que aún soportan un presupuesto de pensamiento fijo. Los nuevos modelos deben usar thinking.type=adaptive y output_config.effort; el pensamiento de Fable 5.1 siempre está habilitado y no se puede desactivar explícitamente.
  • En diálogos de múltiples turnos y llamadas a herramientas, se debe devolver el bloque completo de pensamiento y la firma devueltos por el asistente sin modificaciones; no se debe modificar ni generar la firma por cuenta propia.
  • Algunas rutas de compatibilidad parcial no pueden manejar redacted_thinking sin pérdida o desactivar explícitamente el pensamiento, en cuyo caso se devolverá un error de parámetro y no se descartará silenciosamente ni se cambiará el significado de la solicitud.
En solicitudes en streaming, summarized generará thinking_delta; omitted no generará thinking_delta, solo conservará el ciclo de vida del bloque de pensamiento y signature_delta.

Modelo visual

Usar imágenes de URL

Ejemplo de cURL

Los formatos de imagen admitidos incluyen: image/jpeg, image/png, image/gif, image/webp.

Documentos y PDF

Los PDF utilizan bloques de contenido document, admitiendo fuentes estables en Base64 y URL. La fuente Base64 debe usar application/pdf:
La fuente de URL se escribe como {"type":"url","url":"https://example.com/report.pdf"}. document también admite text/plain y fuentes de content compuestas de bloques de texto/imágenes; los campos opcionales incluyen title, context y citations. La fuente file_id de la API de archivos es una función beta independiente y no está dentro del contrato estable de esta interfaz.

Caché de sugerencias

El cache_control de nivel superior colocará automáticamente el punto de caché en el último bloque que se puede almacenar en caché:
Cuando se necesita un control preciso de la ubicación, también se puede escribir el mismo cache_control en los bloques de contenido de texto, imagen, documento, uso de herramientas, resultado de herramientas o definiciones de herramientas. ttl admite 5m (predeterminado) y 1h; se debe determinar la escritura y el acierto de la caché a través de usage.cache_creation_input_tokens y usage.cache_read_input_tokens. Ejemplo de resultado devuelto:

Llamadas a herramientas (Tool Use)

La API de Messages de Claude admite de forma nativa la función de llamadas a herramientas, permitiendo que el modelo llame a herramientas/funciones predefinidas cuando sea necesario.

Ejemplo en Python

Cuando el modelo decide llamar a una herramienta, el content en el resultado devuelto incluirá un bloque de contenido de tipo tool_use:
Nota que stop_reason es tool_use, lo que indica que el modelo necesita llamar a una herramienta. Al recibir este resultado, debe ejecutar la función de la herramienta y devolver el resultado en forma de tool_result al modelo:
El modelo generará la respuesta final en lenguaje natural basada en los resultados devueltos por la herramienta.

Diferencias con la API de Chat Completion

Ace Data Cloud ofrece dos formatos de API de Claude, y las principales diferencias son las siguientes: El usage.input_tokens de la API de Messages solo representa la entrada no almacenada en caché, cache_read_input_tokens y cache_creation_input_tokens son contadores de facturación independientes; los tres se calcularán por separado según el precio correspondiente. Si su sistema ya está integrado con la API en formato OpenAI, puede usar la API de Chat Completion para una transición sin problemas. Si necesita utilizar todas las capacidades nativas de Claude, se recomienda usar la API de Messages.

Manejo de errores

Las respuestas de error de la interfaz pública utilizan el sobre de la plataforma Ace Data Cloud: error.code es un código de error estable, error.message es una descripción, y trace_id se utiliza para investigar la solicitud. Los estados HTTP comunes incluyen:
  • 400: Parámetros de solicitud o contenido del protocolo no válidos.
  • 401: Token de autorización no válido, faltante o expirado.
  • 403: Acceso prohibido, saldo insuficiente o cuota limitada.
  • 404: API o modelo no existe.
  • 413: Cuerpo de solicitud demasiado grande.
  • 429: Demasiadas solicitudes.
  • 500 / 503 / 504: Error del servicio, temporalmente no disponible o tiempo de procesamiento agotado.

Ejemplo de respuesta de error

Esta estructura de error es el contrato de tiempo de ejecución de Ace Data Cloud, no es equivalente al sobre de error oficial de Anthropic; maneje según el estado HTTP y error.code.

Conclusión

A través de este documento, ha aprendido cómo utilizar la API de Messages de Claude en formato nativo de Anthropic para invocar las funciones de conversación de Claude. La API de Messages admite funciones ricas como conversación básica, prompts del sistema, respuestas en flujo, conversaciones de múltiples turnos, pensamiento profundo, comprensión visual, PDF, almacenamiento en caché de prompts y llamadas a herramientas. Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de soporte técnico.