Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

546
Vistas
Cree API usando FastAPI para el modelo de clasificación producido usando pycaret

Estoy usando pycaret como mi flujo de trabajo de ML, traté de crear una API usando FastAPI. Esta es la primera vez que juego en el nivel de producción, por lo que estoy un poco confundido acerca de la API.

Tengo 10 características; age: float, live_province: str, live_city: str, live_area_big: str, live_area_small: str, sex: float, marital: float, bank: str, salario: float, cantidad: float y una etiqueta que contiene el valor binario (0 y 1).

Este es mi script para construir la API

 from pydantic import BaseModel import numpy as np from pycaret.classification import * import uvicorn from fastapi import FastAPI app = FastAPI() model = load_model('catboost_cm_creditable') class Data(BaseModel): age: float live_province: str live_city: str live_area_big: str live_area_small: str sex: float marital: float bank: str salary: float amount: float input_dict = Data @app.post("/predict") def predict(model, input_dict): predictions_df = predict_model(estimator=model, data=input_dict) predictions = predictions_df['Score'][0] return predictions

Cuando traté de ejecutar uvicorn script:app y fui a la documentación, no puedo encontrar el parámetro para mis funciones, los parámetros solo muestran el modelo y input_dict ingrese la descripción de la imagen aquí

¿Cómo llevar mis características a los parámetros en la API?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Debe escribir sugerencias en su modelo Pydantic para que funcione con su FastAPI

Imagine que realmente está trabajando con Python estándar, cuando necesita documentar esa función,

 def some_function(price: int) ->int: return price

Con Pydantic no hay nada diferente al ejemplo anterior.

class Data son en realidad una @dataclass de python con superpoderes (proviene de Pydantic)

 from fastapi import Depends class Data(BaseModel): age: float live_province: str live_city: str live_area_big: str live_area_small: str sex: float marital: float bank: str salary: float amount: float @app.post("/predict") def predict(data: Data = Depends()): predictions_df = predict_model(estimator=model, data=data) predictions = predictions_df["Score"][0] return predictions

Hay un pequeño truco, con Depends , obtendrá consultas únicas como cuando define cada campo por separado.

con depende

ingrese la descripción de la imagen aquí

Sin Depende

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Su problema es con la definición de la función de la API. Agregó un argumento para su entrada de datos pero no le dijo a FastAPI su tipo. También asumo que no quiere usar el modelo que ha cargado globalmente en lugar de recibirlo como parámetro. Además, no necesita crear una instancia global para sus datos de entrada, ya que desea obtenerlos del usuario.

Por lo tanto, simplemente cambie la firma de su función a:

 def predict(input_dict: Data):

y eliminar la línea:

 input_dict = Data

(Que solo crea un Alias para su clase Data , llamado input_dict )

Terminarás con:

 app = FastAPI() model = load_model('catboost_cm_creditable') class Data(BaseModel): age: float live_province: str live_city: str live_area_big: str live_area_small: str sex: float marital: float bank: str salary: float amount: float @app.post("/predict") def predict(input_dict: Data): predictions_df = predict_model(estimator=model, data=input_dict) predictions = predictions_df['Score'][0] return predictions

Además, recomendaría cambiar el nombre de la clase Data a algo más claro y fácil de entender, incluso DataUnit sería mejor en mi opinión, ya que Data es demasiado general.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda