Construir una aplicación que combine dos proveedores de inteligencia artificial en una sola interfaz es un paso que diferencia a quienes realmente entienden cómo funcionan estas APIs. Aquí se conecta todo lo aprendido sobre OpenAI y Anthropic para crear un chat con selector de modelos, memoria compartida y contexto fluido entre ambos proveedores.
¿Qué significa integrar dos APIs en un mismo proyecto?
Durante las primeras etapas del proyecto, "Otro GPT" ya funcionaba con OpenAI: conversaciones de ida y vuelta, memoria de texto, generación de imágenes y procesamiento de audio, todo desde el navegador [01:00]. En paralelo, se aprendió a conectar con Anthropic y sus modelos desde la terminal. Ahora ambos mundos se fusionan en la misma aplicación.
El usuario ve un selector de modelos en la interfaz que le permite elegir entre OpenAI y Anthropic [02:12]. La app responde con el modelo seleccionado, y gracias a que Anthropic utiliza su Message API, no hace falta configuración especial para mantener la memoria del chat.
¿Cuáles son los tres cambios clave en el código?
Para lograr esta integración se necesitan tres modificaciones fundamentales:
- Variable de entorno: se guarda el API key de Anthropic junto al de OpenAI en el archivo de configuración [01:30].
- Selector en la interfaz: en el archivo de página se agrega un elemento
select con dos opciones, Anthropic y OpenAI [01:50].
- Ruta de chat doble: la API del chat ahora maneja dos funciones separadas, una para cada proveedor [03:05].
¿Cómo funciona la ruta de chat con dos proveedores?
Dentro del archivo de la API de chat se crean dos funciones: una para chatear con OpenAI y otra para chatear con Anthropic [03:22]. Cada una utiliza su propia librería y endpoints.
Para OpenAI, se usa chat.completions con el modelo GPT-4o. El primer mensaje es el system prompt ("Eres Otro GPT, un asistente útil") seguido de todos los mensajes de la interfaz [03:40].
Para Anthropic, se utiliza el endpoint messages.create con el modelo Claude Sonnet 4. Un detalle importante: el parámetro max_tokens es requerido en la API de Anthropic, a diferencia de OpenAI [04:20]. Se pasan el system prompt y los mensajes del historial.
¿Cómo se mantiene el contexto entre modelos?
Este es el punto más valioso. Cuando el usuario cambia de proveedor a mitad de conversación, la función de Anthropic limpia los mensajes que no sean del asistente o del usuario para evitar errores de compatibilidad [03:55]. Esto permite que si alguien empieza hablando con OpenAI y luego cambia a Anthropic, la conversación siga siendo coherente.
En la demostración se comprueba así [05:10]:
- Se envía "hola" a OpenAI, que responde normalmente.
- Se cambia a Anthropic y se pregunta cuál es la capital de Francia.
- Se regresa a OpenAI y se pregunta "¿Y cuál es el color de su bandera?".
- OpenAI responde correctamente: azul, blanco y rojo.
El historial se comparte, el contexto se mantiene y la conversación es fluida sin importar cuántas veces se alterne entre proveedores.
¿Qué cambia en la interfaz al seleccionar Anthropic?
Cuando se elige Anthropic, las opciones de audio e imagen se ocultan automáticamente [05:00]. Como la integración de Anthropic solo cubre la API de mensajes de texto, no tiene sentido mostrar funcionalidades que solo soporta OpenAI. El selector de tabs para texto también desaparece, porque texto es el único modo disponible.
Este manejo condicional de la interfaz demuestra buenas prácticas de UX: mostrar al usuario solo lo que puede usar según el modelo activo.
El proyecto queda listo para expandirse. Tanto OpenAI como Anthropic tienen APIs adicionales que se pueden explorar en sus documentaciones oficiales. También se puede personalizar el system prompt para darle una identidad única al asistente y hacer el proyecto verdaderamente propio. ¿Qué personalidad le darías a tu versión de Otro GPT?