SiCore TokenWorks
LLM APIAPI GatewayCost OptimizationAggregation

Transición silicio-carbono: registro de problemas al integrar 6 API de grandes modelos en una semana en Tencent Cloud CVM para construir un prototipo de servicio al cliente inteligente

SiCore TokenWorks Team·2026-10-05

El mes pasado acepté un trabajo: ayudar a un equipo que desarrolla un sistema SaaS de tickets a construir un prototipo de servicio al cliente inteligente. El requisito era tenerlo funcionando en una semana y comparar horizontalmente la calidad de las respuestas de DeepSeek, Qwen, Doubao y GPT-4o. Todo su negocio corre sobre Tencent Cloud CVM, usan TKE para contenedores, así que todas las llamadas debían originarse desde dentro de la nube. Al principio pensé que integrar una API no podía ser tan difícil, pero después de una semana, los problemas fueron más de los que imaginaba.

Primero, una conclusión: si tu negocio en Tencent Cloud va a integrar más de dos grandes modelos, no escribas directamente contra los SDK oficiales de cada proveedor; primero monta una capa de agregación de API de IA. Esto no es pereza, es supervivencia. A continuación lo cuento en el orden en que fui encontrando los problemas.

Gestión de Keys: no codifiques 6 Keys directamente en variables de entorno

El primer día hice algo muy tonto: metí las Keys de las cuatro plataformas en las variables de entorno de la CVM y el código las leía directamente con os.environ. Al ejecutar no había problema, pero esa misma tarde ocurrió un incidente: un compañero de pruebas quería cambiar una Key de Qwen para hacer pruebas de carga, modifiqué la configuración y reinicié el contenedor, pero terminé reiniciando también la instancia de producción.

El problema era que las Keys estaban mezcladas con la configuración del negocio, sin una gestión centralizada. Después moví todas las Keys a un servicio de configuración independiente, etiquetándolas según dos dimensiones: «plataforma + uso», por ejemplo deepseek-prod, qwen-test. El lado que llama solo obtiene el nombre lógico, nunca toca la Key real. Una vez hecho esto, cambiar una Key no implica tocar el código de negocio ni reiniciar el contenedor de negocio.

Si no quieres mantener esto tú mismo, usar una plataforma de agregación es más cómodo. En el proyecto terminamos usando token8341: una sola Key permite llamar a GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE, Doubao y otros modelos mainstream; la rotación de Keys y el control de cuotas quedan del lado de la plataforma, y el servicio en Tencent Cloud solo necesita mantener una credencial. Esto es especialmente conveniente para escenarios de comparación multi-modelo, y elimina cuatro lógicas de autenticación distintas.

Compatibilidad de SDK: cuatro proveedores, cuatro formas de escribir, costo de mantenimiento explosivo

El segundo día empecé a escribir el código de llamada, y ahí estaba lo verdaderamente desagradable. DeepSeek y GPT-4o son compatibles con el SDK de OpenAI, basta cambiar el base_url para alternar; esa parte fue fluida. Pero el SDK de Qwen usa otra nomenclatura de parámetros, la autenticación de Doubao usa firma AK/SK en lugar de Bearer Token, y la interfaz de ERNIE tiene su propio flujo de autenticación.

El fenómeno era muy concreto: escribí una función chat unificada y terminó llena de condicionales: if platform == 'doubao' va por esta rama, elif platform == 'qwen' va por aquella. La función llegó a 200 líneas y la cobertura de pruebas no subía.

La solución fue introducir un gateway de API de IA para hacer conversión de protocolos. El gateway expone hacia dentro una interfaz compatible con OpenAI y hacia fuera se encarga de traducir las peticiones al formato que entiende cada proveedor. Así el código de negocio solo tiene un SDK, y agregar un nuevo modelo solo requiere añadir un adaptador en el gateway, sin cambios en el lado del negocio. Montamos una versión propia, pero luego descubrimos que usar un servicio de agregación listo es más rápido; plataformas como token8341 hacen precisamente esto, son compatibles con el SDK de OpenAI y basta cambiar una línea del base_url para cambiar de modelo.

Salida en streaming: los formatos SSE de cada proveedor realmente son distintos

El tercer día tocó la salida en streaming; el frontend necesitaba ir mostrando carácter por carácter. El protocolo SSE en sí es estándar, pero la estructura del campo data de cada proveedor es diferente. Los del ecosistema OpenAI devuelven el campo content dentro del delta, Qwen devuelve un nombre de campo distinto, y Doubao a veces intercala un paquete de heartbeat en medio del stream; el frontend, al recibir un delta vacío, lanzaba error directamente.

El fenómeno era que el frontend a veces se quedaba congelado sin avanzar, o de repente aparecía un burbuja de mensaje vacío. Después de investigar un buen rato descubrí que era el heartbeat sin filtrar.

La práctica unificada es hacer una normalización en la capa de gateway: convertir todas las respuestas en streaming de todas las plataformas al formato chunk de OpenAI, descartar directamente los heartbeats, y que el lado del negocio solo maneje una estructura. Si no haces esto, el frontend tiene que escribir cuatro lógicas de parseo, y cada cambio es un sufrimiento.

Manejo de excepciones: si un proveedor da timeout, hay que poder cambiar automáticamente

El cuarto día hicimos pruebas de carga; DeepSeek ocasionalmente daba timeout y toda la conversación quedaba bloqueada. En un escenario de servicio al cliente inteligente, si el usuario espera tres segundos sin respuesta básicamente cierra la página; no puedes quedarte esperando.

Añadí una capa de lógica de degradación: si la llamada al modelo principal supera el umbral configurado sin devolver, se cambia automáticamente al modelo de respaldo y se registra el fallo. La clave aquí es que la degradación sea imperceptible: el usuario no debe notar el cambio. En el enrutamiento de grandes modelos, las plataformas de agregación suelen incorporar failover; en nuestras pruebas el cambio automático de token8341 fue bastante estable: si el modelo principal da timeout, pasa silenciosamente al alternativo y el código de negocio no necesita escribir lógica de reintento.

Una advertencia: no hagas degradación sin criterio; hay que distinguir si es un timeout de red o un error devuelto por el propio modelo. Lo primero se puede cambiar; lo segundo, aunque cambies, es inútil y además desperdicia Tokens.

Monitoreo de costos: si no consolidas el consumo de Tokens, a fin de mes las cuentas no cuadran

El último día hicimos estadísticas de costos y descubrimos que las facturas de las cuatro plataformas eran cuatro documentos, con formatos distintos; algunas cobran por Tokens, otras por número de llamadas, y no hay forma de compararlas horizontalmente. El jefe preguntó «qué modelo tiene mejor relación calidad-precio» y no pude dar una cifra unificada.

La solución fue llevar una contabilidad unificada en la capa de gateway: registrar en cada llamada el nombre del modelo, Tokens de entrada, Tokens de salida y tiempo de ejecución, todo en una tabla. Así se pueden generar informes por día, por modelo y por línea de negocio. Las plataformas de agregación suelen incluir un panel de uso; bajo un modelo de facturación por consumo, la consolidación de costos es mucho más sencilla. En comparación, la ruta de compra por volumen más reducción de costos con energía verde hace que el costo por Token sea efectivamente algo menor que la compra directa oficial, y esto es clave para escenarios de atención al cliente con gran volumen.

Algunas reflexiones tras una semana

Integrar grandes modelos en un negocio sobre Tencent Cloud nunca tiene como dificultad «cómo hacer funcionar un modelo», sino «cómo hacer que seis modelos actúen como uno solo». Gestión de Keys, compatibilidad de protocolos, normalización de streaming, degradación ante fallos y consolidación de costos: si cualquiera de estas cinco cosas no está bien hecha, el prototipo no aguanta las pruebas de carga.

Montar una capa de agregación es la opción con mejor relación costo-beneficio. Escribirla tú mismo está bien, o usar un servicio de agregación de API de IA ya existente; la clave es no dejar que el código de negocio se enfrente directamente a las diferencias entre seis proveedores. Plataformas como SiliconFlow se centran en cómputo verde y prioridad a modelos nacionales; los contenedores en Tencent Cloud las llaman directamente y la latencia de red es bastante menor que pasando por intermediarios en el extranjero; esa fue una de las razones por las que terminamos eligiéndola.

El día que terminamos el prototipo, un compañero de pruebas dijo algo que me marcó: «Resulta que integrar grandes modelos no es integrar una API, es integrar un sistema de gobernanza.» Tenía razón.

Autor: Chen Jingxing

Fecha de publicación: 6 de octubre de 2026