«Desplegar un modelo de ChatGPT en la nube» suele usarse para describir dos cosas distintas. En esta guía se despliega una aplicación propia en AWS, Microsoft Azure o Google Cloud y esa aplicación llama a la API de OpenAI. El modelo no se copia dentro de una máquina virtual ni se instala en la cuenta del cliente. ChatGPT es un producto de OpenAI; para integrar capacidades de modelos en software, el término preciso es API de OpenAI.
El objetivo es una arquitectura de referencia segura, no una plantilla «lista para producción». Cada organización debe revisar residencia y transferencia de datos, identidad, amenazas, disponibilidad, presupuesto y requisitos legales. Las configuraciones exactas, nombres de servicios y límites de los proveedores cambian; confirma su documentación antes del despliegue.
Arquitectura recomendada
La ruta básica es cliente → API propia → servicio de cómputo → API de OpenAI. El cliente puede ser una web, una aplicación móvil o una herramienta interna. La clave de OpenAI permanece en el backend y se obtiene desde un gestor de secretos. Un gateway autentica, limita solicitudes y rechaza cuerpos excesivos antes de consumir recursos.
- Frontend: nunca contiene
OPENAI_API_KEYni llama directamente con una clave secreta. - Gateway o balanceador: termina TLS, valida identidad y aplica cuotas.
- Contenedor o función: minimiza datos, llama a OpenAI y normaliza errores.
- Cola opcional: desacopla tareas largas y permite controlar concurrencia.
- Base de datos opcional: conserva solo el estado que la aplicación necesita, con borrado definido.
- Monitorización: recoge latencia, errores y uso agregado sin duplicar contenido sensible.
El ejemplo usa una interacción de una sola vuelta y no envía un historial. Esto simplifica el control de datos y la idempotencia. Si la aplicación necesita memoria, debe almacenarla explícitamente, seleccionar solo el contexto relevante y explicar la duración al usuario. No es necesario enviar cada mensaje anterior en todas las peticiones.
Implementación Python común a las tres nubes
Este núcleo puede ejecutarse en un contenedor o adaptarse al formato de una función. Requiere openai y fastapi; un servidor ASGI como Uvicorn expone el endpoint. La identidad real debe proceder del sistema de autenticación del proveedor o de la aplicación, no de un campo que cualquiera pueda falsificar.
import hashlib
import hmac
import os
from fastapi import FastAPI, Header, HTTPException
from openai import OpenAI
from pydantic import BaseModel, Field
app = FastAPI()
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
timeout=20.0,
max_retries=2,
)
class GenerateRequest(BaseModel):
prompt: str = Field(min_length=1, max_length=4_000)
def private_safety_id(user_id: str) -> str:
key = os.environ["SAFETY_ID_SECRET"].encode("utf-8")
value = hmac.new(key, user_id.encode("utf-8"), hashlib.sha256)
return "usr_" + value.hexdigest()
@app.post("/v1/generate")
def generate(
data: GenerateRequest,
x_verified_user_id: str | None = Header(default=None),
):
# En producción, el gateway debe crear este dato tras autenticar al usuario
# y debe impedir que el cliente sobrescriba el encabezado.
if not x_verified_user_id:
raise HTTPException(status_code=401, detail="No autorizado")
response = client.responses.create(
model="gpt-5.6-terra",
instructions=(
"Responde en español neutral, separa hechos de supuestos y "
"reconoce cuando no dispongas de información suficiente."
),
input=data.prompt,
max_output_tokens=600,
store=False,
safety_identifier=private_safety_id(x_verified_user_id),
)
if not response.output_text:
raise HTTPException(status_code=502, detail="Respuesta no disponible")
return {"answer": response.output_text}
gpt-5.6-terra ofrece un punto de partida equilibrado dentro de la familia GPT‑5.6; no es una elección automática para todos los productos. Compara calidad, latencia y consumo con evaluaciones propias. Los alias y la disponibilidad pueden cambiar. El parámetro max_output_tokens limita la salida de cada llamada, mientras que el máximo de 4.000 caracteres limita la entrada en esta aplicación. Ninguno sustituye los límites de frecuencia, concurrencia o gasto del proyecto.
Opción AWS
Para tráfico irregular puede usarse API Gateway con AWS Lambda. Para un servicio HTTP de mayor duración o con requisitos de contenedor, son alternativas ECS/Fargate o App Runner. Guarda la clave en Secrets Manager, cifra con KMS según la política de la organización y concede a la función acceso únicamente al secreto y recursos que necesita. CloudWatch permite métricas y alarmas, pero hay que desactivar o redactar el registro de cuerpos y encabezados sensibles.
- Configura un autorizer o autenticación equivalente en el gateway.
- Elimina cualquier
x-verified-user-idaportado por Internet y genera uno tras validar el token. - Define tiempo máximo, memoria, concurrencia reservada y tamaño de petición.
- Si usas una cola, asigna un identificador de trabajo y evita ejecutar dos veces una acción con efecto.
- Entrega el secreto en ejecución; no lo incluyas en la imagen del contenedor o en el archivo de infraestructura.
Lambda puede reintentar algunos eventos asíncronos. Una petición HTTP también puede repetirse desde el cliente o un proxy. Mantén una tabla de idempotencia para trabajos, correos, actualizaciones o cobros. La consulta al modelo no se vuelve idempotente por estar dentro de Lambda y dos invocaciones pueden generar dos consumos.
Opción Microsoft Azure
Azure Functions encaja en cargas por eventos; Azure Container Apps o App Service ofrecen otras opciones para el mismo backend. Coloca la clave en Key Vault y usa una identidad administrada para obtenerla, con el mínimo alcance. Application Insights y Azure Monitor ayudan a observar el servicio, pero la captura automática de solicitudes, excepciones y variables debe configurarse para no almacenar prompts, respuestas ni credenciales.
Esta guía describe llamadas al servicio de OpenAI. Azure OpenAI es una oferta diferente operada dentro del ecosistema de Microsoft y tiene endpoints, despliegues de modelos, disponibilidad, controles y contratos propios. No cambies solo la URL del ejemplo dando por hecho que ambas interfaces y políticas son idénticas; sigue la documentación de la oferta que realmente contrates.
- Protege el endpoint mediante Entra ID, API Management u otra capa adecuada.
- Restringe quién puede leer el secreto y audita esa operación.
- Separa suscripciones, grupos de recursos o identidades entre pruebas y producción.
- Configura escalado máximo para que un pico no se convierta en gasto sin control.
- Comprueba la política de red, salida y DNS que permita llamar al endpoint oficial necesario.
Opción Google Cloud
Cloud Run es adecuado para el contenedor FastAPI y permite controlar instancias máximas, concurrencia y tiempo de espera. Cloud Functions puede ser suficiente para una función pequeña. Almacena la clave en Secret Manager y permite que solo la cuenta de servicio de la aplicación lea la versión requerida. Cloud Logging y Cloud Monitoring deben registrar metadatos operativos, no el cuerpo completo.
- Exige autenticación en Cloud Run o coloca un gateway que la aplique.
- Usa cuentas de servicio distintas por entorno y evita roles amplios de editor.
- Limita instancias máximas y crea alertas de uso y presupuesto.
- Si Pub/Sub entrega tareas, considera que puede haber redelivery y diseña idempotencia.
- Revisa las reglas de salida y los requisitos de conectividad antes de restringir la red.
Privacidad: lo que store:false hace y lo que no hace
En la ruta compatible de Responses, store=False evita el almacenamiento predeterminado del objeto de respuesta como estado de aplicación recuperable. No es una promesa de retención cero. Según la documentación de OpenAI, los registros de supervisión de abuso pueden contener prompts, respuestas y metadatos y, por defecto, conservarse hasta 30 días, salvo obligaciones legales o necesidades de protección del servicio y terceros. Zero Data Retention es un control separado que exige elegibilidad y aprobación, y no todas las funciones o endpoints son compatibles.
La API de OpenAI no usa los datos enviados para entrenamiento por defecto, salvo adhesión voluntaria de la organización. Aun así, la aplicación debe informar qué envía, con qué finalidad, durante cuánto tiempo guarda sus propias copias y qué subencargados intervienen. AWS, Azure o Google Cloud pueden generar registros independientes. Las herramientas conectadas, archivos, cachés y proveedores externos pueden tener plazos distintos.
Fiabilidad, errores y control de coste
Configura tiempos máximos en cada tramo y deja margen entre ellos: el cliente debería esperar menos que el proxy que cancela la función, y la llamada a OpenAI debe tener un máximo explícito. El SDK oficial admite reintentos limitados y tiene en cuenta Retry-After para fallos elegibles. No apiles reintentos ilimitados en gateway, plataforma, SDK y cliente. Usa espera exponencial con variación aleatoria cuando implementes una capa propia.
- No reintentes automáticamente una solicitud inválida o una credencial rechazada.
- Inspecciona los errores 429: pueden señalar frecuencia, cuota, crédito o límite de gasto.
- Devuelve al usuario un mensaje seguro y conserva el detalle técnico solo en un registro restringido.
- Mide peticiones, errores, latencia y uso agregado por modelo, entorno y función.
- Crea alertas de presupuesto y un interruptor para desactivar temporalmente la función.
- Establece cuotas por cuenta y protección frente a automatización abusiva.
El consumo depende de la entrada, la salida, el modelo, el razonamiento y el volumen. No prometas un importe fijo sin medir tu tráfico. Ejecuta pruebas de carga moderadas y evaluaciones de calidad antes de ampliar concurrencia. Un modelo más capaz no siempre reduce el coste total si la aplicación envía contexto innecesario o reintenta de forma defectuosa.
Seguridad y gobernanza
Trata la salida del modelo como datos no confiables. Escápala antes de insertarla en HTML, valida cualquier estructura y no ejecutes comandos, consultas o enlaces generados sin controles. Si el modelo puede usar herramientas, cada herramienta debe comprobar autorización y parámetros. La instrucción «no hagas X» no reemplaza una regla de servidor.
- Minimiza datos personales y redacta campos innecesarios antes de la llamada.
- Usa
safety_identifierseudónimo y estable, nunca un correo en claro. - Considera la Moderation API y controles específicos para entradas públicas.
- Exige revisión humana para decisiones sensibles o acciones irreversibles.
- Rota claves, revoca las expuestas y prueba el procedimiento de incidente.
- Evalúa inyección de prompts, fuga de datos, respuestas incompletas y cambios de modelo.
Criterios para elegir proveedor
Elige AWS, Azure o Google Cloud por la experiencia del equipo, identidad existente, requisitos de red, regiones disponibles, controles de cumplimiento y operación, no por la idea de que una nube hace que la salida del modelo sea automáticamente más exacta. La calidad de la respuesta depende del modelo, las instrucciones, el contexto y las evaluaciones. La disponibilidad extremo a extremo depende de la aplicación, el proveedor de nube, la red y OpenAI.
Checklist de puesta en producción
- La clave está en el gestor de secretos y no aparece en frontend, imagen, repositorio o logs.
- La API propia exige identidad y aplica límites por usuario y globales.
- Entrada y salida tienen máximos; también existen topes de concurrencia y gasto.
- Los reintentos son limitados y las acciones tienen una clave de idempotencia interna.
- La política de privacidad refleja OpenAI y el proveedor de nube, con plazos reales.
- Los logs omiten contenido, cookies, tokens, claves y datos personales.
- Las alarmas cubren errores, latencia, consumo, presupuesto y picos anómalos.
- Se probó la revocación de credenciales y la degradación cuando OpenAI no está disponible.
- Las evaluaciones incluyen casos normales, adversarios, refusals y límite de salida.
- Un responsable humano aprueba cambios de modelo, instrucciones y permisos de herramientas.
Fuentes oficiales
- Quickstart de la API de OpenAI.
- Guía de modelos actuales.
- Buenas prácticas para producción.
- Datos y retención en la plataforma API.
- Seguridad para desarrolladores.
- Códigos de error, límites de frecuencia y límites de gasto.
- Seguridad de claves API.
- AWS: uso de Secrets Manager con Lambda.
- Microsoft: secretos y Key Vault en Azure Container Apps.
- Google Cloud: secretos de Secret Manager en Cloud Run.
Revisión editorial: 3 de agosto de 2026. Las herramientas de IA se utilizaron como apoyo para estructurar y comprobar este contenido; una persona verificó la redacción, el ejemplo y las fuentes oficiales. chatgpt-gratis.chat es independiente y no es una aplicación oficial de OpenAI ni ChatGPT. El servicio del sitio utiliza actualmente la API de OpenAI, pero el proveedor, los modelos y los límites pueden cambiar.
Serverless, automatización cloud y Kubernetes: controles operativos
Elegir AWS, Azure o Google Cloud resuelve dónde ejecutar el backend, pero no cómo controlar duplicados, acciones propuestas por el modelo, trabajos largos o contenedores. Estos controles deben añadirse después de la arquitectura básica.
El modelo propone; la aplicación autoriza
Con function calling, una llamada sugerida no equivale a una orden autorizada. Define herramientas pequeñas y específicas, valida sus argumentos con una lista permitida y calcula el impacto fuera del modelo. Una operación de escritura, reinicio o interrupción debe exigir aprobación o una regla determinista. No expongas una función genérica como run_shell(command) con acceso a producción.
- Serverless: reserva un identificador de operación de forma atómica antes de producir efectos. Una función puede ejecutarse más de una vez por un timeout, retry o reentrega.
- Trabajos largos: usa background mode cuando corresponda y devuelve un identificador en vez de mantener una conexión indefinida.
- Webhooks: verifica la firma, responde rápidamente y procesa cada evento de forma idempotente, siguiendo la guía oficial.
- Degradación: ante límites o indisponibilidad, conserva el trabajo en cola o deriva a revisión; no relajes permisos ni inventes un resultado.
Contenedores y Kubernetes
Construye imágenes reproducibles mediante dependencias fijadas y etapas separadas. No pases claves mediante ARG o ENV durante el build; Docker documenta mecanismos específicos para secretos de construcción. En Kubernetes, ejecuta el contenedor sin privilegios y define recursos, sondas locales y políticas de salida.
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
capabilities:
drop: ["ALL"]
Un Kubernetes Secret no garantiza confidencialidad por sí solo: aplica cifrado en reposo, RBAC mínimo y, cuando proceda, un almacén externo. Consulta las buenas prácticas para Secrets y la documentación del Security Context.
Observabilidad sin copiar conversaciones
Registra identificador técnico, versión de imagen, modelo, versión del prompt, herramienta propuesta, decisión del validador, latencia, consumo agregado y código de error. Evita guardar prompts, respuestas, cookies, claves o identificadores de seguridad sin una finalidad aprobada. Repite evaluaciones normales y adversariales al cambiar modelo, herramienta, permisos o esquema.

