Bienvenid@ al repo de la clase de APIs de Python: de cero a ML por Humberto Acevedo
Aquí encontrarás todo lo que necesitas para convertirte en un máster de las APIs 💥
¿Dudas, comentarios o solo quieres saludar? ¡Estoy aquí para ayudarte! 👇
✉️ Email: emilio@milioe.com
- Clona este repo, corre este comando en tu terminal o da click en
<> Code
(botón verde), descargar el ZIP y abrir la carpeta en VSC.git clone https://github.com/milioe/Intro-APIs-Python-ML.git
- Abre VSC, lo puedes descagar desde acá. Dejo el link a un tutorial para correr python
- Instala las dependencias que vienen en
requirements.txt
con el siguiente comando:pip install -r requirements.txt
- ¡Corre los códigos!
- Slides de la sesión
- Documentación de API de Spotify
- Documentación INEGI
- Documentación OpenAI
- APIs para economistas
API de saludo personalizada
En este ejercicio, construimos una API sencilla con Flask que saluda de forma personalizada a los usuarios. Vamos a desglosar las partes clave:
Creamos nuestra aplicación con Flask.
from flask import Flask
app = Flask(__name__)
Creamos un endpoint que recibe solicitudes POST.
@app.route('/saludo', methods=['POST'])
def saludo():
...
Extraemos el nombre enviado por el cliente en formato JSON y asignamos un valor predeterminado si no se proporciona.
data = request.get_json()
nombre = data.get("nombre", "invitado")
Devolvemos un saludo en formato JSON al cliente.
return jsonify({"mensaje": f"Hola, {nombre}!"})
Iniciamos la aplicación para probar la API localmente.
if __name__ == '__main__':
app.run(debug=True)
Puedes probar el endpoint enviando una solicitud POST con un JSON al endpoint http://127.0.0.1:5000/saludo
.
Ejemplo:
{
"nombre": "Carlos"
}
Esto devolverá algo como:
{
"mensaje": "Hola, Carlos!"
}
API de suma de números
En este ejercicio, construimos una API con Flask que realiza la suma de dos números proporcionados por el usuario. Desglosamos las partes clave a continuación:
Creamos nuestra aplicación con Flask.
from flask import Flask
app = Flask(__name__)
Creamos un endpoint que recibe solicitudes POST para realizar la suma.
@app.route('/suma', methods=['POST'])
def suma():
...
Extraemos los números enviados por el cliente en formato JSON.
data = request.get_json()
num1 = data.get("num1")
num2 = data.get("num2")
Convertimos los valores a flotantes (para permitir decimales) y realizamos la operación de suma.
resultado = float(num1) + float(num2)
Devolvemos el resultado de la suma en formato JSON.
return jsonify({"resultado": resultado})
Iniciamos la aplicación para probar la API localmente.
if __name__ == '__main__':
app.run(debug=True)
Puedes probar el endpoint enviando una solicitud POST con un JSON al endpoint http://127.0.0.1:5000/suma
.
Ejemplo:
{
"num1": 5,
"num2": 3.2
}
Esto devolverá algo como:
{
"resultado": 8.2
}
API de operaciones matemáticas (diferentes endpoints)
Esta API, construida con Flask, realiza operaciones básicas como suma, resta, multiplicación y división. Cada operación tiene su propio endpoint y maneja casos de errores como datos inválidos o división entre cero.
- Se define un endpoint para cada operación:
/suma
,/resta
,/multiplicacion
y/division
. - La API recibe dos números en formato JSON como entrada.
- Realiza la operación solicitada y devuelve el resultado en formato JSON.
- Si hay un error (como datos no válidos o división entre cero), devuelve un mensaje de error con el código HTTP correspondiente.
Entrada (JSON):
{
"num1": 10,
"num2": 5
}
Salida esperada para /suma
:
{
"resultado": 15
}
API de predicción con modelo de Machine Learning
Esta API utiliza Flask para exponer un modelo de regresión lineal previamente entrenado y guardado en un archivo .pkl
. Permite realizar predicciones basadas en los datos enviados por el usuario.
- Carga del modelo:
El modelo de regresión lineal se carga desde un archivo serializado (modelo_regresion_lineal.pkl
) usando la libreríapickle
.
with open("Misc/modelo_regresion_lineal.pkl", "rb") as f:
model = pickle.load(f)
- Definición del endpoint
/predecir
:
Este endpoint acepta solicitudes POST, recibe datos en formato JSON y los convierte a un DataFrame para realizar predicciones.
@app.route('/predecir', methods=['POST'])
def predecir():
...
- Flujo de predicción:
- Los datos enviados se convierten en un DataFrame.
- El modelo hace la predicción usando los datos procesados.
- El resultado de la predicción se devuelve como respuesta JSON.
- Si los datos enviados no pueden procesarse correctamente, la API devuelve un error 400 con un mensaje descriptivo.
- Si ocurre un error al realizar la predicción, la API devuelve un error 500 con detalles del problema.
Entrada (JSON):
{
"feature1": 1.2,
"feature2": 3.4,
"feature3": 5.6
}
Salida esperada:
{
"prediccion": 42.7
}
Si hay un error en los datos:
{
"error": "Error al procesar los datos: ..."
}
Esta API es una base poderosa para integrar modelos de Machine Learning en aplicaciones reales. 🚀
Mientras creaba los contenidos de esta sesión escuchaba este EP