Ib qho ntawm qhov xwm txheej yog tsim lub tshuab kev kawm qauv. Nws yuav tsum siv tau nyob rau hauv lub ntiaj teb tiag tiag thiab muaj rau cov neeg siv khoom thiab cov tsim tawm.
Txoj hauv kev yooj yim tshaj plaws thiab nrov tshaj plaws los siv cov qauv kev kawm tshuab yog los kaw lawv hauv REST API.
Nrog lub tsev qiv ntawv nrov hu ua FastAPI, qhov ntawd yog qhov peb yuav ua tiav hnub no.
Tab sis, yog dab tsi FastAPI?
FastAPI Python web moj khaum tau tsim los ntawm hauv av mus ua kom zoo dua ntawm cov peev txheej niaj hnub Python.
Rau asynchronous, sib txuas lus nrog cov neeg siv khoom, nws ua raws li tus qauv ASGI, thaum nws tseem muaj peev xwm siv WSGI.
Endpoints thiab txoj hauv kev tuaj yeem siv cov haujlwm async. Tsis tas li ntawd, FastAPI ua rau muaj txiaj ntsig tsim cov vev xaib apps hauv hom-hinted, huv si, niaj hnub Python code.
FastAPI cov ntaub ntawv siv tseem ceeb yog, raws li lub npe qhia, tsim API qhov kawg.
Siv tus qauv OpenAPI, uas suav nrog kev sib tham sib Swagger UI, lossis muab Python phau ntawv txhais lus cov ntaub ntawv raws li JSON yog ob txoj hauv kev yooj yim kom ua tiav qhov no. Txawm li cas los xij, FastAPI tsis yog rau APIs nkaus xwb.
Nws tuaj yeem siv los muab cov nplooj ntawv web txheem siv lub tshuab Jinja2 template thiab ua haujlwm rau cov apps siv WebSockets, ntxiv rau txhua yam zoo nkauj npaum li cas lwm lub vev xaib tuaj yeem ua tau.
Hauv tsab xov xwm no, peb yuav tsim cov qauv kev kawm tshuab ncaj qha thiab tom qab ntawd siv FastAPI los siv nws. Cia peb pib.
Txhim kho FastAPI thiab tsim thawj API
Txhim kho lub tsev qiv ntawv thiab ASGI server yuav tsum ua ntej; Uvuicorn lossis Hypercorn yuav ua haujlwm. Nws ua haujlwm los ntawm kev nkag mus rau cov lus txib hauv qab no rau hauv Terminal:
Tam sim no uas API tau tsim, koj tuaj yeem siv koj tus lej code editor thiab xauj los ntawm nws. Tsim ib tsab ntawv Python hu ua ml_model.py los pib. Zoo siab txais tos koj los muab lub npe txawv, tab sis rau lub hom phiaj ntawm tsab xov xwm no, kuv yuav xa mus rau cov ntaub ntawv no li ml_model.py.
Txhawm rau tsim API ncaj qha nrog ob qhov kawg, koj yuav tsum ua tiav cov haujlwm hauv qab no:
- Ntshuam cov tsev qiv ntawv FastAPI thiab Uvicorn.
- Teeb tsa FastAPI chav kawm piv txwv.
- Tshaj tawm thawj txoj hauv kev, uas, ntawm nplooj ntawv ntsuas, tsim cov khoom ncaj nraim JSON.
- Tshaj tawm txoj kev thib ob, uas muab cov khoom JSON ncaj nraim nrog cov lus hloov kho. Lub npe parameter raug coj ncaj qha los ntawm URL (piv txwv li, https://127.0.0.1:8000/Jay).
- Siv Uvicorn los khiav API.
Ua raws li tsib theem no yog qhia nyob rau hauv cov nram qab no me ntsis code ie. tsim ib qho API yooj yim
Txhua yam ua tiav! Cia peb pib API tam sim ntawd. Qhib lub qhov rais Terminal ib sab ntawm cov ntaub ntawv ml model.py kom ua tiav qhov no. Tom ntej no, sau cov hauv qab no:
tus yuam sij Enter. Ua ntej txav mus, cia peb debunk qhov kev lees paub no. Thawj app ua rau siv Python cov ntaub ntawv npe ib leeg, tsis muaj qhov txuas ntxiv. Qhov thib ob app yuav tsum muaj tib lub npe raws li koj qhov piv txwv FastAPI.
Los ntawm kev siv -reload, koj qhia API tias koj xav kom nws rov pib dua thaum koj khaws cov ntaub ntawv es tsis yog pib ntawm kos.
Tam sim no tso lub browser thiab mus rau https://127.0.0.1:8000; qhov tshwm sim yuav tsum tshwm sim raws li nram no:
Tam sim no koj nkag siab yuav ua li cas los tsim API yooj yim siv FastAPI.
Tsim thiab cob qhia Machine Learning model
Tsis tau sau lossis txheeb xyuas cov ntaub ntawv, peb tsuas yog cob qhia tus qauv yooj yim. Cov no tsis cuam tshuam nrog kev xa tawm cov qauv thiab tsis yog qhov tseem ceeb rau lub ntsiab lus ntawm tes.
Ib tug qauv raws li Iris dataset tuaj yeem ntsia tau siv tib yam neural network txheej txheem installation.
Thiab peb yuav ua li ntawd: download tau Iris cov ntaub ntawv thiab cob qhia tus qauv. Qhov ntawd yuav tsis yooj yim. Txhawm rau pib, ua cov ntaub ntawv npe jaysmlmodel.py.
Hauv nws, koj yuav ua cov hauv qab no:
- Ntshuam - Koj yuav xav tau pandas, scikit-RandomForecastClassifier, kawm pydantic's BaseModel (koj yuav pom vim li cas hauv cov kauj ruam nram qab no), thiab joblib rau khaws cia thiab thauj cov qauv.
- Tshaj tawm cov chav kawm IrisSpecies uas tau txais los ntawm cov qauv hauv paus. Cov chav kawm no tsuas muaj cov teb uas xav tau los kwv yees ib hom paj xwb (ntxiv rau qhov ntawd hauv ntu tom ntej)
- Tsim ib chav kawm. IrisModel yog tus qauv kev cob qhia thiab kev twv ua ntej.
- Tshaj tawm ib txoj hauv kev hu ua _train qauv hauv IrisModel. Nws yog siv los cob qhia cov qauv siv cov txheej txheem Random Forests. Cov qauv kev cob qhia raug xa rov qab los ntawm tus txheej txheem.
- Tshaj tawm ib hom kev kwv yees ua haujlwm hauv IrisModel. Nws yog siv los kwv yees raws li 4 yam khoom nkag (paj ntsuas). Ob qhov kev kwv yees (paj hom) thiab qhov kev twv ua ntej yuav raug xa rov qab los ntawm algorithm.
- Hloov cov constructor hauv IrisModel kom nws thauj cov Iris dataset thiab cob qhia tus qauv yog tias nws ploj lawm ntawm daim nplaub tshev. Qhov no daws qhov teeb meem ntawm kev rov ua dua tshiab cov qauv. Lub tsev qiv ntawv joblib yog siv rau cov qauv thauj khoom thiab txuag.
Nov yog tag nrho cov cai:
Kuv vam tias cov npe saum toj no thiab cov lus pom tau ua kom yooj yim rau kev nkag siab txawm tias qhov no yog qhov loj ntawm cov lej los tsim. Tam sim no uas tus qauv no tau tsim, cia peb tshaj tawm nws cov peev xwm twv ua ntej dhau ib QIV API.
Tsim kom muaj REST API tag nrho
Rov qab mus rau ml_model.py cov ntaub ntawv thiab tshem tawm tag nrho cov ntaub ntawv. Lub boilerplate yuav zoo ib yam li koj muaj ua ntej, tab sis peb yuav tsum pib dua nrog ib daim ntawv dawb paug.
Koj tsuas yog txhais tau ib qho kawg ntawm lub sijhawm no, uas yog qhov siv los txiav txim siab hom paj. IrisModel.predict hom(), uas tau tshaj tawm nyob rau hauv nqe lus dhau los, raug hu los ntawm qhov kawg no kom ua tiav qhov kev twv ua ntej.
Hom kev thov yog lwm qhov kev hloov loj. Txhawm rau xa cov tsis nyob hauv JSON ntau dua li URL, nws raug nquahu kom koj siv POST thaum siv tshuab kev kawm APIs.
Cov kab lus saum toj no yuav tau suab zoo li gibberish yog tias koj yog ib tug cov ntaub ntawv tus kws tshawb fawb, tab sis yog lawm. Txhawm rau tsim thiab xa cov qauv, ib tus tsis tas yuav tsum yog tus kws tshaj lij ntawm HTTP thov thiab REST APIs.
Cov dej num rau ml model.py yog ob peb thiab ncaj nraim:
- Koj yuav tsum import cov hauv qab no los ntawm cov ntaub ntawv jaymlmodel.py uas tau tsim ua ntej: uvicorn, FastAPI, IrisModel, thiab IrisSpecies.
- Tsim cov piv txwv ntawm FastAPI thiab IrisModel.
- Tshaj tawm ib txoj haujlwm ntawm https://127.0.0.1:8000/predict ua kev twv ua ntej.
- Txoj kev IrisModel.predict species() tau txais ib yam khoom ntawm hom IrisSpecies, hloov nws mus rau phau ntawv txhais lus, thiab tom qab ntawd rov qab los. Kev xa rov qab yog cov chav kawm xav tau thiab kwv yees qhov tshwm sim.
- Siv uvicorn kom ua tiav API.
Tsis tau dua, ntawm no yog tag nrho cov ntaub ntawv tus lej ua ke nrog nws cov lus:
Qhov ntawd yog txhua yam koj yuav tsum ua. Hauv kauj ruam tom ntej, cia peb sim API.
Kev xeem API
Rov nkag cov kab hauv qab no rau hauv Terminal kom ua tiav API: uvicorn ml_model: app -reload
Nov yog li cas nplooj ntawv cov ntaub ntawv tshwm:
Yog li ntawd yog nws rau hnub no. Hauv ntu tom qab no, cia peb xaus.
xaus
Niaj hnub no, koj tau kawm tias FastAPI yog dab tsi thiab yuav siv nws li cas, siv ob qho piv txwv API yooj yim thiab piv txwv kev kawm tshuab yooj yim. Koj kuj tau kawm yuav ua li cas los tsim thiab saib cov ntaub ntawv API, nrog rau kev sim nws li cas.
Qhov ntawd yog ntau heev rau ib daim, yog li tsis txhob xav tsis thoob yog tias nws yuav siv ob peb nyeem kom nkag siab zoo.
Zoo siab coding.
Sau ntawv cia Ncua