Phase 19: Capstone Projects

Capstone 11 LLM مشاهده و Eval Dashboard

لانگفوز به طور کاملاً باز شد آریز فینکس نقشه های 2026 GenAI semconv را منتشر کرد. هلیکون و برینترست هر دو در نسبت هزینه های هر کاربر دو برابر شده اند. OpenLLMetry Traceloop به عنوان ابزار SDK واقعی تبدیل شد. شکل تولید ClickHouse برای ردیف ها، Postgres برای متادتا، Next.js برای UI، و یک ارتش کوچک از کارهای ارزیابی (DeepEval، RAGAS، LLM-judge) که بر روی ردیف نمونه ها اجرا می شود. یک میزبان خود را بسازید، از حداقل چهار خانواده SDK مصرف کنید و نشان دهید که در کمتر از پنج دقیقه بازپسین تزریق شده را می گیرید.

Type: Capstone

Languages: TypeScript (UI), Python / TypeScript (ingest + evals), SQL (ClickHouse)

Prerequisites: Phase 11 (LLM engineering), Phase 13 (tools), Phase 17 (infrastructure), Phase 18 (safety)

Phases exercised:P11 · P13 · P17 · P18

Time: 25 hours

مشکل

هر تیم هوش مصنوعی که در سال 2026 ترافیک تولید را اجرا می کند یک سطح مشاهده ای را در کنار مدل نگه می دارد. هزینه های مربوط به هزینه تشخیص توهم نظارت بر حرکت . سیگنال "جیل بریک" داشبورد های SLO اطلاعات اطلاعاتي از تخلیه اطلاعات مرجع های منبع باز Langfuse، Phoenix، OpenLLMetry به عنوان طرح مصرفی بر روی کنوانسیون های معنوی OpenTelemetry GenAI به هم پیوستند. شما اکنون می توانید ابزار OpenAI، Anthropic، Google، LangChain، LlamaIndex و vLLM را با یک SDK و ارسال دامنه های سازگار انجام دهید.

شما یک داشبورد خود میزبان را ایجاد خواهید کرد که از حداقل چهار خانواده SDK استفاده می کند، مجموعه ای کوچک از کارهای ارزیابی را بر روی ردیاب نمونه ها اجرا می کند، حرکت و هشدارها را تشخیص می دهد. ردیف اندازه گیری: با توجه به بازگشت به طور عمدی تزریق شده (یک پیامک که تولید PII را آغاز می کند) ، داشبورد آن را دریافت می کند و هشدار را در کمتر از پنج دقیقه اجرا می کند.

مفهوم

Ingest OTLP HTTP است. SDK دامنه GenAI-semconv را تولید می کند: gen_ai.system،gen_ai.request.model،gen_ai.usage.input_tokens،gen_ai.response.id،llm.prompts،llm.completions. در ClickHouse برای تجزیه و تحلیل ستون ها زمین می گیرد؛ متادتا (کاربری، جلسات، برنامه ها) در Postgres زمین می گیرد.

Evals به عنوان کار دسته ای بر روی ردیف های نمونه ای اجرا می شود. DeepEval وفاداری، سمی و ارتباط پاسخ را نشان می دهد. RAGAS متریک های بازیافت را زمانی که ردیف زمینه بازیافت را دارد، نشان می دهد. قاضیان LLM سفارشی چک های خاص دامنه را اجرا می کنند (فشای PII، پاسخ خارج از سیاست). Eval runs به همان ClickHouse به عنوان دامنه های ارزیابی مرتبط با ردیف اصلی بازیافت می کند.

تشخیص جریان، توزیع فضای گنجانده در طول زمان (با توجه به انحراف PSI یا KL در گنجانده های فوری) و همچنین روند ارزیابی را مشاهده می کند. هشدارها به Prometeus Alertmanager و سپس Slack / PagerDuty تغذیه می کنند. UI Next.js 15 با Recharts است.

معماری

production apps:
  OpenAI SDK  +  Anthropic SDK  +  Google GenAI SDK
  LangChain + LlamaIndex + vLLM
       |
       v
  OpenTelemetry SDK with GenAI semconv
       |
       v  OTLP HTTP
  collector (ingest, sample, fan-out)
       |
       +-------------+-----------+
       v             v           v
   ClickHouse    Postgres    S3 archive
   (spans)       (metadata)  (raw events)
       |
       +---> eval jobs (DeepEval, RAGAS, LLM-judge)
       |     sampled or all-trace
       |     write eval spans back
       |
       +---> drift detector (PSI / KL on prompt embeddings)
       |
       +---> Prometheus metrics -> Alertmanager -> Slack / PagerDuty
       |
       v
   Next.js 15 dashboard (Recharts)

دسته

  • مصرف: SDK های OpenTelemetry + کنوانسیون های معنوی GenAI؛ حمل و نقل HTTP OTLP
  • جمع کننده: جمع کننده OpenTelemetry با پردازنده نمونه گیری دم (برای کنترل هزینه)
  • ذخیره سازی: ClickHouse برای مدت زمان، Postgres برای متاداتا، S3 برای آرشیو رویداد خام
  • Evals: DeepEval، RAGAS 0.2، آریز فینیکس بسته ارزیابی کننده، قاضی LLM سفارشی
  • انحراف: PSI / KL در هر هفته در پیوند های فوری جمع آوری شده (ترانسفارمرهای جمله)
  • هشدار: Prometheus Alertmanager -> Slack / PagerDuty
  • UI: Next.js 15 App Router + Recharts + server اعمال
  • SDK های پشتیبانی شده از جعبه: OpenAI، Anthropic، Google GenAI، LangChain، LlamaIndex، vLLM

آن را بسازید

  1. Collector config.OpenTelemetry Collector با گیرنده HTTP OTLP، یک نمونه گیری دم که ۱۰۰٪ از ردیابی های اشتباه و ۱۰٪ از موفقیت ها را حفظ می کند و صادرات به ClickHouse و S3 است.
  1. ClickHouse schema.جدولspansبا ستون هایی که نشان دهنده GenAI semconv هستند: gen_ai_system،gen_ai_request_model،input_tokens،output_tokens،latency_ms،prompt_hash،trace_id،parent_span_id، به علاوه کیف JSON برای بارهای مفید طولانی. شاخص های ثانویه را با user_id و app_id اضافه کنید.
  1. SDK coverage test.یک برنامه مشتری کوچک با استفاده از هر SDK (OpenAI، Anthropic، Google، LangChain، LlamaIndex، vLLM) با ابزار خودکار OpenLLMetry بنویسید. هر یک از آنها دامنه های GenAI کانونیک را تولید می کند که در ClickHouse فرود می آید.
  1. Eval jobs.یک کار برنامه ریزی شده، ردیابی نمونه های 15 دقیقه اخیر را می خواند و وفاداری، سمی بودن و ارتباط پاسخ را در DeepEval اجرا می کند. نتایج در طول زمان ارزیابی مرتبط با ردیابی اصلی است.
  1. Custom LLM-judge.یک قاضی در مورد دزدی اطلاعات شخصی: اگر پاسخ داده شود، یک نگهبان LLM را برای امتیاز احتمال دزدی اطلاعات شخصی تماس بگیرید. پاسخ های بالا در صف انتخاب قرار می گیرند.
  1. Drift detection.شغل هفتگی حساب PSI بین جمع آوری برنامه های فوری این هفته و خط پایه 4 هفته بعد می کند.
  1. Dashboard.Next.js 15 با صفحات: مرور کلی (مدد / ثانیه، هزینه / کاربر، تاخیر p95) ، ردیابی (تلاش + آبشار) ، ارزیابی (مزه وفاداری، سمی) ، حرکت (PSI در طول زمان) ، هشدارها.
  1. Alerting chain.صادر کننده Prometheus مجموعه های امتیاز ارزیابی و درصد های تاخیر را می خواند؛ مسیرهای Alertmanager به Slack برای هشدارها و PagerDuty برای نقض های حیاتی.
  1. Regression probe.یک خطا تزریق کنید: چت روت ارزیابی شده شروع به لیک کردن SSN های جعلی می کند 1٪ از زمان. MTTR را اندازه گیری کنید: از خطا به هشدار Slack.

ازش استفاده کن

$ curl -X POST https://my-otel-collector/v1/traces -d @trace.json
[collector]  accepted 1 trace, 3 spans
[clickhouse] inserted 3 spans (app=chat, user=u_42)
[eval]       DeepEval faithfulness 0.82, toxicity 0.03
[drift]      weekly PSI 0.08 (below 0.2 threshold)
[ui]         live at https://obs.example.com

-باده

outputs/skill-llm-observability.mdدر یک برنامه LLM، داشبورد ردیابی خود را جذب می کند، ارزیابی ها، هشدارهای در مورد حرکت را اجرا می کند و در Next.js تقسیم هزینه / کاربر را نشان می دهد.

WeightCriterionHow it is measured
25Trace-schema coverageNumber of SDK families producing canonical GenAI spans (target: 6+)
20Eval correctnessDeepEval / RAGAS scores vs hand-labeled set
20Dashboard UXMTTR on injected regression (under 5 minutes target)
20Cost / scaleSustained ingest at 1k spans/sec without backlog
15Alerting + drift detectionPrometheus/Alertmanager chain exercised end to end
100

تمرینات

  1. ابزار سفارشی برای چارچوب Haystack اضافه کنید. دامنه های قانونی را در ClickHouse با faithful تایید کنید gen_ai.*ویژگی ها
  1. با DeepEval براي ارزیابی کننده هاي فنيکس در همان مسیرها عوض کنين
  1. تیز کردن آشکارساز حرکت: محاسبه PSI به هر app-ID به جای جهانی نشان دهید مسیرهای حرکت در هر app.
  1. صفحه "تأثر کاربر" را اضافه کنید: هزینه به هر کاربر و نرخ شکست به هر کاربر با خطوط پرتاب.
  1. ایجاد یک سیاست نمونه گیری دم که 100٪ از آثار با سمی بودن > 0.5 و یک نمونه طبقه بندی شده 10٪ از بقیه را حفظ کند.

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
GenAI semconv"OTel LLM attributes"2025 OpenTelemetry spec for LLM span attributes (system, model, tokens)
Tail sampling"Post-trace sample"Collector decides to keep or drop a trace after it completes (can peek errors)
PSI"Population stability index"Drift metric comparing two distributions; > 0.2 typically signals meaningful drift
LLM-judge"Eval as model"An LLM scoring another LLM's output on a rubric (faithfulness, toxicity, PII)
Tail-sampling policy"Keep-rule"Rule that decides which traces to persist vs drop; errored + sample-rate
Eval span"Linked eval trace"Child span carrying an eval score linked to the original LLM call span
Cost per user"Unit economics"Dollar cost attributed to a user_id over a window; key product metric

خواندن بیشتر

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.