La familia Claude de Anthropic es una de las líneas de modelos de código cerrado más capaces para codificación, agentes y razonamiento con contexto largo. El problema es el coste: Sonnet cuesta $3 / $15 por millón de tokens y Opus cuesta más. Puter.js cambia el modelo de facturación: expone modelos Claude como Opus 4.7, Sonnet 4.6 y Haiku 4.5 sin clave de Anthropic, y carga el uso al usuario final en lugar de al desarrollador.
En esta guía vas a implementar Claude en una app de navegador con Puter.js: instalación, selección de modelo, llamadas básicas, streaming, conversaciones multiturno, mensajes de sistema y criterios para decidir cuándo migrar a la API oficial de Anthropic.
TL;DR
- Puter.js permite usar Claude desde el navegador sin clave de API de Anthropic.
- El usuario final usa su propia cuenta de Puter; tú no gestionas facturación de Anthropic.
- Modelos compatibles mencionados: Opus 4.7, Opus 4.6, Opus 4.6 Fast, Opus 4.5, Opus 4.1, Opus 4, Sonnet 4.6, Sonnet 4.5, Sonnet 4, Haiku 4.5.
- La integración mínima requiere una etiqueta
<script>y una llamada aputer.ai.chat. - Soporta streaming, mensajes de sistema y conversaciones multiturno.
- Puedes usar Apidog para comparar el diseño de tus solicitudes cuando migres a la API oficial de Anthropic.
Cómo funciona el acceso gratuito para el desarrollador
Puter.js es una biblioteca de IA y nube sin servidor que se ejecuta en el navegador.
La diferencia clave está en la arquitectura:
- Tu aplicación carga Puter.js.
- El usuario inicia sesión en Puter.
- La llamada a Claude se ejecuta usando la cuenta del usuario.
- El consumo se carga al saldo del usuario en Puter.
- Tú no expones claves ni pagas la factura de Anthropic.
Esto implica:
- No hay claves de API en el frontend ni en el repositorio.
- No gestionas límites de uso por proyecto.
- No necesitas una cuenta de Anthropic para este flujo.
La contrapartida: Puter.js está pensado principalmente para aplicaciones de navegador. Si necesitas ejecutar Claude desde backend, workers, cron jobs o procesamiento por lotes, la API oficial de Anthropic suele ser la opción correcta.
Paso 1: Instala Puter.js
Para un prototipo o sitio estático, añade el script CDN:
<script src="https://js.puter.com/v2/"></script>
Ejemplo HTML mínimo:
<!DOCTYPE html>
<html lang="es">
<body>
<script src="https://js.puter.com/v2/"></script>
</body>
</html>
Si trabajas con una app empaquetada, puedes instalarlo con NPM:
npm install @heyputer/puter.js
E importarlo en tu código:
import { puter } from '@heyputer/puter.js';
Usa el CDN si quieres validar rápido la integración. Usa NPM si estás en una aplicación con Vite, Webpack o TypeScript.
Paso 2: Elige el modelo Claude
Puter expone varios modelos Claude usando IDs compatibles con la nomenclatura de Anthropic.
| ID de modelo | Cuándo usarlo |
|---|---|
claude-opus-4-7 |
Razonamiento profundo, revisión compleja de código, agentes avanzados |
claude-opus-4-6 |
Codificación robusta y tareas complejas |
claude-opus-4.6-fast |
Variante Opus con menor latencia |
claude-opus-4-5 |
Agentes de producción y razonamiento estable |
claude-opus-4-1 |
Modelo heredado estable |
claude-opus-4 |
Línea base de Opus 4 |
claude-sonnet-4-6 |
Modelo recomendado para uso diario |
claude-sonnet-4-5 |
Buen equilibrio para tareas generales |
claude-sonnet-4 |
Línea base de Sonnet 4 |
claude-haiku-4-5 |
Clasificación rápida, alto volumen, baja latencia |
Recomendación práctica:
- Usa
claude-sonnet-4-6por defecto. - Usa
claude-haiku-4-5para tareas rápidas y repetitivas. - Usa
claude-opus-4-7cuando la calidad de razonamiento sea más importante que la latencia.
Paso 3: Haz tu primera llamada a Claude
La llamada mínima usa puter.ai.chat.
<!DOCTYPE html>
<html lang="es">
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
puter.ai.chat(
"Explica la computación cuántica en términos simples",
{ model: "claude-sonnet-4-6" }
).then(response => {
puter.print(response.message.content[0].text);
});
</script>
</body>
</html>
Qué ocurre al abrir este archivo en el navegador:
- Se carga Puter.js.
- El usuario inicia sesión o crea una cuenta de Puter.
- Puter envía el prompt a Claude.
- La respuesta se renderiza en la página.
La respuesta sigue una estructura similar a la API de mensajes de Anthropic:
response.message.content[0].text
Para respuestas de texto simple, normalmente lees el primer bloque. Si esperas contenido multiparte, itera sobre response.message.content.
for (const block of response.message.content) {
if (block.type === "text") {
console.log(block.text);
}
}
Paso 4: Implementa streaming
Para respuestas largas, activa stream: true.
const response = await puter.ai.chat(
"Escribe un análisis detallado sobre el impacto de la inteligencia artificial en la sociedad",
{
model: "claude-sonnet-4-6",
stream: true
}
);
for await (const part of response) {
puter.print(part?.text);
}
En una interfaz de chat, el patrón típico es acumular los fragmentos en un contenedor:
<div id="output"></div>
<script>
async function run() {
const output = document.getElementById("output");
const stream = await puter.ai.chat(
"Resume los riesgos de seguridad más comunes en APIs REST",
{
model: "claude-sonnet-4-6",
stream: true
}
);
for await (const part of stream) {
if (part?.text) {
output.textContent += part.text;
}
}
}
run();
</script>
Esto mejora la percepción de velocidad porque el usuario ve la respuesta mientras se genera.
Paso 5: Crea conversaciones multiturno
Para mantener contexto, pasa un array de mensajes en lugar de un string.
const messages = [
{
role: "user",
content: "Estoy construyendo una app Next.js con Postgres."
},
{
role: "assistant",
content: "Entendido. ¿En qué parte necesitas ayuda?"
},
{
role: "user",
content: "¿Cómo debería estructurar la carpeta de migraciones?"
}
];
const response = await puter.ai.chat(messages, {
model: "claude-opus-4-7"
});
console.log(response.message.content[0].text);
Para una app real, guarda el historial en memoria o en estado de UI:
const messages = [];
async function sendMessage(userText) {
messages.push({
role: "user",
content: userText
});
const response = await puter.ai.chat(messages, {
model: "claude-sonnet-4-6"
});
const assistantText = response.message.content[0].text;
messages.push({
role: "assistant",
content: assistantText
});
return assistantText;
}
Claude leerá la transcripción completa enviada en cada llamada.
Paso 6: Usa mensajes de sistema
Los mensajes de sistema definen comportamiento, tono, restricciones y formato de salida.
const messages = [
{
role: "system",
content: "Eres un ingeniero backend senior. Responde en viñetas numeradas y con un máximo de cinco puntos."
},
{
role: "user",
content: "¿Cómo prevengo SQL injection en una app Node.js?"
}
];
const response = await puter.ai.chat(messages, {
model: "claude-sonnet-4-6"
});
console.log(response.message.content[0].text);
Úsalos para instrucciones persistentes como:
- idioma de respuesta;
- formato JSON;
- longitud máxima;
- rol técnico;
- estilo de explicación;
- restricciones de seguridad.
Ejemplo para salida JSON:
const messages = [
{
role: "system",
content: "Devuelve únicamente JSON válido. No incluyas Markdown."
},
{
role: "user",
content: "Extrae el nombre, email y empresa de este texto: Ana Pérez, ana@example.com, Acme Inc."
}
];
const response = await puter.ai.chat(messages, {
model: "claude-haiku-4-5"
});
const data = JSON.parse(response.message.content[0].text);
console.log(data);
Paso 7: Compara modelos con el mismo prompt
Antes de elegir un modelo para producción, ejecuta el mismo prompt contra varios modelos y mide latencia y calidad.
const models = [
"claude-haiku-4-5",
"claude-sonnet-4-6",
"claude-opus-4-7"
];
const prompt = "Refactoriza este componente React para usar hooks: ...";
for (const model of models) {
const start = performance.now();
const response = await puter.ai.chat(prompt, { model });
const elapsed = performance.now() - start;
console.log(`${model}: ${elapsed.toFixed(0)}ms`);
console.log(response.message.content[0].text);
console.log("---");
}
Evalúa cada salida con criterios concretos:
- ¿Compila?
- ¿Respeta las instrucciones?
- ¿Reduce complejidad?
- ¿Evita cambios innecesarios?
- ¿Responde suficientemente rápido para tu UX?
Como regla práctica:
-
claude-haiku-4-5: clasificación, extracción, respuestas cortas. -
claude-sonnet-4-6: tareas generales de desarrollo. -
claude-opus-4-7: problemas difíciles, razonamiento largo, revisiones complejas.
Para comparar el flujo de Puter con la API oficial de Anthropic en Apidog, mantén ambos proveedores como entornos separados y reutiliza prompts equivalentes.
Lo que obtienes y lo que no
Claude vía Puter.js es útil para apps de navegador, pero no sustituye todos los casos de uso de la API oficial.
Obtienes:
- acceso a modelos Claude desde el navegador;
- conversaciones multiturno;
- mensajes de sistema;
- streaming;
- integración sin clave de Anthropic en tu app;
- cero exposición directa a facturación para el desarrollador.
Puede que no obtengas, según la versión de Puter:
- uso avanzado de herramientas o function calling;
- entrada de visión con adjuntos de imagen;
- controles de caché de prompts de Anthropic;
- ejecución limpia desde backend;
- visibilidad directa de headers, cuotas o límites de Anthropic.
Para flujos avanzados de herramientas, la API oficial de Anthropic o las pruebas de servidor MCP en Apidog ofrecen más control.
Para un chatbot, una app de preguntas y respuestas, un generador de contenido o un prototipo público, Puter.js suele ser suficiente.
Cuándo usar Puter.js
Usa Puter.js cuando:
- estás construyendo una app de navegador;
- no quieres gestionar claves de Anthropic;
- estás prototipando;
- estás creando un proyecto de hackathon;
- quieres publicar una demo estática;
- tus usuarios pueden iniciar sesión en Puter;
- no necesitas procesamiento backend.
Ejemplos adecuados:
- chatbot embebido en una página;
- asistente para documentación;
- generador de snippets;
- clasificador de texto en frontend;
- demo interactiva de IA;
- extensión de navegador con interacción del usuario.
Cuándo usar la API oficial de Anthropic
Usa la API oficial cuando:
- necesitas llamadas desde servidor;
- ejecutas tareas programadas;
- haces procesamiento por lotes;
- necesitas caché de prompts;
- necesitas control completo de herramientas;
- necesitas adjuntar imágenes o archivos;
- tienes requisitos de cumplimiento;
- no quieres depender de login de Puter para tus usuarios.
Ejemplos:
- bot de Discord;
- pipeline de análisis de documentos;
- endpoint SaaS multiusuario;
- worker de cola;
- agente con herramientas internas;
- sistema con auditoría y control de facturación.
La migración conceptual es directa porque el formato de mensajes es similar: role, content y lista de turnos.
Para el equivalente de GPT, consulta Cómo usar la API de GPT-5.5.
Probando la integración en Apidog
Las llamadas de Puter ocurren en el navegador, así que no se prueban igual que un endpoint backend tradicional.
Un flujo práctico es:
- Crear una página estática que reciba el prompt por query string.
- Ejecutar Puter.js desde esa página.
- Usar Apidog para diseñar y validar la futura integración con Anthropic.
- Mantener dos entornos separados: prototipo con Puter y producción con Anthropic.
Configura dos entornos en Apidog:
-
puter-prototype: apunta a tu página local o demo estática. -
anthropic-prod: apunta ahttps://api.anthropic.com/v1.
Así puedes mantener el diseño de solicitudes, prompts y pruebas en una misma colección mientras decides cuándo migrar.
Preguntas frecuentes
¿Esto es realmente ilimitado?
Para el desarrollador, sí: no tienes una cuota de Anthropic asociada a tu proyecto. El uso depende del saldo de cada usuario en Puter.
¿Necesito registrarme en Anthropic?
No para el flujo con Puter.js. Puter gestiona la relación con Anthropic.
¿Puedo usar esto en producción?
Sí, si tu aplicación es de navegador y tus usuarios aceptan iniciar sesión en Puter. Si necesitas backend, usa la API oficial.
¿Claude vía Puter responde igual que la API oficial?
El modelo subyacente es Claude. Puede haber diferencias operativas como latencia o superficie de API disponible, pero el modelo no cambia por el hecho de llamarlo desde Puter.
¿Puedo usar caché de prompts?
Puter no expone necesariamente los controles de caché de prompts de Anthropic. Si dependes de esa optimización, usa la API oficial.
¿Puedo usarlo en un bot de Discord?
No es el caso ideal. Puter.js está orientado a navegador y sesión de usuario. Para bots y servicios backend, usa Anthropic directamente.
¿Qué modelo debería usar por defecto?
claude-sonnet-4-6. Cambia a claude-opus-4-7 para tareas difíciles y a claude-haiku-4-5 para tareas rápidas o de alto volumen.
Resumen
Puter.js es una forma rápida de añadir Claude a una aplicación de navegador sin gestionar claves de Anthropic ni asumir facturación directa como desarrollador.
El flujo mínimo es:
<script src="https://js.puter.com/v2/"></script>
const response = await puter.ai.chat("Tu prompt", {
model: "claude-sonnet-4-6"
});
console.log(response.message.content[0].text);
Úsalo para prototipos, demos, sitios estáticos, hackathons y apps públicas donde el usuario pueda iniciar sesión en Puter.
Para backend, caché de prompts, herramientas avanzadas o requisitos de cumplimiento, usa la API oficial de Anthropic.
Crea la solicitud una vez en Apidog, compara el flujo con Puter y la API oficial, y elige el camino que mejor encaje con tu arquitectura.

Top comments (0)