El acceso a APIs (Application Programming Interfaces o Interfaces de Programación de Aplicaciones) es una tarea muy común en proyectos de Ciencia de Datos, pues nos permite acceder a servicios externos bien sea para la recolección de datos, para el despliegue de modelos o para acceder por ejemplo a modelos pre-entrenados disponibles en la nube.
Y las API keys (o claves de una API) son una clave alfanumérica que nos permite autenticarnos al momento de solicitar acceso a un servicio. Sin embargo, en ocasiones podemos cometer errores al momento de escribir nuestro código y de manera no intencionada podemos exponer estas claves lo cual a su vez podría poner en riesgo la aplicación que estemos desarrollando.
Así que en este tutorial veremos cómo manejar adecuadamente las API Keys en Python en nuestros proyectos de Ciencia de Datos, haciendo uso de variables de entorno y librerías como «dotenv()» de Python.
Recuerda que este tutorial es exclusivo para suscriptores a la Academia Online. Si estás suscrito podrás acceder al enlace de descarga del código fuente y del set de datos al final del tutorial.
¿Qué es una API?
En términos generales, una API es un protocolo que permite la comunicación entre dos aplicaciones de software.
Un ejemplo sencillo de una API es cuando usamos la aplicación de nuestro teléfono móvil para saber el estado del clima:

En este proceso interactúan tres elementos:
- La app de nuestro teléfono móvil: esta aplicación se encarga de recolectar nuestra ubicación geográfica para determinar en qué ciudad nos encontramos. Pero por sí sola la aplicación no puede determinar la predicción del clima.
- El servicio meteorológico: es un servicio en la nube que recolecta y almacena la información sobre el clima de muchas ciudades del mundo.
- La API: es la interfaz entre la app de nuestro teléfono móvil y el servicio meteorológico. Así, cuando queremos averiguar el clima en nuestra ciudad, ingresamos a la aplicación y esta hará una solicitud (request) a la API indicándole nuestra ubicación geográfica. La API recibe esta solicitud y envía una nueva solicitud al servicio meteorológico, que a la vez responde a la API con la información sobre el clima en nuestra ciudad, que será luego enviado por la API a la app para que podamos conocer el estado del clima.
¿Para qué sirve una API?
En el contexto de un proyecto de Ciencia de Datos, el uso de APIs es muy común y puede estar presente en diferentes fases de desarrollo del proyecto. Por ejemplo, podemos usar una API para:
- Acceder a datos externos (recolectar datos del clima, conectarnos a una base de datos, descargar datos de un servicio en la nube, etc.)
- Acceder a modelos pre-entrenados o a servicios relacionados: por ejemplo, podemos hacer uso de modelos de Machine o Deep Learning disponibles en OpenAI, Google Cloud, Amazon o Hugging Face
- Permitir que nuestros modelos sean usados por terceros: si estamos desarrollando nuestros propios modelos podemos entrenarlos (localmente o en la nube) y ponerlos a disposición de otros usuarios a través de una API
¿Qué es una API key (o clave API)?
En esencia una API key es una secuencia de caracteres alfanuméricos que funcionan como una clave y que nos permite acceder a diferentes APIs asociadas a servicios en la nube.
Por ejemplo, para usar modelos pre-entrenados en la nube debemos ir al proveedor del servicio y solicitar precisamente una API key. Y algo similar debemos hacer si queremos acceder a fuentes de datos externas.
Y si desplegamos nuestro propio modelo, debemos fijar una clave API para evitar que usuarios no autorizados tengan acceso a nuestra aplicación.
El uso inadecuado de las API keys
Muy bien, teniendo claro qué son una API y una API key y los usos que pueden tener en un proyecto de Ciencia de Datos, en este punto ya podemos comenzar a ver lo que se debe y no se debe hacer al momento de incorporar claves API en nuestros proyectos.
Comencemos con lo que no se debe hacer. Supongamos que para un proyecto determinado haremos uso de Grandes Modelos de Lenguaje disponibles en la API de OpenAI.
El acceso a estos modelos generalmente es de pago y para poder hacerlo necesitamos precisamente una API. Supongamos que implementamos este sencillo prototipo para un Chatbot:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¿Qué pasa si queremos crear un repositorio Git?
Ahora bien, todo lo anterior funciona perfectamente en local. Pero, ¿qué pasa si queremos tomar nuestro código fuente y llevarlo a un repositorio Git online (por ejemplo en GitHub)?
En este caso debemos tener cuidado de no subir al repositorio el archivo .env, pues de lo contrario estaremos exponiendo nuestras API Keys.
Y esto es muy sencillo. Simplemente, debemos crear un archivo .gitignore en donde le indicaremos a Git que no seguiremos los cambios en el archivo .env. Es decir, que en nuestro repositorio local debemos crear ahora la siguiente estructura:
metodo2/
├─ .gitignore
├─ .env
├─ metodo2.py
Es decir, simplemente debemos añadir el archivo .gitignore a la carpeta de archivos creada inicialmente. Y dentro de este archivo simplemente incluimos la extensión .env para indicar a Git que no haremos seguimiento del archivo que contiene las API Keys:
# Archivo .gitignore
.env
¡Y listo! Con esto ya podremos sincronizar nuestro repositorio local con el repositorio online y no expondremos de manera inadvertida nuestras API Keys.
El código fuente de este tutorial
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Conclusión
Muy bien, en este tutorial acabamos de ver cómo manejar adecuadamente las API Keys en Python para evitar exponerlas de manera inadvertida.
En esencia existen dos alternativas: almacenar dichas API Keys como variables de entorno o usar la librería «dotenv» y un archivo «.env» para acceder de forma sencilla a dichas claves de acceso.
También es importante tener en cuenta que si usamos el segundo método y queremos sincronizar el código con un repositorio Git online, debemos añadir un archivo .gitignore para evitar exponer las API Keys de manera inadvertida.
Sea cual sea el método que usemos, lo importante es siempre cerciorarnos de que las claves de acceso están protegidas y de que nunca las expondremos en ningún repositorio online (sea de acceso público o restringido).
Recuerda que si eres suscriptor me puedes contactar a través de la Intranet (sección «Soporte») para aclarar las dudas que tengas de este tutorial.
