Usa Claude.ai / Cowork cuando el trabajo es manual, puntual, tú y tu equipo.
Usa el SDK cuando:
Las respuestas del formulario de hoy son exactamente este tipo de problema.
python -m venv .venv && source .venv/bin/activate — aísla las dependencias del proyecto del resto del sistema.pip install anthropic dentro del entorno. Sin dependencias pesadas.ANTHROPIC_API_KEY como variable de entorno. El cliente la lee automáticamente al instanciarlo — no hay que pasarla en el código.Consigue tu key gratuita en console.anthropic.com — incluye créditos para empezar.
| Modelo | ID | Velocidad | Cuándo usarlo |
|---|---|---|---|
| Haiku 4 | claude-haiku-4-5-... |
Clasificación, resúmenes, volumen alto | |
| Sonnet 4 | claude-sonnet-4-6 |
La mayoría de casos — empieza aquí | |
| Opus 4 | claude-opus-4-8 |
Razonamiento complejo, análisis profundo | |
| Fable 5 | claude-fable-5 |
Tareas agenticas largas, coding avanzado, computer use |
Regla práctica: Haiku para volumen y velocidad, Sonnet para la mayoría de casos, Fable 5 para agentes autónomos de larga duración.
Se llama a client.messages.create() con tres parámetros clave:
claude-haiku-4-5 para empezar.role: "user" con tu pregunta.La respuesta llega en response.content[0].text — exactamente el mismo texto que verías en Claude.ai, pero ahora dentro de tu código.
Cada llamada es sin estado — la memoria eres tú: añade las respuestas anteriores al array
messages.
Claude conectado a tus datos reales
Sin Tool Use: Claude responde con conocimiento genérico.
Con Tool Use: Claude responde con tus datos reales.
Claude decide cuándo llamar la herramienta. Tú defines qué hace.
Una herramienta es un diccionario con tres campos:
"buscar_usuario".tool_use: "quiero llamar buscar_usuario("María")"tool_result
tool_usees Claude pidiendo ejecutar algo.tool_resulteres tú devolviendo el dato. Siempre en el arraymessages.
El bucle que todo lo une
stop_reason == "end_turn": Claude considera que tiene suficiente información y ha generado una respuesta completa — no necesita llamar a ninguna tool más. Sale del loop y mostramos el texto al usuario. El otro valor posible es "tool_use": Claude quiere datos antes de responder.stop_reason == "tool_use": recorre los bloques de la respuesta, ejecuta cada tool con tus datos reales y recoge los resultados.tool_result en el historial y vuelve al paso 2 — Claude decide si necesita más tools o puede responder.Se definen dos herramientas que Claude puede invocar:
Las descripciones guían a Claude para encadenar las tools en el orden correcto sin instrucciones explícitas.
El historial es la memoria del agente — cada turno Claude ve todo el contexto anterior.
usuario_id.
ejecutar_tool
Una sola función recibe el nombre de la tool y sus parámetros, y delega a la lógica correspondiente. En producción aquí iría la consulta SQL o la llamada a tu API.
Si Claude solicita un usuario que no existe, la función devuelve {"error": "Usuario no encontrado"} — Claude recibe ese mensaje y puede adaptar su respuesta al usuario final.
Claude coordinó dos llamadas, combinó los resultados y generó una respuesta contextualizada — todo automático.
Tools:
obtener_curriculum(materia)
generar_pregunta(tema, nivel)
Objetivo: agente que genera una batería de preguntas para un tema concreto, adaptadas al nivel del alumno
Tools:
buscar_usuario(nombre)
actualizar_plan(usuario_id, cambios)
Objetivo: agente que recibe una solicitud de cambio y actualiza el plan automáticamente
Tools:
buscar_pedido(numero)
escalar_ticket(pedido_id, motivo)
Objetivo: agente que responde preguntas con datos reales del pedido y escala si no puede resolver
Entregable: define las 2 tools de tu caso (nombre, descripción, parámetros) y el system prompt.
Tres partes a personalizar — el loop del agente no cambia:
Ha sido un placer aprender juntos
¿Nos dejas tu feedback?
