Free lesson · GenAI Solutions Architecture
GenAI தொழில்நுட்பத் தேர்வுகளுக்கான ADR schema மற்றும் முடிவு வகைப்பாட்டை (decision taxonomy) உருவாக்குங்கள்
GenAI-க்குரிய தொழில்நுட்பத் தேர்வுகளை உள்ளடக்கிய ஒரு கட்டமைக்கப்பட்ட முடிவு வகைப்பாட்டுடன் (decision taxonomy) ஒரு ADRSchema-ஐ நீங்கள் உருவாக்குவீர்கள். MODEL_SELECTION, HOSTING_STRATEGY, RAG_VS_FINETUNING, GUARDRAIL_PLACEMENT, EMBEDDING_PROVIDER, VECTOR_STORE_CHOICE என்ற variants-உடன் ஒரு DecisionCategory enum-ஐ வரையறுக்கவும். ArchitectureDecisionRecord-ஐ பின்வரும் fields-உடன் ஒரு Pydantic model-ஆக செயல்படுத்தவும்: adr_id: str, title: str, category: DecisionCategory, status: ADRStatus (PROPOSED, ACCEPTED, SUPERSEDED, DEPRECATED), context: str, decision: str, consequences: list[str], created_at: datetime, superseded_by: Optional[str], decision_makers: list[str], tags: list[str], review_deadline: Optional[datetime], priority: int. option_name: str, provider: str, latency_score, cost_score, quality_score, security_score போன்ற criteria-க்களை 0-1 இடையே normalized செய்யப்பட்ட மதிப்புகளுக்கு map செய்யும் scores: dict[str, float], மற்றும் ஒவ்வொரு score ஒதுக்கீட்டையும் ஆதரிக்கும் URLs அல்லது benchmark குறிப்புகளைக் கொண்ட evidence: list[str] உடன் DecisionOption models-ஐ உருவாக்கவும். criteria_weights: dict[str, float]-ஐ ஏற்றுக்கொண்டு, total_score: float மற்றும் rank: int fields-உடன் தரவரிசைப்படுத்தப்பட்ட ScoredOption list-ஐத் திருப்பித் தரும் compute_weighted_score()-ஐக் கணக்கிடும் WeightedCriteriaMatrix-ஐ செயல்படுத்தவும். எல்லா weights-ஐயும் floating-point tolerance-க்குள் 1.0 ஆகக் கூட்டுத்தொகையாகும்படி உறுதிசெய்து, அவ்வாறு இல்லையெனில் விவரங்களுடன் InvalidWeightsError-ஐ raise செய்யும் validate_weights()-ஐ உருவாக்கவும். ADR-களை PostgreSQL architecture_decisions table-இல் பின்வரும் columns-உடன் சேமிக்கவும்: id SERIAL PRIMARY KEY, adr_id VARCHAR(64) UNIQUE NOT NULL, title TEXT NOT NULL, category VARCHAR(32) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'PROPOSED', context TEXT, decision TEXT, consequences JSONB, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ, superseded_by VARCHAR(64) REFERENCES architecture_decisions(adr_id). option_id SERIAL PRIMARY KEY, adr_id VARCHAR(64) REFERENCES architecture_decisions(adr_id), option_name VARCHAR(128), provider VARCHAR(64), scores JSONB, evidence JSONB உடன் ஒரு decision_options junction table-ஐ உருவாக்கவும். title, category, context, decision என்ற கட்டாய fields-ஐக் கொண்ட ADRCreateRequest body-ஐ ஏற்றுக்கொண்டு, உருவாக்கப்பட்ட adr_id மற்றும் created_at timestamp-உடன் ADRCreateResponse-ஐத் திருப்பித் தரும் create_adr() FastAPI endpoint-ஐ POST /api/v1/adrs-இல் உருவாக்கவும். Pagination மற்றும் filtering ஆதரவுடன் list_adrs()-ஐ GET /api/v1/adrs?category={cat}&status={status}&page={page}-இல் செயல்படுத்தவும். எல்லா supersede இணைப்புகளையும் உள்ளடக்கிய முழு version chain-ஐ adr_id, status, created_at, superseded_by உடன் ADRVersionEntry objects-இன் list-ஆகத் திருப்பித் தரும் get_adr_history()-ஐ GET /api/v1/adrs/{adr_id}/history-இல் செயல்படுத்தவும். ADR உருவாக்க விகிதங்களைக் கண்காணிக்கும் adr_versions_total{category,status} Prometheus counter, scoring செயல்பாட்டைக் கண்காணிக்கும் adr_options_evaluated_total{category} counter, மற்றும் endpoint செயல்திறனை அளவிடும் adr_creation_latency_seconds histogram-ஐ deploy செய்யவும். பழைய ADR-ஐ atomic-ஆக SUPERSEDED எனக் குறித்து, புதிய ADR-ஐ superseded_by foreign key வழியாக இணைக்கும், மற்றும் ஒரே நேரத்தில் நிகழும் supersede race conditions-ஐத் தடுக்க SELECT FOR UPDATE உடன் ஒரு PostgreSQL transaction-இல் referential integrity-ஐ அமல்படுத்தும் supersede_adr()-ஐ POST /api/v1/adrs/{adr_id}/supersede-இல் உருவாக்கவும்.
Course: GenAI Architecture & Design Patterns · Chapter 1 · GenAI ADR Engine
Free to read — no subscription required.
அறிமுகம்
ஒரு பாரம்பரிய ADR template-ஐ GenAI codebase-க்கு நகலெடுக்கும்போது, அதன் fields உடனடியாகவே பொருந்தாமல் போகின்றன — token விலை வளைவுகளுக்கு இடமில்லை, context-window வரம்புகளுக்கு field இல்லை, எந்த production telemetry பின்னர் அந்த முடிவை செல்லாததாக்க வேண்டும் என்பதை அறிவிக்க இடமில்லை. பழைய ADR வடிவங்களில் GenAI அமைப்புகளை வெளியிடும் குழுக்கள், query செய்ய முடியாத, dependency tracking-ஐ எதிர்க்கும், தானியங்கி மதிப்பாய்வுக்கு இடம் தராத free-text "decision" blob-களுடன் முடிகின்றன; இதனால் மாற்றப்பட்ட மாடல் தேர்வுகள், ஆதாரம் அவற்றுக்கு எதிராகத் திரும்பிய பிறகும் நீண்ட காலம் production-இல் தங்கிவிடுகின்றன. இந்தப் பாடத்தின் முடிவில், category enum, structured context, criteria-weight matrix மற்றும் dependency இணைப்புகள் மூலம் ஒவ்வொரு GenAI architecture முடிவையும் machine-readable, auditable மற்றும் நேரடி production signals-க்கு எதிராக மதிப்பாய்வு செய்யக்கூடியதாக ஆக்கும் ஒரு typed ADR schema-வை நீங்கள் வடிவமைக்க முடியும்.
முக்கிய சொற்கள்
- Architecture Decision Record (ADR): architecturally முக்கியத்துவம் வாய்ந்த ஒரு முடிவை — அதன் context, தேர்ந்தெடுக்கப்பட்ட option, பரிசீலிக்கப்பட்ட மாற்று வழிகள் மற்றும் downstream விளைவுகள் — பிடித்து வைக்கும் ஒரு structured, persisted ஆவணம்; இதனால் எதிர்கால மதிப்பாய்வாளர்கள் அமைப்பு ஏன் இப்படி இருக்கிறது என்பதை audit செய்ய முடியும்.
- Decision Taxonomy: ஒவ்வொரு ADR-ஐயும் வகைப்படுத்தும் வகைகளின் (எ.கா. MODEL_SELECTION, HOSTING_STRATEGY, RAG_VS_FINE_TUNING) கட்டுப்படுத்தப்பட்ட சொற்களஞ்சியம். இதை ஒரு enum ஆக encode செய்வது, schema-வால் வகை-குறிப்பிட்ட தேவையான fields-ஐ கட்டாயப்படுத்த அனுமதிக்கிறது மற்றும் governance queries-ஐ type-safe ஆக்குகிறது.
- Telemetry Validator: ADR உருவாக்கப்படும் நேரத்தில் அதனுடன் பிணைக்கப்படும் ஒரு பெயரிடப்பட்ட production சோதனை (எ.கா. "p95_latency_under_500ms"). நேரடி metrics-க்கு எதிராக இந்தச் சோதனை தோல்வியடையும்போது, மனித மதிப்பாய்வு தேவையின்றி governance அமைப்பு அந்த முடிவை stale என flag செய்கிறது.
கருத்துகள்
கீழே உள்ள இரண்டு யோசனைகள் schema-வின் வடிவத்தை நியாயப்படுத்துகின்றன: முதலாவதாக, GenAI architecture பணிக்கு ஒரு generic ADR template-ஐ மீண்டும் பயன்படுத்துவதற்குப் பதிலாக ஏன் தனிப்பட்ட category taxonomy தேவை என்பது; இரண்டாவதாக, production-இல் auditable ஆக இருக்க ADRSchema encode செய்ய வேண்டிய வடிவமைப்புக் கொள்கைகள் — வெளிப்படையான criteria weights, பிணைக்கப்பட்ட telemetry validators, enum-typed status மற்றும் dependency edges.
GenAI முடிவுகளுக்கு ஏன் தனிப்பயன் Taxonomy தேவை
ஒரு decision taxonomy என்பது ஒவ்வொரு architecture முடிவையும் நன்கு வரையறுக்கப்பட்ட ஒரு வகையில் வகைப்படுத்தும் கட்டுப்படுத்தப்பட்ட சொற்களஞ்சியம். GenAI அமைப்புகளில், மூன்று முடிவு வகைகள் தினசரி architectural பணியில் ஆதிக்கம் செலுத்துகின்றன, ஒவ்வொன்றும் தனித்துவமான மதிப்பீட்டு அளவுகோல்களைக் கொண்டுள்ளது:
- Model Selection: ஒரு குறிப்பிட்ட திறனுக்கு எந்த foundation model சேவை செய்கிறது? இந்த முடிவில் cost-per-token, latency percentiles, quality benchmarks (MMLU, HumanEval, domain-specific evals), context window அளவு, fine-tuning ஆதரவு மற்றும் vendor lock-in ஆபத்து அடங்கும்.
- Hosting Strategy: inference எங்கே இயங்குகிறது? Options முழுமையாக நிர்வகிக்கப்படும் APIs (OpenAI, Anthropic, Google), cloud-hosted endpoints (SageMaker, Vertex AI, Azure ML) மற்றும் self-hosted உள்கட்டமைப்பு (dedicated GPUs-இல் vLLM) வரை பரவியுள்ளன. ஒவ்வொரு தேர்வும் செலவுக் கட்டுப்பாட்டை operational சுமைக்கு எதிராக சமரசம் செய்கிறது.
- RAG vs. Fine-Tuning: அமைப்பு domain அறிவை எப்படி உள்ளடக்குகிறது? Retrieval-Augmented Generation base model-ஐ frozen ஆக வைத்து query நேரத்தில் context-ஐ உட்செலுத்துகிறது; fine-tuning அறிவை model weights-இல் பதிக்கிறது. Hybrid அணுகுமுறைகள் இரண்டையும் இணைக்கின்றன. இந்த முடிவு data freshness தேவைகள், training உள்கட்டமைப்பு கிடைக்கும் தன்மை மற்றும் ஏற்றுக்கொள்ளக்கூடிய latency budgets-ஐப் பொறுத்தது.
இந்த மூன்று முதன்மை வகைகளுக்கு அப்பால், ஒரு production taxonomy-க்கு guardrail strategy (content filtering அணுகுமுறை), embedding model selection (vector representation தேர்வுகள்) மற்றும் orchestration pattern (single-call vs. agent loop vs. chain-of-thought pipeline) ஆகியவற்றுக்கான வகைகளும் தேவை. ஏற்கனவே உள்ள records-ஐ உடைக்காமல் இவற்றை இடமளிக்கும் வகையில் schema விரிவாக்கக்கூடியதாக இருக்க வேண்டும்.
Production ADR Schema-க்களுக்கான வடிவமைப்புக் கொள்கைகள்
GenAI workloads-ஐ இலக்காகக் கொண்ட எந்த ADR அமைப்புக்கும் பரவலாகப் பொருந்தும் பல கொள்கைகள் இந்த schema வடிவமைப்பிலிருந்து வெளிப்படுகின்றன:
-
வகை-குறிப்பிட்ட invariants-ஐ query நேரத்தில் அல்ல, உருவாக்கும் நேரத்தில் கட்டாயப்படுத்துங்கள். அமைப்பில் நுழையும் ஒரு தவறான ADR dependency graphs-ஐ மாசுபடுத்தும், governance dashboards-ஐ திரிக்கும் மற்றும் சுத்தம் செய்வதை எதிர்க்கும். validate method மற்றும் build_category_context factory, persistence-க்கு முன்பே பிரச்சினைகளைப் பிடிக்கின்றன.
-
Criteria weights-ஐ வெளிப்படையாகவும் normalized ஆகவும் ஆக்குங்கள். Weighted criteria matrix ADR record-இல் நேரடியாக பதிக்கப்படும்போது, cost, latency மற்றும் quality எவ்வாறு சமநிலைப்படுத்தப்பட்டன என்பதை எந்த மதிப்பாய்வாளரும் துல்லியமாகப் பார்க்க முடியும். Weights 1.0-க்கு கூட்டுத்தொகையாக இருக்க வேண்டும் என்று கட்டாயப்படுத்துவது, ஏற்கனவே உள்ளவற்றை மறுசமநிலை செய்யாமல் ஒரு புதிய criterion-ஐ சேர்க்கும் பொதுவான தவறைத் தடுக்கிறது.
-
Telemetry validators-ஐ உருவாக்கும் நேரத்தில் முடிவுகளுடன் பிணைக்கவும். telemetry_validators field இந்த முடிவின் அனுமானங்களை சரிபார்க்கும் குறிப்பிட்ட production சோதனைகளை (எ.கா., "p95_latency_under_500ms", "cost_per_request_under_0.02") பெயரிடுகிறது. Validators முன்கூட்டியே அறிவிக்கப்படும்போது, telemetry validation அமைப்பு மனித தலையீடு இல்லாமல் stale முடிவுகளை தானாகவே கண்டறிய முடியும்.
-
Status transitions-ஐ string ஆக அல்ல, enum ஆக மாடல் செய்யுங்கள். Free-text status மதிப்புகளுக்குப் பதிலாக ADRStatus-ஐப் பயன்படுத்துவது typos-ஐத் தடுக்கிறது, governance logic-இல் exhaustive pattern matching-ஐ இயக்குகிறது மற்றும் status-அடிப்படையிலான queries-ஐ type-safe ஆக்குகிறது. ஒரு முடிவு ACCEPTED ஆக இருக்கிறது அல்லது இல்லை — "approved", "active" அல்லது "in_effect" போன்ற மாறுபாடுகளால் எந்த தெளிவின்மையும் இல்லை.
-
முதல் நாளிலிருந்தே dependency traversal-க்காக வடிவமைக்கவும். dependencies field ADR IDs-ஐ strings-இன் list ஆகச் சேமித்து, ஒரு decision dependency graph-இல் edges-ஐ உருவாக்குகிறது. ஒரு hosting strategy முடிவு மாற்றப்படும்போது, அந்த hosting சூழலை அனுமானித்த ஒவ்வொரு downstream model selection ADR-ம் மதிப்பாய்வுக்காக flag செய்யப்பட வேண்டும். வெளிப்படையான dependency tracking இல்லாமல், இந்த cascading invalidations production incidents அவற்றை வெளிப்படுத்தும் வரை கவனிக்கப்படாமல் போகின்றன.
இந்தப் பிரிவில் நீங்கள் உருவாக்கிய schema, பின்வரும் அனைத்திற்கும் கட்டமைப்பு முதுகெலும்பாக அமைகிறது: மற்றொரு goal-இல் உள்ள weighted scoring engine, மற்றொரு goal-இல் உள்ள telemetry validation pipeline, மற்றொரு goal-இல் உள்ள dependency graph traversal மற்றும் மற்றொரு goal-இல் உள்ள governance dashboard. ஒவ்வொரு downstream அமைப்பும் ADRSchema instances-ஐ பயன்படுத்துகிறது மற்றும் data quality-ஐ உத்தரவாதப்படுத்த validate மற்றும் build_category_context கட்டாயப்படுத்தும் invariants-ஐ நம்பியுள்ளது.
Code Walkthrough
மேலே உள்ள decision taxonomy மற்றும் வடிவமைப்புக் கொள்கைகளின் அடிப்படையில், பின்வரும் Python அவற்றை concrete types ஆக மொழிபெயர்க்கிறது: DecisionCategory மற்றும் ADRStatus enums, மற்றும் validate மற்றும் is_expired methods கொண்ட ADRSchema dataclass. ஒரு typed ADR அமைப்பின் அடித்தளம், உங்கள் நிறுவனம் அங்கீகரிக்கும் ஒவ்வொரு முடிவு வகையையும் முழுமையாகப் பட்டியலிடும் ஒரு enum ஆகும்; அதனுடன் ஒவ்வொரு ADR record-இன் வடிவத்தையும் வரையறுக்கும் ஒரு dataclass இணைகிறது. ADRSchema ஒவ்வொரு record-ம் taxonomy-இலிருந்து எடுக்கப்பட்ட ஒரு category, வகை-குறிப்பிட்ட metadata-விற்கான structured context dictionary, weighted criteria matrix-க்கான criteria_weights mapping, இந்த முடிவை upstream ADRs-உடன் இணைக்கும் dependencies, மற்றும் அதை production சோதனைகளுடன் பிணைக்கும் telemetry_validators ஆகியவற்றைக் கொண்டிருப்பதை கட்டாயப்படுத்துகிறது.
Code snippetpython
1from dataclasses import dataclass, field 2from enum import Enum 3from datetime import datetime 4from typing import Optional 5import uuid 6 7class DecisionCategory(Enum): 8 MODEL_SELECTION = "model_selection" 9 HOSTING_STRATEGY = "hosting_strategy" 10 RAG_VS_FINE_TUNING = "rag_vs_fine_tuning" 11 GUARDRAIL_STRATEGY = "guardrail_strategy" 12 EMBEDDING_MODEL = "embedding_model" 13 ORCHESTRATION_PATTERN = "orchestration_pattern" 14 15class ADRStatus(Enum): 16 PROPOSED = "proposed" 17 ACCEPTED = "accepted" 18 SUPERSEDED = "superseded" 19 DEPRECATED = "deprecated" 20 REJECTED = "rejected" 21 22@dataclass 23class ADRSchema: 24 title: str 25 category: DecisionCategory 26 context: dict 27 decision: str 28 consequences: list[str] 29 criteria_weights: dict[str, float] = field(default_factory=dict) 30 dependencies: list[str] = field(default_factory=list) 31 alternatives_considered: list[dict] = field(default_factory=list) 32 status: ADRStatus = ADRStatus.PROPOSED 33 adr_id: str = field(default_factory=lambda: f"ADR-{uuid.uuid4().hex[:8]}") 34 created_at: datetime = field(default_factory=datetime.utcnow) 35 review_by: Optional[datetime] = None 36 superseded_by: Optional[str] = None 37 telemetry_validators: list[str] = field(default_factory=list) 38 39 def validate(self) -> bool: 40 if not self.title or not self.decision: 41 raise ValueError("ADR must have both title and decision text") 42 if not self.consequences: 43 raise ValueError("ADR must document at least one consequence") 44 if self.category == DecisionCategory.MODEL_SELECTION: 45 required = {"model_name", "provider", "use_case"} 46 if not required.issubset(self.context.keys()): 47 raise ValueError(f"Model selection ADR requires context keys: {required}") 48 if self.criteria_weights: 49 total = sum(self.criteria_weights.values()) 50 if abs(total - 1.0) > 0.01: 51 raise ValueError(f"Criteria weights must sum to 1.0, got {total}") 52 return True 53 54 def is_expired(self) -> bool: 55 if self.review_by is None: 56 return False 57 return datetime.utcnow() > self.review_by
DecisionCategory enum மூன்று முதன்மை GenAI வகைகளையும், production குழுக்களுக்குப் பொதுவாகத் தேவைப்படும் மூன்று விரிவாக்க வகைகளையும் பட்டியலிடுகிறது; ஒவ்வொன்றும் serialization-க்காக ஒரு snake_case மதிப்பைச் சேமிக்கிறது. ADRStatus முழு lifecycle-ஐயும் மாடல் செய்கிறது — PROPOSED-இலிருந்து ACCEPTED, SUPERSEDED, DEPRECATED அல்லது REJECTED வரை. ADRSchema dataclass ஒரு record கொண்டிருக்கும் ஒவ்வொரு field-ஐயும் அறிவிக்கிறது, இதில் criteria_weights decision matrix மற்றும் deployment-க்குப் பின் இயங்கும் telemetry_validators அடங்கும். validate method கட்டமைப்பு invariants-ஐ கட்டாயப்படுத்துகிறது — காலியல்லாத title மற்றும் decision, குறைந்தது ஒரு consequence, model-selection ADRs-க்கு தேவையான context keys, மற்றும் tolerance-க்குள் 1.0-க்கு கூட்டுத்தொகையாகும் criteria weights — எந்த மீறலுக்கும் ValueError-ஐ raise செய்கிறது. is_expired method, review_by deadline அமைக்கப்படாதபோது False-ஐத் திருப்புகிறது; இல்லையெனில் தற்போதைய UTC நேரத்தை அதனுடன் ஒப்பிடுகிறது, இதனால் governance dashboards stale முடிவுகளை வெளிக்கொணர முடியும். சரிபார்க்க, context keys model_name, provider மற்றும் use_case உடனும், 1.0-க்கு கூட்டுத்தொகையாகும் criteria_weights உடனும் ஒரு MODEL_SELECTION ADR-ஐ instantiate செய்து validate-ஐ அழைக்கவும் — அது True-ஐத் திருப்பும்போது அது வேலை செய்கிறது என்பதை நீங்கள் அறிவீர்கள்; அதே நேரத்தில் அந்த keys இல்லாத அல்லது weights 0.01-க்கு மேல் விலகிய ஒரு instance ValueError-ஐ raise செய்கிறது.
செய்ய வேண்டியவை மற்றும் செய்யக்கூடாதவை
செய்ய வேண்டியவை
validate()-ஐ அழைப்பதற்கு முன்context-ஐ தேவையான வகை-குறிப்பிட்ட keys-உடன் நிரப்பவும் —MODEL_SELECTIONADRs-க்கு,validate(){"model_name", "provider", "use_case"}என்பதுcontext.keys()-இன் subset ஆக இருக்கிறதா என்று சோதித்து, ஏதேனும் இல்லாவிட்டால்ValueError-ஐ raise செய்கிறது; இங்கே structured metadata-வை வழங்குவதே மாடல் முடிவுகளை free-text blobs ஆக இல்லாமல் query செய்யக்கூடியதாகவும் diff செய்யக்கூடியதாகவும் ஆக்குகிறது.criteria_weightsமதிப்புகள்validate()கட்டாயப்படுத்தும் 0.01 tolerance-க்குள் 1.0-க்கு கூட்டுத்தொகையாவதை உறுதிசெய்யவும் — இந்த methodsum(criteria_weights.values())-ஐ கணக்கிட்டு,[0.99, 1.01]-க்கு வெளியே உள்ள எந்த மொத்தத்தையும் நிராகரிக்கிறது; அமைதியாக விலகும் ஒரு weights dict (எ.கா., இரண்டு criteria ஒவ்வொன்றும்0.6) அந்த record எப்போதும்ACCEPTEDstatus-ஐ அடைவதைத் தடுத்து, முடிவின் நியாயத்தை வெளிப்படையாக வைக்க கட்டாயப்படுத்துகிறது.- ஒரு
review_bydatetime-ஐ அமைத்து,telemetry_validators-ஐ உண்மையான production சோதனைகளுடன் பிணைக்கவும் —review_byNoneஆக இருக்கும்போதுis_expired()எப்போதும்False-ஐத் திருப்புகிறது, எனவே governance dashboards stale முடிவுகளை ஒருபோதும் வெளிக்கொணர முடியாது; இரண்டு fields-ம் நிரப்பப்படாவிட்டால், ஆதாரம் எதிராகத் திரும்பிய ஒருMODEL_SELECTIONஅல்லதுRAG_VS_FINE_TUNINGADR ஒரு supersession-ஐ தூண்டுவதற்குப் பதிலாக தனதுACCEPTEDstatus-ஐ காலவரையின்றி வைத்திருக்கும்.
செய்யக்கூடாதவை
DecisionCategory-ஐ விரிவாக்குவதற்குப் பதிலாக ஒரு புதிய முடிவு வகையைcontext-இல் free-text entry ஆக வெளிப்படுத்த வேண்டாம் —DecisionCategoryenum உறுப்பினராக இல்லாத ஒவ்வொரு வகையும் (எ.கா.,HOSTING_STRATEGY,EMBEDDING_MODEL) typed taxonomy-க்கு வெளியே அமர்கிறது, எனவே அதை category மூலம் filter செய்யவோ,dependenciesவழியாக சார்ந்திருக்கவோ, அல்லது programmatically supersede செய்யவோ முடியாது — இது schema நீக்குவதற்காகவே இருக்கும் query செய்ய முடியாத free-text blobs-ஐ மீண்டும் உருவாக்குகிறது.- ADR-இன் விளைவு ஒரு upstream முடிவின் மீது கட்டமைக்கப்படும்போது
dependencies: list[str]-ஐ காலியாக விட வேண்டாம் — இந்த field downstream ADRs-ஐ அவை சார்ந்திருக்கும் records-உடன் இணைக்கும்adr_idstrings-ஐ வைத்திருக்கிறது; இதைத் தவிர்ப்பது என்பது ஒரு குறிப்பிட்டEMBEDDING_MODELஅல்லதுHOSTING_STRATEGYதேர்வின் மீது நிற்கும் ஒருRAG_VS_FINE_TUNINGADR-க்கு machine-readable இணைப்பு இல்லை என்பதாகும், எனவே upstream record-ஐ supersede செய்வது அனாதையான, செல்லாத முடிவுகளை அமைதியாக active ஆக விடுகிறது. validate()-இல்ValueError-ஐத் தவிர்க்கconsequences-ஐ நிரப்புவதைத் தவிர்க்க வேண்டாம் —self.consequencesகாலியாக இருந்தால்validate()வெளிப்படையாக raise செய்கிறது, மேலும் இந்த field தான்telemetry_validatorsdeployment-க்குப் பின் சரிபார்க்கும் textual contract; consequences இல்லாத ஒரு ADR-க்கு அளவிட எந்த கூறப்பட்ட முன்கணிப்புகளும் இல்லை, இதனால்telemetry_validators-இல் உள்ள ஒவ்வொரு entry-யும் நங்கூரமற்றதாகவும், மதிப்பாய்வு சுழற்சி அர்த்தமற்றதாகவும் ஆகிறது.
3 hands-on labs come with this lesson — real code, in a cloud IDE. Create a free account to run them. No card.
Free account · no card · straight to the labs
Or get the full path — from
Listen to this lesson
Audio overviews of this lesson's labs and its chapter, from GenBodha Bytes.
More free lessons in GenAI Architecture & Design Patterns
- Ch 1Build ADR schema and decision taxonomy for GenAI technology choicesYou are here
- Ch 1Validate ADR decisions against production telemetry
- Ch 1Implement ADR recommendation engine using historical outcomes
- Ch 1Create ADR governance dashboard and compliance audit
- Ch 4Build eval gate component with pluggable evaluator registry
- Ch 4Measure eval gate effectiveness with precision-recall tracking
- Ch 4Create eval architecture audit report with coverage analysis