Isticmaalka FastAPI si loo dhiso API-yo LLM ah oo waxqabad sare leh oo diyaar u ah wax soo saarka: Hage tallaabo-tallaabo ah
Isticmaalka FastAPI si loo dhiso API-yo LLM ah oo waxqabad sare leh oo diyaar u ah wax soo saarka: Hage tallaabo-tallaabo ah
FastAPI, oo ah qaab-dhismeedka shabakadda Python ee casriga ah, waxqabadka sare leh, ayaa caan ku ah fududeynta isticmaalka, xawaaraha, iyo dukumeentiyada API ee si toos ah loo soo saaray. Gaar ahaan marka la dhisayo API-yada dambe ee codsiyada LLM (Large Language Model), FastAPI waxay muujineysaa faa'iidooyin xooggan. Maqaalkani wuxuu ku bari doonaa sida loo isticmaalo FastAPI si loo dhiso API LLM ah oo diyaar u ah wax soo saarka, tallaabo-tallaabo, wuxuuna sahamin doonaa qaar ka mid ah dhaqamada ugu wanaagsan.
Maxaa loo dooranayaa FastAPI?
Marka la dhisayo API-ga codsiyada LLM, FastAPI waxay bixisaa faa'iidooyinka muhiimka ah ee soo socda:
- Waxqabad sare leh: Iyada oo ku saleysan ASGI, FastAPI waxay xamili kartaa codsiyo isku mar ah oo badan, taas oo muhiim u ah codsiyada LLM ee u baahan jawaabo degdeg ah.
- Taageerada aan isku xirnayn (Asynchronous): FastAPI waxay ku dhex leedahay taageerada ereyada muhiimka ah ee
asynciyoawait, taas oo u sahlaysa in la xamili karo hawlgallada aan isku xirnayn, sida wicitaanka LLM inference, iyada oo laga fogaanayo xannibaadda dunta ugu weyn. - Dukumeentiyada API ee si toos ah loo soo saaray: FastAPI waxay si toos ah u soo saartaa dukumeentiyada API ee isdhexgalka ah (Swagger UI) iyadoo la isticmaalayo OpenAPI iyo JSON Schema, taas oo u sahlaysa horumariyeyaasha inay tijaabiyaan oo ay isticmaalaan API-gaaga.
- Xaqiijinta xogta: FastAPI waxay isticmaashaa Pydantic si loo xaqiijiyo xogta, iyadoo la hubinayo saxnaanta xuduudaha codsiga, iyadoo la yareynayo khaladaadka.
- Ku tiirsanaanta duritaanka (Dependency injection): Nidaamka ku tiirsanaanta duritaanka ee FastAPI wuxuu fududeeyaa maareynta iyo wadaagga kheyraadka, sida moodellada LLM.
- Bulsho firfircoon: FastAPI waxay leedahay bulsho ballaaran oo firfircoon, waxaadna heli kartaa kheyraad iyo taageero badan.
Diyaar garow
-
Ku rakib Python: Hubi inaad ku rakibtay Python 3.7 ama ka sareeya.
-
Ku rakib FastAPI iyo Uvicorn: Isticmaal pip si aad u rakibto FastAPI iyo Uvicorn (server-ka ASGI):
pip install fastapi uvicorn -
Dooro moodelka LLM: Dooro moodelka LLM ee aad rabto inaad isticmaasho. Waxay noqon kartaa moodelka OpenAI, ama waxay noqon kartaa moodel furan, sida TinyLlama. Haddii aad doorato OpenAI, waxaad u baahan doontaa inaad hesho furaha API ee OpenAI. Haddii aad doorato TinyLlama, waxaad u baahan doontaa inaad soo dejiso faylka moodelka.
Tallaabada 1: Abuur codsi FastAPI ah
Abuur fayl la yiraahdo main.py, oo ku dar koodhka soo socda:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI(title="LLM API", description="API fudud oo loogu talagalay in lala falgalo LLM-yada.")
class InputText(BaseModel):
text: str
class OutputText(BaseModel):
generated_text: str
Koodhkani wuxuu qeexayaa codsi FastAPI ah, wuxuuna qeexayaa laba moodel oo Pydantic ah: InputText ayaa loo isticmaalaa in lagu helo qoraalka gelitaanka, OutputText ayaa loo isticmaalaa in lagu soo celiyo qoraalka la soo saaray.
Tallaabada 2: Ku dar macquulnimada LLM inference
Iyadoo ku xiran moodelka LLM ee aad dooratay, ku dar macquulnimada inference ee u dhiganta. Halkan, waxaan u isticmaaleynaa API-ga OpenAI tusaale ahaan:
import openai
import os
# Hel furaha API ee OpenAI
openai.api_key = os.environ.get("OPENAI_API_KEY") # Waxaa lagugula talinayaa inaad isticmaasho doorsoomayaasha deegaanka
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
"""
Generates text based on the input text using OpenAI.
"""
try:
response = openai.Completion.create(
engine="text-davinci-003", # Dooro qaabka
prompt=input_text.text,
max_tokens=150,
n=1,
stop=None,
temperature=0.7,
)
generated_text = response.choices[0].text.strip()
return OutputText(generated_text=generated_text)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Koodhkani wuxuu qeexayaa dariiqa /generate, kaas oo aqbalaya shay InputText ah sida wax soo gal, wuxuuna ugu yeerayaa OpenAI API si uu u abuuro qoraal, wuxuuna soo celinayaa qoraalka la abuuray sida shay OutputText ah. Ogsoonow in la beddelo text-davinci-003 qaabka kuugu habboon ee aad dooratay.
Haddii aad isticmaaleyso moodallo maxalli ah sida TinyLlama, waxaad u baahan tahay inaad rakibto maktabadaha u dhigma, sida transformers, oo aad ku shubto moodalka xusuusta. Tusaalaha koodhku waa sida soo socota:
from transformers import pipeline
import torch
generator = pipeline('text-generation', model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")
@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
"""
Generates text based on the input text using TinyLlama.
"""
try:
generated_text = generator(input_text.text, max_length=50, do_sample=True, temperature=0.7)[0]['generated_text']
return OutputText(generated_text=generated_text)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Talaabada 3: Orod App-ka FastAPI
Isticmaal Uvicorn si aad u socodsiiso App-ka FastAPI:
uvicorn main:app --reload
```Tani waxay bilaabi doontaa server maxalli ah, waxaadna ka geli kartaa biraawsarkaaga `http://127.0.0.1:8000/docs` si aad u aragto dukumeentiyada API ee si toos ah loo soo saaray. Halbeegga `--reload` wuxuu si toos ah u bilaabi karaa serverka ka dib marka koodhka la beddelo, taasoo fududeyneysa horumarinta.
## Tallaabada 4: Tijaabinta API-ga
Isticmaal dukumeentiyada API ama qalabka sida curl si aad u tijaabiso API-gaaga. Tusaale ahaan, isticmaal curl si aad u dirto codsi POST ah:
```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Tell me a joke about cats."}' http://127.0.0.1:8000/generate
Waa inaad heshaa jawaab JSON ah oo ay ku jirto qoraalka la soo saaray.
Tallaabada 5: Daabulidda Wax-soo-saarka
Ku daabulo codsigaaga FastAPI deegaanka wax-soo-saarka, tusaale ahaan:
- Docker: Isticmaal Docker si aad u geliso codsigaaga weel, taasoo fududeyneysa daabulidda iyo maareynta.
- Madal daruur: Ku daabulo madal daruur, sida AWS, Google Cloud Platform, ama Azure. Azure Cosmos DB iyo Azure Functions ee lagu xusay qoraalka waxaa loo isticmaali karaa in lagu dhiso API serverless ah. Modal sidoo kale waxaa loo isticmaali karaa in lagu daabulo codsiyada FastAPI ee si toos ah u ballaaran.
- Server: Ku daabulo serverkaaga.
Ku Dhaqanka Wanaagsan
- Isticmaal doorsoomayaasha deegaanka si aad u kaydiso macluumaadka xasaasiga ah: Ha ku adkeyn macluumaadka xasaasiga ah sida furayaasha API ee koodhka, laakiin isticmaal doorsoomayaasha deegaanka.
- Ku dar diiwaan gelinta: Isticmaal moduleka diiwaan gelinta si aad u diiwaan geliso xaaladda socodsiinta API-ga, taasoo fududeyneysa hagaajinta iyo la socodka.
- Ku dar maaraynta khaladaadka: Isticmaal baloogyada
try...exceptsi aad u maareyso marka laga yaabo inay dhacaan marka laga reebo, oo soo celi macluumaadka khaladaadka ku habboon. - Xaddidaadda heerka: Isticmaal xaddidaadda heerka si aad uga hortagto in API-ga si xun loo isticmaalo. FastAPI waxay leedahay maktabado xaddidaadda heerka oo diyaar ah.
- Kaydinta: Codsiyada soo noqnoqda, waxaad isticmaali kartaa kaydinta si aad u wanaajiso waxqabadka.
- Kormeerka: Isticmaal qalabka kormeerka si aad ula socoto waxqabadka iyo helitaanka API-ga.
Farsamooyinka Sare
- Maarinta Asynchronous: LLM-ka waqti qaata, isticmaal ereyada muhiimka ah
asynciyoawaitsi aad u maareyso si asynchronous ah, adigoo iska ilaalinaya xannibaadda dunta ugu weyn. - Jawaab celinta socodka: Isticmaalka jawaab celinta socodka (StreamingResponse) waxay soo celin kartaa qoraalka la soo saaray waqtiga dhabta ah, taasoo wanaajineysa khibradda isticmaalaha.
- Dunta badan/Habab badan: LLM-ka CPU-ga culus, waxaad isticmaali kartaa dunta badan ama habab badan si aad u wanaajiso waxqabadka.
- Xawaaraha GPU: Haddii moodeelkaaga LLM uu taageerayo xawaaraha GPU, waxaad isticmaali kartaa CUDA ama maktabado kale oo xawaaraha GPU si aad u wanaajiso xawaaraha soo saarista.





