Otu akụkụ nke ọnọdụ ahụ bụ ịmepụta ụdị mmụta igwe. Ọ ga-abụrịrị nke a na-eji eme ihe na ụwa dị adị ma dị maka ndị na-azụ ahịa na ndị mmepe.
Ụzọ kachasị mfe na nke ewu ewu iji bunye ụdị mmụta igwe bụ itinye ha na API REST.
Site n'ọbá akwụkwọ a ma ama nke a na-akpọ FastAPI, nke ahụ bụ kpọmkwem ihe anyị ga-arụzu taa.
Ma, gịnị bụ FastAPI?
Emepụtara usoro ihe ntanetị nke FastAPI Python site na ala iji nweta uru nke ike Python nke oge a.
Maka asynchronous, nkwurịta okwu n'otu oge na ndị ahịa, ọ na-agbaso ụkpụrụ ASGI, ebe ọ nwekwara ike iji WSGI.
Ebe njedebe na ụzọ nwere ike jiri ọrụ async rụọ ọrụ. Na mgbakwunye, FastAPI na-enyere aka ịmepụta ngwa weebụ na-arụpụta ihe na ụdị-hinted, dị ọcha, koodu Python nke oge a.
Isi ihe eji eme FastAPI bụ, dị ka aha ahụ na-egosi, na-eke njedebe API.
Iji ọkọlọtọ OpenAPI, nke gụnyere Swagger UI na-emekọrịta ihe, ma ọ bụ ịnye data ọkọwa okwu Python dị ka JSON bụ ụzọ abụọ dị mfe iji nweta nke a. Agbanyeghị, FastAPI abụghị naanị maka API.
Enwere ike iji ya na-enye ibe weebụ ọkọlọtọ site na iji Jinja2 template engine na iji jeere ngwa na-eji WebSockets, na mgbakwunye na ọmarịcha ihe ọ bụla ọzọ usoro weebụ nwere ike ime.
N'edemede a, anyị ga-emepụta ụdị mmụta igwe kwụ ọtọ wee jiri FastAPI bufee ya. Ka anyị malite.
Ntinye nke FastAPI na imepụta API mbụ
Ịwụnye ọbá akwụkwọ na ihe nkesa ASGI dị mkpa nke mbụ; Uvuicorn ma ọ bụ Hypercorn ga-arụ ọrụ. Ọ na-arụ ọrụ site na itinye iwu a na Terminal:
Ugbu a emepụtara API, ị nwere ike iji ndezi koodu masịrị gị wee chọgharịa na ya. Mepụta edemede Python akpọrọ ml_model.py ka ịmalite. A na-anabata gị ịnye nke gị aha dị iche, mana n'ihi post a, m ga-ezo aka na faịlụ a dị ka ml_model.py.
Iji mepụta API kwụ ọtọ nke nwere isi njedebe abụọ, ị ga-emerịrị ọrụ ndị a:
- Bubata ọba akwụkwọ FastAPI na Uvicorn.
- Hazie klaasị FastAPI.
- Kwuwapụta ụzọ mbụ, nke, na ibe ndeksi, na-ewepụta ihe JSON kwụ ọtọ.
- Kwupụta ụzọ nke abụọ, nke na-enye ihe JSON kwụ ọtọ nwere ozi ahaziri. A na-ewepụta oke aha ozugbo na URL (dịka ọmụmaatụ, https://127.0.0.1:8000/Jay).
- Jiri Uvicorn mee API.
A na-egosi na itinye usoro ise ndị a n'ime ntakịrị koodu na-esote ya bụ. ịmepụta API dị mfe
Emeela ihe niile! Ka anyị malite API anyị ozugbo. Mepee windo njedebe n'akụkụ faịlụ ml model.py iji mezuo nke a. Ọzọ, tinye ihe ndị a:
igodo Tinye. Tupu ịga n'ihu, ka anyị kwubie nkwupụta a. Ngwa mbụ na-eji aha faịlụ Python naanị, na-enweghị ndọtị ahụ. Ngwa nke abụọ ga-enwerịrị otu aha dịka ọmụmaatụ FastAPI gị.
Site na iji -reload, ị na-agwa API na ịchọrọ ka ọ bugharịa na-akpaghị aka mgbe ị na-echekwa faịlụ kama ịmalite site na ọkọ.
Ugbu a malite ihe nchọgharị wee gaa na https://127.0.0.1:8000; nsonaazụ kwesịrị ịpụta dị ka ndị a:
Ị ghọtara ugbu a ka esi mepụta API dị mfe site na iji FastAPI.
Iwuli na ọzụzụ ụdị mmụta igwe
Na-enweghị ịnakọta ma ọ bụ nyochaa data ọ bụla, anyị ga-azụ naanị ụdị dị mfe. Ndị a enweghị njikọ na ntinye nke ụdị na ọ dịghị mkpa na isiokwu dị n'aka.
Enwere ike itinye ihe nlereanya dabere na dataset Iris site na iji otu ihe ahụ neural network usoro nwụnye.
Ma anyị ga-eme nke ahụ: budata ya Iris dataset ma zụọ ihe nlereanya. Nke ahụ agaghị adị mfe. Iji malite, mee faịlụ aha ya bụ jaysmlmodel.py.
N'ime ya, ị ga-eme ihe ndị a:
- Mbubata - Ị ga-achọ pandas, scikit-RandomForecastClassifier, learn's pydantic's BaseModel (ị ga-achọpụta ihe kpatara na nzọụkwụ na-esote), yana joblib maka ịchekwa na ibu ụdị.
- Kwupụta klaasị IrisSpecies nke ketara n'ụdị isi. Klas a nwere naanị mpaghara achọrọ iji buru amụma otu ifuru (karịa na nke ahụ na ngalaba na-esote)
- Mepụta otu klas. IrisModel bụ ọzụzụ nlereanya na ngwá ọrụ amụma.
- Kwuwapụta usoro akpọrọ _train model n'ime IrisModel. A na-eji usoro Random Forests zụọ ụdị. A na-eweghachi ihe nlereanya a zụrụ azụ site na usoro.
- Kwuwapụta ụdị ọrụ eburu n'amụma n'ime IrisModel. A na-eji ya buru amụma dabere na ihe ntinye 4 (ntụgharị ifuru). Ma amụma (ụdị ifuru) na amụma amụma ga-eweghachi site na algọridim.
- Gbanwee onye nrụpụta na IrisModel ka o wee buru dataset Iris wee zụọ ihe nlereanya ahụ ma ọ bụrụ na ọ na-efu na folda ahụ. Nke a na-edozi nsogbu nke ịzụ ụdị ọhụrụ ugboro ugboro. A na-eji ọba akwụkwọ joblib maka nbudata na ichekwa ihe nlereanya.
Nke a bụ koodu niile:
Enwere m olileanya na ndepụta a dị n'elu na nkwupụta ndị ahụ mere ka ọ dị mfe ịghọta n'agbanyeghị na nke a bụ nnukwu koodu ịmepụta. Ugbu a ka emepụtara ihe nlereanya a, ka anyị bipụta ike amụma ya n'elu a fọduru API.
Na-arụ API REST zuru ezu
Laghachi na faịlụ ml_model.py wee hichapụ data niile. Igwe ọkụ ga-adị ka nke ị nwere na mbụ, mana anyị kwesịrị iji faịlụ efu malite ọzọ.
Ị ga-akọwa nanị otu njedebe oge a, nke bụ nke a na-eji iji chọpụta ụdị ifuru. A na-akpọ ụdị IrisModel.predict (), nke ekwuputara na ngalaba bu ụzọ, site na njedebe a ka ọ mezuo amụma ahụ.
Ụdị arịrịọ bụ nnukwu mgbanwe ọzọ. Ka ịnyefe paramita na JSON kama URL, a na-atụ aro ka ị jiri POST mgbe ị na-eji ngwa igwe API.
Ahịrịokwu dị n'elu nwere ike ị dị ka gibberish ma ọ bụrụ na ị bụ a onye ọkà mmụta sayensị data, ma nke ahụ dị mma. Iji chepụta na ibuga ụdị, ọ bụchaghị mkpa ka mmadụ bụrụ ọkachamara na arịrịọ HTTP na REST API.
Ọrụ maka ml model.py dị ole na ole ma kwụ ọtọ:
- Ị ga-ebubata ihe ndị a site na faịlụ jaymlmodel.py emebere mbụ: uvicorn, FastAPI, IrisModel, na IrisSpecies.
- Mepụta ihe atụ nke FastAPI na IrisModel.
- Kwuwapụta otu ọrụ na https://127.0.0.1:8000/ amụma ikwu amụma.
- Usoro IrisModel.predict ụdị() na-enweta ihe ụdị IrisSpecies, gbanwee ya ka ọ bụrụ akwụkwọ ọkọwa okwu, wee weghachi ya. Nlaghachi bụ klaasị a na-atụ anya ya na ekwe omume amụma.
- Jiri uvicorn mee API.
Ọzọkwa, nke a bụ koodu faịlụ ahụ yana nkọwa ya:
Nke ahụ bụ naanị ihe ị ga-eme. Na nzọụkwụ ọzọ, ka anyị nwalee API.
Na-anwale API
Tinyegharịa ahịrị ndị a n'ime Terminal iji mebie API: uvicorn ml_model:app -reload
Nke a bụ ka ibe akwụkwọ ahụ si egosi:
Ya mere nke ahụ bụ maka taa. N'akụkụ nke a gachara, ka anyị kwubie.
mmechi
Taa, ị mụtara ihe FastAPI bụ na otu esi eji ya, na-eji ma ihe atụ API dị mfe yana ihe atụ mmụta igwe dị mfe. Ị mụtakwara otu esi emepụta na lelee akwụkwọ API, yana otu esi anwale ya.
Nke ahụ bụ ọtụtụ maka otu ibe, yabụ atụla gị anya ma ọ bụrụ na ọ na-ewe ọgụgụ ole na ole iji ghọta nke ọma.
Koodu obi ụtọ.
Nkume a-aza