Workstation تکنیکی مختصر: LLM اور ملٹی ایجنٹ کی رکاوٹوں کو کیسے ننگا کریں۔ اوپن ٹیلی میٹری, Prometheus/Grafana/Thanos، اور LLM پلیٹ فارمز جیسے لینگ فیوز / ایل ایم این آر - بشمول اسپین اسکیماس، لاگت کا انتساب، نمونے لینے، اور سخت استعمال کے کیپس۔ ساتھی: کاروباری بلاگ · سرونگ: ٹربو چارجنگ LLMs لیب: انٹرپرائز اے آئی لیب.
- مسئلہ: ایجنٹ کی لاگت اور تاخیر کو ہاپس میں چھپائیں (LLM → ٹولز → RAG → دوبارہ کوششیں)، کسی ایک "ماڈل سست ہے" میٹرک میں نہیں۔
- معیاری: اوپن ٹیلی میٹری والا آلہ؛ ٹوکنز، ماڈل، کرایہ دار، راستہ، تخمینہ_قیمت_یو ایس ڈی کے لیے ایک انتساب اسکیمہ۔
- میٹرکس کا راستہ: سنہری اشاروں کے لیے پرومیتھیس (+ Thanos)؛ SLOs اور FinOps بورڈز کے لیے گرافانا۔
- LLM راستہ: Langfuse/LMNR نشانات، اسکور، ڈیٹاسیٹس، فوری ورژن کے لیے۔
- کنٹرول: کیپ ٹوکن، ٹول کالز، اور ڈیبگ راؤنڈ؛ راستے کے ماڈلز بہ قدم مشکل۔
- جیت: مزید GPUs خریدنے یا API کوٹہ بڑھانے سے پہلے لاگت-فی-کامیاب-ٹاسک کی پیمائش کریں۔
1. LLM ایجنٹوں کے لیے "بوٹلنک" کا کیا مطلب ہے۔
تربیت کے وقت کی رکاوٹیں (ڈیٹا، FLOPs) سرونگ ٹائم سے مختلف ہوتی ہیں اور ایجنٹ کا وقت رکاوٹیں پیداواری ایجنٹوں میں فضلہ کے غالب طریقے یہ ہیں:
- فوری پھولنا - بڑے سسٹم کے اشارے، غیر استعمال شدہ سیاق و سباق، گمشدہ سابقہ/کیشے ہٹ۔
- ماڈل اوور کِل — فرنٹیئر ماڈلز کو درجہ بندی/راستہ کے مراحل کے لیے استعمال کیا جاتا ہے جو ایک چھوٹا ماڈل کر سکتا ہے۔
- بے حد لوپس — ٹول کی دوبارہ کوششیں اور سخت بجٹ کے بغیر خود ڈیبگ سائیکل (Self-Debugging ٹریڈ آف دیکھیں ٹربو چارجنگ LLMs).
- بیرونی انتظار - ویکٹر DB، SaaS APIs، اور ہیومن-ان-دی-لوپ گیٹس "LLM لیٹنسی" سے غلط منسوب ہیں۔
- فریگمنٹیشن کی خدمت کرنا GPU (PagedAttention/vLLM خطہ) پر KV کیشے کا فضلہ جب آپ پہلے ہی اس بات کی تصدیق کر چکے ہوں کہ ایجنٹ کا گراف درست ہے۔
تقسیم شدہ نشانات کے بغیر آپ ان کو الگ نہیں کر سکتے۔ اس لیے مشاہدہ کرنے کے لیے اچھا ڈیش بورڈ نہیں ہے — یہ AI پروڈکٹس پر FinOps اور SRE کے لیے کنٹرول پلین ہے۔
2. حوالہ فن تعمیر
User / Orchestrator
→ Agent runtime (tools, RAG, LLM calls)
→ OpenTelemetry SDK (spans + metrics)
→ OTEL Collector (filter, sample, redact)
├─→ Prometheus / Thanos (rates, costs, SLOs)
├─→ Grafana (boards, alerts)
└─→ Langfuse / LMNR (traces, scores, datasets)
FinOps / policy layer reads the same metrics to enforce caps and model routing.
3. LLM کالز کے لیے OpenTelemetry اسپین اسکیما
فریم ورک میں ایک کنونشن کو اپنائیں (LangChain، کسٹم Go/Python ایجنٹس، Bedrock SDKs)۔ سیمنٹک کنونشنز کو ترجیح دیں جہاں وہ موجود ہوں، اور مستحکم Workstation صفات کے ساتھ توسیع کریں:
| وصف | مثال | کیوں |
|---|---|---|
gen_ai.system | openai / anthropic / bedrock / vllm | فراہم کنندہ رول اپس |
gen_ai.request.model | claude-sonnet-4/llama-3.1-8b | ماڈل کے لحاظ سے لاگت اور معیار |
gen_ai.usage.input_tokens | 1820 | فوری قیمت ڈرائیور |
gen_ai.usage.output_tokens | 410 | تکمیل کی لاگت ڈرائیور |
wsw.estimated_cost_usd | 0.0124 | FinOps بعد میں پرائس شیٹس میں شامل کیے بغیر |
wsw.tenant_id | acme-prod | چارج بیک |
wsw.route | support.triage | مصنوعات کی خصوصیت کا انتساب |
wsw.agent_step | منصوبہ / ٹول / تنقید | مہنگے اقدامات تلاش کریں۔ |
wsw.retry_n | 2 | لوپ کا پتہ لگانا |
wsw.prompt_version | triage@v17 | رجعت کا ربط |
from opentelemetry import trace
from opentelemetry.trace import Status, StatusCode
tracer = trace.get_tracer("workstation.agents")
PRICE_IN = 0.003 / 1000 # example $/token — load from config
PRICE_OUT = 0.015 / 1000
def complete_llm(model: str, prompt: str, tenant: str, route: str):
with tracer.start_as_current_span("gen_ai.chat") as span:
span.set_attribute("gen_ai.system", "openai")
span.set_attribute("gen_ai.request.model", model)
span.set_attribute("wsw.tenant_id", tenant)
span.set_attribute("wsw.route", route)
try:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
usage = resp.usage
cost = usage.prompt_tokens * PRICE_IN + usage.completion_tokens * PRICE_OUT
span.set_attribute("gen_ai.usage.input_tokens", usage.prompt_tokens)
span.set_attribute("gen_ai.usage.output_tokens", usage.completion_tokens)
span.set_attribute("wsw.estimated_cost_usd", round(cost, 6))
return resp.choices[0].message.content
except Exception as e:
span.record_exception(e)
span.set_status(Status(StatusCode.ERROR, str(e)))
raise
مشق: حساب estimated_cost_usd مدت میں پرائس شیٹس میں ٹوکن شمار میں شامل ہونے کے لیے رات کی نوکری کا انتظار نہ کریں — آن کال اور پروڈکٹ کے مالکان کو لائیو FinOps کی ضرورت ہے۔
3b. ملٹی ایجنٹ اسپین کا درجہ بندی اور سامان
ایجنٹ کے گراف کو ایک مستحکم والدین/بچوں کے ماڈل کی ضرورت ہوتی ہے تاکہ لاگت صحیح طریقے سے بڑھے:
session (root)
└─ agent.run {wsw.route, wsw.tenant_id}
├─ rag.retrieve {wsw.agent_step=retrieve}
├─ gen_ai.chat {wsw.agent_step=plan, model=…}
├─ tool.execute {tool=…, wsw.retry_n}
├─ gen_ai.chat {wsw.agent_step=synthesize}
└─ eval.score {score.name, score.value}
- ایک روٹ فی صارف کام - فی LLM کال نہیں۔ سیشن کی لاگت = بچے کی رقم
wsw.estimated_cost_usd. - سامان - پھیلانا
wsw.tenant_idاورwsw.routeasync کارکنوں/قطاروں میں اس لیے ٹول اسپین ہر کال سائٹ کو دوبارہ پلمبنگ کیے بغیر چارج بیک لیبلز کو وراثت میں لے جاتا ہے۔ - لنکس — جب ایک ذیلی ایجنٹ ایک نیا ٹریس شروع کرتا ہے (مثلاً علیحدہ قطار صارف)، اسپین لنکس کو پیرنٹ سیشن میں واپس استعمال کریں تاکہ Langfuse/Grafana اب بھی گراف کو سلائی کر سکے۔
- ہمیشہ - نمونہ اعلی قیمت - خوشگوار راستوں کے لیے 5-20% پر سر کے نمونے لینا ٹھیک ہے۔ جب سیشن کا خرچ حد سے تجاوز کر جائے یا اسٹیٹس = ERROR تو نمونہ کو مجبور کریں۔
4. میٹرکس جو اہم ہیں (پرومیتھیس)
ہسٹوگرام اور کاؤنٹرز برآمد کریں (OTEL میٹرکس یا پرومیتھیس کلائنٹ کے ذریعے)۔ کم از کم قابل عمل سیٹ:
llm_requests_total{model,route,status}llm_tokens_total{model,direction}جہاں سمت ∈ {ان پٹ، آؤٹ پٹ}llm_estimated_cost_usd_total{model,tenant,route}llm_ttft_seconds/llm_e2e_secondsہسٹگرامسagent_tool_calls_total{tool,status}agent_retries_total{route}agent_task_success_total{route}- قیمت فی کامیابی کے لیے ڈینومینیٹر
ماخوذ FinOps سوالات (PromQL خاکے):
# Cost per successful task (last 1h), by route sum(rate(llm_estimated_cost_usd_total[1h])) by (route) / sum(rate(agent_task_success_total[1h])) by (route) # Retry tax sum(rate(agent_retries_total[1h])) by (route) / sum(rate(llm_requests_total[1h])) by (route)
تھانوس (یا Mimir/Cortex) اس وقت اہمیت رکھتا ہے جب فنانس سہ ماہی سے زیادہ سہ ماہی ماڈل کے اخراجات کا مطالبہ کرتا ہے۔ مقامی پرومیتھیس اکیلے آن کال کے لیے ٹھیک ہے۔ یہ FinOps آرکائیو نہیں ہے۔
5. گرافانا بورڈز اور الرٹس
ایک ڈیٹا سورس سے تین سامعین بھیجیں:
- آن کال: غلطی کی شرح، p95 e2e، انحصار کی ناکامیاں (ویکٹر ڈی بی / ٹولز)۔
- پلیٹ فارم: ٹوکنز/s، GPU util (اگر خود میزبان ہو)، قطار کی گہرائی، TTFT۔
- FinOps / پروڈکٹ: کرایہ دار اور راستے کے لحاظ سے $/کامیابی، اعلیٰ مہنگے اشارے، ماڈل مکس۔
جلنے پر الرٹ، باطل پر نہیں:
- لاگت فی کامیابی > بجٹ SLO برائے 30m
- ایک راستے کے لیے دوبارہ کوشش کی شرح> 15%
- بڑھتے ہوئے ان پٹ ٹوکنز کے ساتھ p95 e2e کی خلاف ورزی (فوری ریگریشن)
6. LLM- مقامی پلیٹ فارم: Langfuse, LMNR، اور دوست
میٹرکس آپ کو بتاتے ہیں۔ کہ لاگت میں اضافہ؛ LLM پلیٹ فارم آپ کو بتاتے ہیں۔ جس کا فوری ورژن اور کون سا ٹول اسپین یہ کیا لینگ فیوز اور ایل ایم این آر اس کلاس کی اوپن سورس مثالیں ہیں:
- درجہ بندی کے نشانات (سیشن → ایجنٹ → LLM / ٹول اسپین)
- انسانی اور LLM-بطور جج سکور
- جب آپ اشارے تبدیل کرتے ہیں تو آف لائن ایول کے لیے ڈیٹا سیٹ
- مصنوعات کی بہتری کے لیے اختیاری استعمال ٹیلی میٹری (رازداری کی پالیسیوں کا احترام کریں)
انٹیگریشن پیٹرن: OTEL کو SRE کے ریکارڈ کے نظام کے طور پر رکھیں۔ فوری انجینئرنگ کے لیے لینگ فیوز میں دوہری برآمد یا پل۔ ایک دوسری، غیر مطابقت پذیر صفت لغت ایجاد نہ کریں۔
فریم ورک کے تجربات جیسے فنکشن فرسٹ ایجنٹ رن ٹائمز (تاریخی طور پر اسٹرکچرڈ سٹریمنگ ایجنٹس کے ارد گرد مارکیٹنگ) بوائلر پلیٹ کو کم کر سکتے ہیں، لیکن طاق فریم ورک کو اختیاری کے طور پر مانتے ہیں - مشاہداتی معیارات ان سے زیادہ رہتے ہیں۔
7. اسکورنگ پائپ لائن: دستی بمقابلہ خودکار
| طریقہ | عمل درآمد | ناکامی موڈ |
|---|---|---|
| دستی | Langfuse UI میں انگوٹھوں/روبرکس؛ سونے کے سیٹ کے جائزے. | پیمانہ نہیں ہے؛ اب بھی انشانکن کے لیے درکار ہے۔ |
| خودکار | LLM-بطور جج، یونٹ کی جانچ پڑتال، اسکیما کی توثیق کرنے والے، بازیافت کی یاد۔ | جج بڑھے; گیمنگ اگر صرف جج کے لیے بہتر ہو۔ |
اسکورز کو اسپین ایونٹس یا لینگ فیوز اسکورز کے ذریعے منسلک کریں۔ wsw.prompt_version. پرامپٹس کے گیٹ پروموشنز اسی طرح جیسے آپ ایپ ورژنز کو گیٹ کرتے ہیں — کوڈ کے لیے Ring Promoter؛ اشارے کے لئے eval دروازے.
8. لاگت کی بچت کا عمل (تفصیلی)
- بیس لائن ہفتہ: رویے میں کوئی تبدیلی نہیں؛ صرف آلہ. $/کامیابی، ٹوکن/کامیابی، دوبارہ کوشش کی شرح کیپچر کریں۔
- انتساب: اخراجات × حجم کے لحاظ سے راستوں کی درجہ بندی کریں۔ سب سے اوپر تین چنیں۔
- ماڈل روٹنگ: تقسیم کی درجہ بندی/چھوٹے/مقامی ماڈلز میں اقتباس؛ ترکیب کے لیے سرحد رکھیں۔ معیار کے اسکور کی دوبارہ پیمائش کریں۔
- فوری سرجری: غیر استعمال شدہ ٹول سکیموں کو ہٹا دیں؛ چند شاٹس کو مختصر کرنا؛ جہاں محفوظ ہو وہاں پریفکس کیشے کو فعال کریں۔
- لوپ کیپس: میکس ٹول کالز، میکس سیلف ڈیبگ راؤنڈز، سرکٹ بریکرز کے ساتھ ایکسپونینشل بیک آف۔
- نمونے لینے: 100% میٹرکس رکھیں؛ نمونے کے نشانات (مثلاً 5–20%) کے علاوہ غلطیوں اور زیادہ لاگت والے سیشنز کے لیے ہمیشہ آن سیمپلنگ۔
- رد عمل: برآمد کرنے سے پہلے اسپین کی خصوصیات سے PII کو ہٹا دیں؛ TTL کے ساتھ صرف منظور شدہ اسٹورز میں مکمل پرامپٹس اسٹور کریں۔
- کیڈنس کا جائزہ لیں: ہفتہ وار FinOps بورڈ؛ انسانوں کے خلاف ماہانہ جج انشانکن۔
8b لائیو بجٹ کے ساتھ ایجنٹ کے استعمال کا انتظام کرنا
صرف ڈیش بورڈ ہی بھاگنے والے ایجنٹوں کو نہیں روکتے۔ رن ٹائم میں بجٹ کو نافذ کریں، اسپین ایونٹ کے طور پر فیصلے کا اخراج کریں، اور جب سیشن اکثر حد سے گزرتے ہیں تو الرٹ کریں:
# Pseudocode: hard budget around an agent session
class Budget:
def __init__(self, max_usd=0.50, max_tool_calls=8, max_llm_calls=12):
self.max_usd, self.max_tool_calls, self.max_llm_calls = max_usd, max_tool_calls, max_llm_calls
self.spent = 0.0
self.tools = self.llms = 0
def charge(self, usd: float, kind: str):
self.spent += usd
if kind == "tool":
self.tools += 1
else:
self.llms += 1
if self.spent > self.max_usd or self.tools > self.max_tool_calls or self.llms > self.max_llm_calls:
raise RuntimeError("agent budget exhausted")
- فی سیشن کیپس - USD، LLM کالز، ٹول کالز (اوپر)۔
- فی کرایہ دار روزانہ کوٹہ - ریڈیس/کاؤنٹر کی طرف سے کلید
wsw.tenant_id; تھک جانے پر ایک کنٹرول شدہ انحطاطی راستہ واپس کریں۔ - فی روٹ ماڈل پالیسی - کے لیے اجازت یافتہ ماڈل
support.triageبمقابلہlegal.draft; پالیسی مس اور ریکارڈ پر مسترد یا نیچے شفٹwsw.policy_action=downshift. - غیرت مند آلے کی چابیاں - ہیش ٹول آرگس تاکہ دوبارہ کوششیں بیرونی APIs کو ڈبل بل نہ کریں۔
- لاگت کا فارمولا —
cost = in_tokens × p_in + out_tokens × p_out + tool_fees; ریفریشp_in/p_outایک ورژن شدہ قیمت کی شیٹ سے تاکہ تاریخی تھانوس ڈیٹا موازنہ رہے۔
کیپس لینڈ کے بعد دیکھنے کے لیے میٹرک: agent_budget_exhausted_total{route,reason}. اسپائک کا مطلب ہے یا تو زیادتی، ٹوٹا ہوا ٹول لوپ، یا ایسا بجٹ جو حقیقی کام کے بوجھ کے لیے بہت تنگ ہے۔
9. کلکٹر کنفیگریشن خاکہ
# otel-collector-config.yaml (illustrative)
receivers:
otlp:
protocols:
http:
grpc:
processors:
memory_limiter: {}
batch: {}
attributes/redact:
actions:
- key: gen_ai.prompt
action: delete
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
otlp/langfuse:
endpoint: "${LANGFUSE_OTLP_ENDPOINT}"
headers:
Authorization: "Bearer ${LANGFUSE_KEY}"
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, attributes/redact, batch]
exporters: [otlp/langfuse]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [prometheus]
10. فوائد، نقصانات، اور کب پریشان نہ ہوں۔
فوائد: چارج بیک، تیز تر واقعہ ٹرائیج، فوری/ماڈل کی تبدیلیوں پر قابل پیمائش ROI، تعمیل دوستانہ آڈٹ ٹریلز، ML اور پلیٹ فارم ٹیموں کے درمیان مشترکہ زبان۔
نقصانات: آلات قرض؛ اگر آپ ہر اشارے کو ہمیشہ کے لیے رکھتے ہیں تو ذخیرہ کرنے کی قیمت؛ PII کو غلط بیک اینڈ میں بھیجنے کا خطرہ؛ انجینئرز کو سیکھنے کے لیے ایک اور کنسول۔
چھوڑ دیں (ابھی کے لیے) اگر: آپ کے پاس ایک ہی آف لائن بیچ جاب ہے جس میں مقررہ یومیہ اخراجات ہیں اور کوئی انٹرایکٹو ایجنٹ نہیں ہیں۔ پھر بھی لاگ ٹوکن؛ مکمل ملٹی بیک اینڈ اسٹیک کو چھوڑ دیں جب تک کہ ہم آہنگی ظاہر نہ ہو۔
11. مائیگریشن چیک لسٹ
- ☐ ایجنٹ کے رن ٹائم میں OTEL SDK؛ کلسٹر میں کلیکٹر
- ☐ Span کی خصوصیات میں ماڈل، ٹوکن، لاگت، کرایہ دار، راستہ شامل ہیں۔
- ☐ Prometheus metrics + Grafana FinOps بورڈ
- ☐ لینگ فیوز (یا LMNR) کم از کم ایک اہم راستے کے لیے وائرڈ ہے۔
- ☐ ٹوکنز / ٹولز / دوبارہ کوششوں پر ہارڈ کیپس
- ☐ اصلاح کی پالیسی کا سیکیورٹی کے ذریعے جائزہ لیا گیا۔
- ☐ سرفہرست راستوں کے لیے $/کامیابی کا ہفتہ وار جائزہ
- ☐ دستاویز ADR لنکنگ مشاہداتی → سرونگ (vLLM) → پروموشن (Ring Promoter)
12. متعلقہ Workstation مواد
- کاروباری بلاگ ساتھی
- ٹربو چارجنگ LLMs - رکاوٹ کو دیکھنے کے بعد سرونگ کو ٹھیک کریں۔
- Ring Promoter - صحت کے دروازے کے ساتھ ایجنٹ کی خدمات کو فروغ دیں۔
- Muse Glimmer / مقامی ایجنٹ
- Workstation سے رابطہ کریں۔ انٹرپرائز AI لیب مصروفیات کے لیے
حوالہ جات
کی طرف سے شائع Workstation.