Lesson 112 — Advanced

Preparing Your Apps for Production

Production ka matlab hai "kal bhi yahi chalega aur koi bhi isse badal sake bina tode". Is lesson mein hum configuration ko code se alag karna, model aur dependencies pin karna, pehli request se traceability, aur Level 7 wale eval set ko fixed yardstick ki tarah aage le jaana dekhenge.

⏱ 10 min• Advanced• What LLMOps Adds

Taiyaari kyun zaroori hai

Kya hai?

Production preparation matlab har wo setting jo behaviour badalti hai usko code se nikal kar explicit, versioned aur recorded banaana — taaki badlaav ek PR mein dikhe, andhere mein nahi.

Kab kaam aata hai?

Jab notebook/script wala app ko pehli baar team ke saath chalana ho — tabhi. Baad mein refactor karna zyada mehnga padta hai kyunki defaults sab jagah chhip kar baithe hote hain.

Kahan milta hai?

Config files (YAML/JSON/env), requirements lockfile, middleware jo request ID lagata hai, aur tumhare eval dataset repo mein.

Har LLM app mein kuch aisi cheezein hoti hain jo behaviour badalti hain: chunk size, top-k, model, temperature, prompt text, tool list. Inhe code mein hardcode kiya toh har badlaav ek code change hai — review, test aur rollback mushkil. Config mein daala toh wahi badlaav ek chhota diff ban gaya.

Rule of thumb: Koi bhi constant jo badalne pe jawab badal sakta hai — wo config mein, code mein nahi. Ek din ka exercise: app ke andar saare magic numbers aur strings dhoondho, unke naam likho, config file mein daalo.

Configuration, not code

from dataclasses import dataclass
import yaml

@dataclass
class AppConfig:
    model: str = "provider/model-name"
    temperature: float = 0.0
    chunk_size: int = 500
    top_k: int = 5
    max_agent_steps: int = 8
    prompt_version: str = "v3"

def load_config(path: str = "config.yaml") -> AppConfig:
    with open(path) as f:
        data = yaml.safe_load(f) or {}
    return AppConfig(**data)   # unknown key -> turant error

# config.yaml (repo mein versioned):
# model: provider/model-name
# temperature: 0.0
# chunk_size: 500
# top_k: 5
# max_agent_steps: 8
# prompt_version: v3
Test: Chunk size aur model sirf config badal ke change karo — aur confirm karo ki code file bilkul nahi chhui. Agar model badalne ke liye code edit karna pade, abhi bhi preparation adhoori hai.

Model aur dependency pinning

requirements.txt (pinned):
fastapi==<exact>
uvicorn[standard]==<exact>
# har dependency exact version pe — "next month ka build = aaj ka build"

model config:
model: provider/model-name@version
# "latest" kabhi mat likho — kal alag model milega

lockfile (poetry.lock / uv.lock) bhi repo mein:
# direct pins + transitive pins, dono reproduce hoti hain
Rebuild test: Mahine mein ek baar CI se ek fresh machine pe build chala do. Reproduce nahi hua — toh tumhara release artifact nahi, yaad hai. Pehle din hi ye test aadat banao.

Pehli request se traceable

import uuid, time

def handle_request(user_msg: str) -> dict:
    rid = uuid.uuid4().hex[:12]          # request ID
    t0 = time.perf_counter()
    answer = rag_chain(user_msg)
    trace = {
        "request_id": rid,
        "prompt_version": CFG.prompt_version,
        "model": CFG.model,
        "config_hash": hash_config(CFG),
        "latency_s": round(time.perf_counter() - t0, 3),
    }
    log_trace(trace)                      # har step isi rid ke saath
    return {"answer": answer, "request_id": rid}
Pehle din se: Tracing baad mein add karna sabse mushkil kaam hai, kyunki tab tak pata hi nahi hota kaunsi request kaise bani thi. Pehli request se hi request ID, prompt version aur model log karo — chhita log kaafi hai shuru ke liye.

Level 7 ka eval set — fixed yardstick

Level 7 mein jo evaluation dataset banaya tha, usse ab fixed yardstick ki tarah le chalo: har change — code ho ya prompt ho ya model ho — isi pe naapa jaayega. Dataset ko repo mein versioned rakho, na ki kisi ke laptop pe.

evals/
  rag_cases.jsonl   # question + gold answer/source
  agent_cases.jsonl # task + expected tool sequence
  README.md         # kab add hua, kab retired hua, kyun

# rule: eval case delete nahi hota, retire hota hai (reason ke saath)
# naya production failure = naya case (L10.9 se aayega)
Yardstick vs target: Eval set tumhara target nahi hai, naap hai — isliye isse "tune karke 100%" mat karo. Cases ko realistic aur review-checked rakho, warna gate sirf numbers ko impress karega, quality nahi.

Exercise

Question: Behaviour badalne wali setting ko code ki jagah kis cheez mein rakhte hain? (ek shabd)

Question: Har request ko unique pehchan dene wala string ka aam naam kya hai?

Question: Model config mein kaunsa word hamesha avoid karna chahiye jo kal alag version de sakta hai?

Question: Har change ko naapne ke liye Level se aage le jaaya jaane wala fixed dataset kya kehlata hai? (eval set / dashboard)

Common mistakes

Desi example: Thela vs restaurant ka standard menu

Thela pe har din chef khud decide karta hai — kabhi teekha, kabhi meetha. Restaurant mein menu printed, recipe card fixed, supplier named — koi bhi chef jaaye dish same rahe. App ko restaurant banao:

text
thela (notebook app)   -> sab chef ke mood pe
restaurant (prod app)  -> printed menu (config)
                         -> recipe card (pinned versions)
                         -> order slip no. (request id)
                         -> taste standard (eval set)
Interview angle — yahan se sawaal aate hain
  • Q: "Config not code" se kya murad hai? — Har behaviour-changing setting explicit versioned file mein; code sirf logic — badlaav reviewable diff ban jaata hai.
  • Q: Model version pin kyun chahiye? — Provider ka default chupke se badal sakta hai; pin ke bina release reproduce nahi hoti.
  • Q: Request traceability mein kya-kyaa log hota hai? — Request ID, prompt version, model, config hash, latency, aur har step ka record.
  • Q: Eval set ka role kya hai? — Har change ka fixed yardstick, repo mein versioned; production failures se naye cases add hote hain.
Lesson complete?

App ab explicit settings, pins aur request IDs ke saath khada hai. Agla lesson — Experiment Tracking & Prompt Versioning — mein dekhenge har change ko history mein kaise record karte hain aur prompts ko code se alag kaise deploy karte hain.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course