Cómo integrar Claude en tu producto con la API de Anthropic

By Carlos Montiel | Especialista en IA Empresarial
Publicado: 2026-07-28 | Por: Carlos Montiel | Lectura: ~5 minutos

Integrar un LLM en un producto real implica mucho más que una llamada a `messages.create` — autenticación, manejo de errores, streaming y control de costos son decisiones de arquitectura, no detalles de implementación.

La superficie completa: todo pasa por un solo endpoint

Toda la funcionalidad de la API de Claude — mensajes de texto, uso de herramientas, salidas estructuradas, visión, documentos — se expone a través de un único endpoint, `POST /v1/messages`. Las herramientas y restricciones de salida son características de esta llamada, no APIs separadas. Esto simplifica considerablemente la arquitectura de integración: no hay que orquestar múltiples servicios distintos para distintas capacidades.

import anthropic client = anthropic.Anthropic() # lee ANTHROPIC_API_KEY del entorno response = client.messages.create( model="claude-opus-4-8", max_tokens=1024, system="Eres el asistente de soporte técnico de Guatemalia.", messages=[{"role": "user", "content": "¿Cómo reinicio mi contraseña?"}], )

Streaming: no es opcional para respuestas largas

Para cualquier petición donde `max_tokens` supere aproximadamente 16,000 tokens, el streaming deja de ser una opción de experiencia de usuario y se vuelve una necesidad técnica — las peticiones sin streaming con salidas grandes corren riesgo de exceder los timeouts HTTP estándar. El SDK expone un helper de streaming con `get_final_message()` que acumula el mensaje completo aunque proceses el stream evento por evento:

with client.messages.stream( model="claude-opus-4-8", max_tokens=64000, messages=[{"role": "user", "content": "Genera el informe completo"}], ) as stream: for text in stream.text_stream: print(text, end="", flush=True) mensaje_final = stream.get_final_message() print(mensaje_final.usage.output_tokens)

En interfaces de chat, esto además es lo que permite que el usuario vea la respuesta aparecer progresivamente en vez de esperar en silencio hasta que el modelo termine de generar todo el texto.

Manejo de errores: usa las excepciones tipadas, no comparaciones de string

El SDK expone clases de excepción específicas por código de estado HTTP — `RateLimitError`, `AuthenticationError`, `NotFoundError`, `APIConnectionError` — y es un error común de integración capturar solo la excepción base genérica, perdiendo la distinción entre errores que vale la pena reintentar (429, errores de servidor 5xx, fallas de red) y errores que no (400, 404, credenciales inválidas).

try: response = client.messages.create() except anthropic.RateLimitError as e: retry_after = int(e.response.headers.get("retry-after", "60")) # reintentar después de retry_after segundos except anthropic.APIStatusError as e: if e.status_code >= 500: # reintentar con backoff exponencial pass else: # error de cliente, no reintentar — registrar y alertar pass except anthropic.APIConnectionError: # fallo de red antes de recibir respuesta pass

El SDK ya reintenta automáticamente errores 429 y 5xx con backoff exponencial (`max_retries`, por defecto 2) — solo necesitas lógica de reintento propia si requieres un comportamiento distinto al default.

Tool use: integrando Claude con la lógica de tu negocio

La mayoría de integraciones empresariales reales no son un chatbot aislado, sino Claude conectado a la lógica de negocio: consultar inventario, crear un ticket, calcular una cotización. Esto se hace declarando herramientas con esquema JSON y ejecutando un bucle que llama al modelo, detecta bloques `tool_use`, ejecuta la función correspondiente en tu backend, y devuelve el resultado como `tool_result` en el siguiente turno.

Para no escribir ese bucle manualmente, la API expone un "tool runner" (beta) que automatiza el ciclo completo — llamar, ejecutar, devolver resultado, repetir — sobre las herramientas que tú definas, con hooks por turno para intercepción, validación o aprobación humana antes de ejecutar una acción sensible.

Arquitectura de costos desde el diseño, no después

El costo efectivo de una integración de producción depende de decisiones que hay que tomar desde el diseño inicial, no ajustar después: qué modelo usar por tipo de tarea (reservar el modelo más capaz para los pasos que realmente lo requieren, usar un modelo más económico para clasificación o extracción simple), si el prompt de sistema y las herramientas son lo suficientemente estables para beneficiarse de prompt caching, y si hay volumen de procesamiento no sensible a latencia que se beneficie de la Batch API con 50% de descuento.

Contar tokens antes de enviar una petición grande (`client.messages.count_tokens`) permite estimar costo con precisión antes de comprometerse a un flujo de procesamiento masivo, en vez de descubrir el costo real después del hecho.

Salidas estructuradas para integración con sistemas downstream

Cuando la respuesta del modelo alimenta directamente otro sistema (un CRM, una base de datos, un servicio de facturación), depender de que el modelo "generalmente" produzca JSON válido es frágil. El parámetro `output_config.format` con un esquema JSON garantiza que la respuesta valide contra el esquema definido, eliminando la necesidad de parseo defensivo o reintentos por formato incorrecto:

response = client.messages.create( model="claude-opus-4-8", max_tokens=1024, messages=[{"role": "user", "content": "Extrae: Juan Pérez, factura #4821, monto Q1,250.00"}], output_config={ "format": { "type": "json_schema", "schema": { "type": "object", "properties": { "cliente": {"type": "string"}, "factura": {"type": "string"}, "monto": {"type": "number"}, }, "required": ["cliente", "factura", "monto"], "additionalProperties": False, }, } }, )

Esta garantía de esquema es lo que hace viable conectar Claude a sistemas que esperan datos estructurados sin capa adicional de validación defensiva entre el modelo y el sistema downstream.

Carlos Montiel
Arquitecto de Soluciones IA Empresarial
Especialista en LLMs, Agentes y Orquestación
guatemalia.com/#contacto · info@guatemalia.com

¿Necesitas implementar IA en tu empresa?

Carlos Montiel es arquitecto de soluciones IA empresarial. Implementa LLMs, Agentes, RAG y orquestadores en empresas de Guatemala y Latinoamérica. Contáctalo para una consultoría.

Contactar a Carlos Montiel

info@guatemalia.com