ʻO kekahi hiʻohiʻona o ka hiʻohiʻona ka hana ʻana i kahi hoʻohālike aʻo mīkini. Pono e hoʻohana i ka honua maoli a loaʻa i nā mea kūʻai aku a me nā mea hoʻomohala.
ʻO ke ala maʻalahi a kaulana loa e kau i nā ʻano hoʻohālike aʻo mīkini e hoʻopili iā lākou i kahi REST API.
Me kahi waihona kaulana i kapa ʻia ʻo FastAPI, ʻo ia ka mea a mākou e hoʻokō ai i kēia lā.
Akā, he aha ʻĀpana wikiwiki?
Ua hoʻokumu ʻia ka ʻōnaehana pūnaewele FastAPI Python mai ka honua a hiki i ka hoʻohana ʻana i nā mana Python hou.
No ka asynchronous, kamaʻilio like me nā mea kūʻai aku, pili ia i ka maʻamau ASGI, ʻoiai hiki iā ia ke hoʻohana i ka WSGI.
Hiki i nā hopena a me nā ala ke hoʻohana i nā hana async. Hoʻohui ʻia, hiki i ka FastAPI ke hoʻokumu i ka hoʻokumu ʻana i nā polokalamu pūnaewele ma ke ʻano-hinted, maʻemaʻe, nā code Python hou.
ʻO ka hihia hoʻohana nui o FastAPI, e like me ka manaʻo o ka inoa, ka hana ʻana i nā hopena API.
Ke hoʻohana nei i ka maʻamau OpenAPI, e komo pū ana me kahi UI Swagger interactive, a i ʻole ka hāʻawi ʻana i ka ʻikepili puke wehewehe ʻōlelo Python e like me JSON he ala maʻalahi ia e hoʻokō ai i kēia. Eia naʻe, ʻaʻole ʻo FastAPI wale nō no nā API.
Hiki ke hoʻohana ʻia e hāʻawi i nā ʻaoʻao pūnaewele maʻamau e hoʻohana ana i ka mīkini template Jinja2 a e lawelawe i nā polokalamu me ka hoʻohana ʻana i WebSockets, ʻoi aku ka nui o nā mea ʻē aʻe e hiki ke hana i kahi ʻōnaehana pūnaewele.
Ma kēia ʻatikala, e hoʻomohala mākou i kahi hoʻohālike aʻo mīkini maʻalahi a laila e hoʻohana iā FastAPI e hoʻokau. E hoʻomaka kākou.
Hoʻokomo ʻia o FastAPI a me ka hana ʻana i ka API mua
Pono mua ka hoʻokomo ʻana i ka waihona a me kahi kikowaena ASGI; e hana paha ʻo Uvuicorn a i ʻole Hypercorn. Hana ia ma ke komo ʻana i kēia kauoha i ka Terminal:
I kēia manawa ua hana ʻia ka API, hiki iā ʻoe ke hoʻohana i kāu hoʻoponopono code i makemake ʻia a nānā i loko. E hana i kahi palapala Python i kapa ʻia ʻo ml_model.py e hoʻomaka. Hiki iā ʻoe ke hāʻawi i kou inoa ʻokoʻa, akā no kēia pou, e kuhikuhi wau i kēia faila ʻo ml_model.py.
No ka hana ʻana i API maʻalahi me nā helu hope ʻelua, pono ʻoe e hoʻopau i kēia mau hana:
- Hoʻokomo i nā hale waihona puke FastAPI a me Uvicorn.
- E hoʻonohonoho i kahi papa hana FastAPI.
- E haʻi i ke ala mua, ma ka ʻaoʻao kuhikuhi, e hana i kahi mea JSON pololei.
- E haʻi i ke ala ʻelua, e hāʻawi ana i kahi mea JSON maʻalahi me kahi memo maʻamau. Lawe pololei ʻia ka helu inoa mai ka URL (no ka laʻana, https://127.0.0.1:8000/Jay).
- E hoʻohana iā Uvicorn e holo i ka API.
Hōʻike ʻia ka hoʻokō ʻana i kēia mau ʻanuʻu ʻelima ma ka bit code ie. hana i kahi API maʻalahi
Pau nā mea a pau! E hoʻomaka koke i kā mākou API. E wehe i kahi puka puka Terminal ma kahi o ka faila ml model.py e hoʻokō i kēia. A laila, e hoʻokomo i kēia:
ke kī Enter. Ma mua o ka neʻe ʻana, e hōʻole mākou i kēia ʻōlelo. Hoʻohana ka app mua i ka inoa file Python wale nō, me ka ʻole o ka hoʻonui. Pono ka inoa o ka lua o ka app me kāu hana FastAPI.
Ma ka hoʻohana ʻana -reload, haʻi ʻoe i ka API e makemake ʻoe e hoʻouka hou i ka wā e mālama ai ʻoe i ka faila ma mua o ka hoʻomaka ʻana mai ka ʻohi.
E hoʻomaka i kahi polokalamu kele pūnaewele a hoʻokele i https://127.0.0.1:8000; e ikeia ka hopena penei:
ʻIke ʻoe i kēia manawa pehea e hana ai i kahi API maʻalahi me ka hoʻohana ʻana iā FastAPI.
Ke kūkulu a hoʻomaʻamaʻa ʻana i ke kumu hoʻohālike Mīkini
Me ka ʻole o ka ʻohi ʻana a i ʻole ka nānā ʻana i kekahi ʻikepili, e hoʻomaʻamaʻa wale mākou i kahi kumu hoʻohālike maʻalahi. ʻAʻole pili kēia i ka hoʻolaha ʻana o nā hiʻohiʻona a ʻaʻole pono i ke kumuhana i ka lima.
Hiki ke hoʻokomo ʻia kahi hiʻohiʻona e pili ana i ka dataset Iris me ka hoʻohana like kaʻenehana kikowaena ʻano hoʻokomo.
A e hana mākou pēlā: hoʻoiho i ka Iris dataset a hoʻomaʻamaʻa i ke kumu hoʻohālike. ʻAʻole maʻalahi kēlā. E hoʻomaka, e hana i kahi faila i kapa ʻia ʻo jaysmlmodel.py.
I loko o ia mea, e hana ʻoe i kēia:
- Imports — Pono ʻoe i nā pandas, scikit-RandomForecastClassifier, e aʻo i ka pydantic's BaseModel (e ʻike ʻoe i ke kumu ma ka pae aʻe), a me joblib no ka mālama ʻana a me ka hoʻouka ʻana i nā kumu hoʻohālike.
- E haʻi i kahi papa IrisSpecies i hoʻoilina mai ke kumu hoʻohālike. Aia i loko o kēia papa nā māla e pono ai no ka wānana ʻana i hoʻokahi ʻano pua (ʻoi aʻe ma kēlā ma ka ʻāpana aʻe)
- Hana i papa. ʻO IrisModel kahi hana hoʻohālike a me ka wānana.
- E haʻi i kahi ʻano i kapa ʻia ʻo _train model i loko o IrisModel. Hoʻohana ʻia ia e hoʻomaʻamaʻa i nā kumu hoʻohālike e hoʻohana ana i ka ʻenehana Random Forests. Hoʻihoʻi ʻia ke kumu hoʻohālike i aʻo ʻia e ke kaʻina hana.
- E haʻi aku i kahi hana i wānana ʻia i loko o IrisModel. Hoʻohana ʻia ia e wānana ma muli o 4 mau kumu hoʻokomo (nā ana pua). Hoʻihoʻi ʻia ka wānana (nā ʻano pua) a me ka wānana wānana e ka algorithm.
- E hoʻololi i ka mea hana ma IrisModel i mea e hoʻouka ai i ka ʻikepili Iris a hoʻomaʻamaʻa i ke kumu hoʻohālike inā nalo ia mai ka waihona. Hoʻopau kēia i ka pilikia o ka hoʻomaʻamaʻa pinepine ʻana i nā hiʻohiʻona hou. Hoʻohana ʻia ka waihona joblib no ka hoʻouka ʻana a me ka mālama ʻana.
Eia ke code holoʻokoʻa:
Manaʻo wau ua maʻalahi ka papa inoa o luna a me nā ʻōlelo i ka hoʻomaopopo ʻana ʻoiai he nui kēia o nā code e hana ai. I kēia manawa ua hoʻomohala ʻia kēia ʻano hoʻohālike, e hoʻolaha kākou i kona mana wānana ma luna o a i koe API.
Ke kūkulu ʻana i kahi API REST piha
E hoʻi i ka faila ml_model.py a holoi i nā ʻikepili āpau. E like loa ana ka boilerplate me ka mea i loaʻa iā ʻoe ma mua, akā pono mākou e hoʻomaka hou me kahi faila blank.
E wehewehe wale ʻoe i hoʻokahi hopena i kēia manawa, ʻo ia ka mea i hoʻohana ʻia e hoʻoholo i ke ʻano o ka pua. ʻO IrisModel.predict species(), i haʻi ʻia ma ka ʻāpana ma mua, ua kāhea ʻia e kēia hopena e hoʻokō i ka wānana.
ʻO ke ʻano noi ka hoʻololi nui ʻē aʻe. I mea e hoʻouna ai i nā ʻāpana ma JSON ma mua o ka URL, pono ʻoe e hoʻohana i ka POST i ka wā e hoʻohana ai aʻo aʻo Nā API.
Ua like paha ka ʻōlelo a ka ʻōlelo ma luna aʻe nei me he ʻōlelo ʻinoʻino inā ʻoe a ʻepekema data, akā maikaʻi kēlā. No ka hoʻolālā a me ka hoʻolālā ʻana i nā hiʻohiʻona, ʻaʻole pono kekahi e lilo i mea akamai i nā noi HTTP a me nā REST API.
He liʻiliʻi a maʻalahi nā hana no ml model.py:
- Pono ʻoe e hoʻokomo i kēia mai ka faila jaymlmodel.py i hana mua ʻia: uvicorn, FastAPI, IrisModel, a me IrisSpecies.
- E hana i nā manawa o FastAPI a me IrisModel.
- E haʻi i kahi hana ma https://127.0.0.1:8000/predict e hana wānana.
- Loaʻa i ke ala IrisModel.predict species() kekahi mea o ke ʻano IrisSpecies, hoʻololi iā ia i puke wehewehe ʻōlelo, a laila hoʻihoʻi. ʻO ka hoʻihoʻi ʻana ka papa i manaʻo ʻia a me ka hiki ke wānana.
- E hoʻohana i ka uvicorn e hoʻokō i ka API.
Eia hou, eia ke code a pau o ka faila me kāna mau ʻōlelo:
ʻO ia wale nō kāu e hana ai. I ka pae aʻe, e hoʻāʻo kākou i ka API.
Ke ho'āʻo nei i ka API
E hoʻokomo hou i kēia laina i loko o ka Terminal e hoʻokō i ka API: uvicorn ml_model: app –reload
Penei ka puka ana o ka palapala palapala:
Pela no keia la. Ma ka ʻāpana ma hope o kēia, e hoʻopau kākou.
Panina
I kēia lā, ua aʻo ʻoe i ka FastAPI a pehea e hoʻohana ai, me ka hoʻohana ʻana i kahi hiʻohiʻona API maʻalahi a me kahi hiʻohiʻona aʻo mīkini maʻalahi. Ua aʻo pū ʻoe i ka hana ʻana a nānā i nā palapala API, a me pehea e hoʻāʻo ai.
He nui kēlā no ka ʻāpana hoʻokahi, no laila, mai kāhāhā inā he mau heluhelu e hoʻomaopopo pono ai.
Hauʻoli coding.
Waiho i ka Reply