Lesson 02 � Foundation
PYTHON SE
AI BANAO.
Python AI engineering ki language hai � FastAPI se API banao, Pydantic se data validate karo, Uvicorn se server chalao, aur Async se speed pakdo. Sab kuch Python mein hota hai.
WHY: Python AI mein kyun hai?
Jab aapko ML model deploy karna ho, API banana ho, ya data pipeline chalani ho � Python sabse easy hai. FastAPI framework se production-ready API minutes mein ban jaati hai. Pydantic data ko safe rakhta hai. Uvicorn server ko light aur fast banata hai. Async multiple requests ko ek saath handle karta hai.
API framework jo Python mein blazing-fast APIs banata hai. Auto-generated docs, type safety, aur async support built-in hai.
Data validation library. Request aur response ka schema define karo � wrong data aaye toh automatically reject ho jaata hai.
ASGI server jo FastAPI apps ko run karta hai. Lightweight aur production-ready. Hot reload support hai development ke liye.
Non-blocking code. Ek request process ho rahi hai toh doosri wait nahi karti � server ek saath hundreds of requests handle kar sakta hai.
Concepts ka deep dive
FastAPI � API framework
FastAPI ek modern, fast web framework hai Python ke liye. Yeh type hints ka use karta hai automatically validation aur docs generate karne ke liye. Production mein use hota hai � Netflix, Uber, Microsoft sab use karte hain.
Pydantic � Data validation
Pydantic BaseModel se define karo ki request mein kya aana chahiye. Agar client galat data bheje toh Pydantic automatically error return karta hai. Aapko manually check nahi karna padta.
Uvicorn � ASGI Server
Uvicorn ek ASGI server hai jo FastAPI app ko run karta hai. Yeh asyncio aur uvloop use karta hai for maximum performance. Development mein --reload flag se hot reload milta hai.
Async � Non-blocking execution
Async functions (async def) non-blocking hote hain. Jab ek async function kisi external call ka wait kar raha hai (jaise database ya API call), tab server doosri requests process kar sakta hai. Isse server bahut efficient banta hai.
Code: Prediction API banana hai
Ab ek simple prediction API banate hain FastAPI se. Yeh code directly copy karke run kar sakte ho.
# FastAPI basics
from fastapi import FastAPI
from pydantic import BaseModel
import uvicorn
app = FastAPI()
class PredictionRequest(BaseModel):
features: list[float]
class PredictionResponse(BaseModel):
prediction: float
confidence: float
@app.post("/predict")
async def predict(request: PredictionRequest):
# Simple prediction
prediction = sum(request.features) / len(request.features)
return PredictionResponse(prediction=prediction, confidence=0.85)
@app.get("/health")
async def health():
return {"status": "healthy"}
# Run: uvicorn main:app --reload
print("FastAPI app ready!")FastAPI() app instance banata hai. BaseModel se request/response schema define hota hai. @app.post("/predict") ek POST endpoint create karta hai. async keyword se function non-blocking banta hai.How it works � step by step
- Step 1:
PredictionRequestdefine karta hai ki client ko kya bhejna hai � ek list of floats. - Step 2:
/predictendpoint receive karta hai request, average calculate karta hai, aurPredictionResponsereturn karta hai. - Step 3:
/healthendpoint ek simple health check hai � load balancer ke liye useful. - Step 4:
uvicorn main:app --reloadse server start hota hai aurhttp://localhost:8000/docspe auto-generated Swagger docs milte hain.
Async kyun zaroori hai?
Imagine karo tumhara API 100 users ko serve kar raha hai. Agar synchronous code likha toh ek request process hone tak baaki sab wait karengi. Async mein jab ek request database call kar rahi hai, tab server doosri request handle kar sakta hai � jaise ek chef jo ek saath 10 bartan pakad sake.
# Sync vs Async comparison
import time
import asyncio
# Slow synchronous function
def slow_sync(n):
time.sleep(1) # Blocks everything
return f"Sync done: {n}"
# Fast async function
async def fast_async(n):
await asyncio.sleep(1) # Releases control
return f"Async done: {n}"
# Run 3 tasks
async def main():
# Async: all 3 run in parallel (~1 sec total)
results = await asyncio.gather(
fast_async(1), fast_async(2), fast_async(3)
)
print(results)
asyncio.run(main())Exercise: Test your knowledge
Quick check
FastAPI kyun use karte hain AI engineering mein? Teen reasons do.
Sochho: speed, request handling, aur documentation � FastAPI kya offer karta hai?
Pydantic � Data safety net
AI systems mein data galat aana common hai. Client bhejde string jahan float hona chahiye, ya required field miss ho jaaye. Pydantic ye sab automatically handle karta hai � aapko manually check nahi karna padta.
# Advanced Pydantic usage for AI
from pydantic import BaseModel, Field
from typing import Optional
class ModelConfig(BaseModel):
model_name: str = Field(..., description="Model ka naam")
temperature: float = Field(0.7, ge=0.0, le=2.0)
max_tokens: int = Field(100, gt=0)
system_prompt: Optional[str] = None
# Valid config
config = ModelConfig(model_name="gpt-4", temperature=0.8)
print(f"Model: {config.model_name}")
print(f"Temp: {config.temperature}")
# Invalid: temperature 5.0 > 2.0 limit
# config = ModelConfig(model_name="gpt-4", temperature=5.0)
# PydanticError: value is not <= 2.0Field() se default values, validation rules (ge = greater or equal, le = lesser or equal), aur descriptions set kar sakte ho. Auto-generated API docs mein ye sab dikh jaata hai.AI Engineering Python Best Practices
- Type hints use karo:
def predict(features: list[float]) -> dict:� Python ko samjhata hai ki kya expect karna hai. - Async: Database calls, API calls, file operations � sab async mein karo for better performance.
- Pydantic for everything: Request, response, config � sab BaseModel se define karo.
- Error handling: Try-except blocks lagao, especially ML model predictions mein.
- Logging: Print ki jagah
loggingmodule use karo � production mein debugging easy hogi.
Ab API Development par chalo � detailed endpoints, middleware, aur authentication seekho.