Ko tetahi ahuatanga o te ahuatanga ko te hanga tauira ako miihini. Me whakamahi i roto i te ao tuuturu me te waatea ki nga kaihoko me nga kaihanga.
Ko te huarahi ngawari me te tino rongonui ki te whakatakoto tauira ako miihini ko te whakauru ki roto i te REST API.
Ma te whare pukapuka rongonui e kiia nei ko FastAPI, koinei tonu ta tatou e tutuki ai i tenei ra.
Engari, he aha FastAPI?
Ko te anga tukutuku FastAPI Python i hangaia mai i te whenua ki runga ki te whakamahi i nga kaha Python o naianei.
Mo te tukutahi, te whakawhitiwhiti korero me nga kaihoko, ka piri ki te paerewa ASGI, i te mea ka taea e ia te whakamahi i te WSGI.
Ka taea e nga waahi mutunga me nga huarahi te whakamahi i nga mahi async. I tua atu, ka taea e FastAPI te hanga hua o nga taupānga paetukutuku i roto i te momo tohu, ma, waehere Python hou.
Ko te take whakamahi matua a FastAPI, ko ta te ingoa e kii ana, ko te hanga tohu mutunga API.
Ma te whakamahi i te paerewa OpenAPI, kei roto ko te Swagger UI tauwhitiwhiti, te whakarato ranei i nga raraunga papakupu Python i te mea ko JSON nga huarahi ngawari e rua hei whakatutuki i tenei. Heoi, ehara a FastAPI mo nga API anake.
Ka taea te whakamahi ki te tuku wharangi paetukutuku paerewa ma te whakamahi i te miihini tauira a Jinja2 me te mahi i nga tono ma te whakamahi i nga WebSockets, hei taapiri atu ki nga mea katoa ka taea e te anga tukutuku.
I roto i tenei tuhinga, ka hangaia e matou he tauira ako miihini ngawari ka whakamahi i te FastAPI ki te tuku. Kia timata tatou.
Te whakaurunga o FastAPI me te hanga i te API tuatahi
Ko te whakauru i te whare pukapuka me te tūmau ASGI me matua hiahia; ka mahi a Uvuicorn, Hypercorn ranei. Ka mahi ma te whakauru i te whakahau e whai ake nei ki te Terminal:
Inaianei kua hangaia te API, ka taea e koe te whakamahi i to etita waehere pai ka tirotirohia. Waihangatia he tuhinga Python ko ml_model.py hei timata. E pai ana koe ki te tuku ingoa rereke ki a koe, engari mo tenei panui, ka kiia e ahau tenei konae ko ml_model.py.
Hei waihanga i tetahi API ngawari me nga pito mutunga e rua, me whakaoti e koe nga mahi e whai ake nei:
- Kawemai i nga whare pukapuka FastAPI me Uvicorn.
- Whakaritea he tauira akomanga FastAPI.
- Whakaatuhia te ara tuatahi, kei te wharangi taurangi, ka puta he ahanoa JSON tika.
- Whakapuakihia te ara tuarua, e whakarato ana i te ahanoa JSON tika me te karere kua whakaritea. Ko te tawhā ingoa ka tangohia tika mai i te URL (hei tauira, https://127.0.0.1:8000/Jay).
- Whakamahia a Uvicorn hei whakahaere i te API.
Ko te whakatinanatanga o enei wahanga e rima ka whakaatuhia i roto i te moka o te waehere e whai ake nei. te hanga i tetahi API ngawari
Kua oti katoa! Me whakarewa tonu to tatou API. Whakatuwheratia he matapihi Terminal i te taha o te kōnae ml model.py hei whakatutuki i tenei. Whai muri, whakauruhia nga mea e whai ake nei:
te tomo matua. I mua i te neke haere, me whakakore i tenei whakapae. Ko te taupānga tuatahi ka whakamahi i te ingoa konae Python anake, kaore he toronga. Me rite te ingoa o te taupānga tuarua ki to tauira FastAPI.
Ma te whakamahi -reload, ka korero koe ki te API e hiahia ana koe kia utaina aunoa ina tiakina e koe te konae, kaua ki te timata mai i te wahanga.
Inaianei whakarewahia he kaitirotiro me te whakatere ki https://127.0.0.1:8000; me puta te putanga e whai ake nei:
Kua mohio koe inaianei me pehea te hanga API ngawari ma te whakamahi i te FastAPI.
Te hanga me te whakangungu i te tauira Ako Miihini
Ki te kore e kohikohi, ki te wetewete i nga raraunga, ka whakangungu noa matou i tetahi tauira ngawari. Kaore enei e pa ana ki te whakatakotoranga o nga tauira, a, kaore he mea nui ki te kaupapa kei a koe.
He tauira i runga i te huingararaunga Iris ka taea te whakauru ma te whakamahi i te taua te whatunga taiao tikanga whakauru.
A ka mahi noa tatou: tango i te Iris dataset me te whakangungu i te tauira. Ehara i te mea ngawari. Hei timata, hanga he konae ko jaysmlmodel.py te ingoa.
I roto, ka mahi koe i nga mea e whai ake nei:
- Kawemai — Ka hiahia koe ki nga pandas, scikit-RandomForecastClassifier, ako i te Pidantic's BaseModel (ka kitea e koe he aha i te taahiraa e whai ake nei), me te joblib mo te rokiroki me te uta tauira.
- Whakapuakina he karaehe IrisSpecies ka riro mai i te tauira taketake. Kei roto i tenei karaehe nga mara e tika ana hei matapae mo te momo puawai kotahi (he maha atu mo tera kei te waahanga e whai ake nei)
- Waihangahia he akomanga. He tauira whakangungu me te taputapu matapae a IrisModel.
- Whakaatuhia he tikanga ko _train model i roto i IrisModel. Ka whakamahia ki te whakangungu tauira ma te whakamahi i te tikanga Random Forests. Ko te tauira kua whakangungua ka whakahokia mai e te tikanga.
- Whakaatuhia he mahinga momo matapae i roto IrisModel. Ka whakamahia ki te matapae i runga i nga waahanga whakauru e 4 (nga inenga puawai). Ko te matapae (momo putiputi) me te tupono matapae ka whakahokia mai e te algorithm.
- Hurihia te kaihanga i IrisModel kia utaina te huingararaunga Iris me te whakangungu i te tauira mena kei te ngaro i te kōpaki. Ma tenei ka whakatau i te raru o te whakangungu i nga tauira hou. Ka whakamahia te whare pukapuka joblib mo te uta tauira me te penapena.
Anei te waehere katoa:
Ko taku tumanako ko te rarangi o runga ake nei me nga korero i ngawari ki te kapo ahakoa he nui te nui o te waehere hei hanga. Inaianei kua whakawhanakehia tenei tauira, me whakaputa e tatou ona kaha matapae i runga i te a API REST.
Te hanga i te API REST katoa
Hoki ki te kōnae ml_model.py ka purea nga raraunga katoa. Ka rite tonu te pereti kohu ki to mua, engari me timata ano me te konae kore.
Ka tautuhia e koe tetahi pito mutunga i tenei wa, koinei te mea hei whakatau i te momo puawai. IrisModel.predict species(), i whakapuakihia i te waahanga o mua, ka karangahia e tenei pito ki te whakatutuki i te matapae.
Ko te momo tono tetahi atu huringa nui. Hei tuku i nga tawhā ki JSON, kaua ki te URL, e taunaki ana kia whakamahi koe i te POST i te wa e whakamahi ana akoranga mīhini APIHANA.
Ko te rerenga korero o runga ake nei he ahua porangi noa mena he he koe kaiputaiao raraunga, engari kei te pai. Hei hoahoa me te tuku tauira, kaore e tika kia mohio tetahi ki nga tono HTTP me nga API REST.
Ko nga mahi mo ml model.py he iti, he maamaa:
- Me kawemai e koe nga mea e whai ake nei mai i te konae jaymlmodel.py i hanga i mua: uvicorn, FastAPI, IrisModel, me IrisSpecies.
- Waihangahia nga tauira o FastAPI me IrisModel.
- Whakapuakihia he mahi ki https://127.0.0.1:8000/matapae hei matapae.
- Ko te tikanga IrisModel.predict species() ka whiwhi i tetahi momo momo IrisSpecies, ka huri ki te papakupu, ka whakahoki mai. Ko nga hokinga ko te karaehe e tumanakohia ana me te tupono kua matapaetia.
- Whakamahia te uvicorn hei mahi i te API.
Heoi ano, koinei te waehere katoa o te konae me ana korero:
Heoi ano me mahi koe. I te taahiraa e whai ake nei, me whakamatau te API.
Te whakamatautau i te API
Whakauruhia ano te rarangi e whai ake nei ki te Terminal ki te mahi i te API: uvicorn ml_model:app –reload
Koinei te ahua o te wharangi tuhinga:
No reira mo tenei ra. I te wahanga i muri mai o tenei, ka mutu.
Opaniraa
I tenei ra, i ako koe he aha te FastAPI me pehea te whakamahi, ma te whakamahi i tetahi tauira API ngawari me tetahi tauira ako miihini ngawari. Kua ako ano koe me pehea te hanga me te tiro i nga tuhinga API, me pehea hoki te whakamatautau.
He nui tera mo te waahanga kotahi, no reira kaua e miharo mena he iti noa nga panui kia mohio ai koe.
Kia hari te whakawaehere.
Waiho i te Reply