AI Observability

مراقبة أداء الذكاء الاصطناعي المستقلة عن المزود باستخدام OpenTelemetry

مع تحول النماذج اللغوية الكبيرة (LLMs) إلى محور التطبيقات الحديثة، أصبح ضمان موثوقيتها وكفاءتها من حيث التكلفة وأدائها أمراً بالغ الأهمية. غالباً ما تفشل أدوات المراقبة التقليدية في تتبع سير العمل المعقد وغير الحتمي للذكاء الاصطناعي التوليدي. هنا تبرز قوة OpenTelemetry (OTel)، حيث توفر معياراً موحداً ومستقلاً عن المزود لبيانات التيليمتري (Telemetry).

تحديات مراقبة أداء نماذج LLM

تختلف عملية مراقبة أداء نماذج LLM بشكل كبير عن مراقبة واجهات برمجة التطبيقات (APIs) التقليدية. يجب عليك التقاط ليس فقط زمن الاستجابة (Latency) وأكواد الحالة، بل أيضاً قوالب المطالبة (Prompt templates)، وعدد الرموز (Token counts)، وإصدارات النماذج، وبيانات التعريف للاستجابة. وبدون نهج موحد، تخاطر بالحبس داخل SDK مزود معين، مما يجعل من الصعب التبديل بين المزودين أو تجميع البيانات عبر خدمات ذكاء اصطناعي متعددة.

البدء باستخدام مكتبات OpenTelemetry للـ LLM

تقوم مكتبات مراقبة أداء نماذج LLM الخاصة بـ OpenTelemetry (خاصة لنظامي Python و Node.js) بتجريد تعقيد إنشاء مسارات تتبع (Traces) لمزودي نماذج مختلفين. فهي تنشئ تلقائياً مسارات (Spans) للمطالبات، والإجابات، والتضمينات (Embeddings)، مما يضمن الاتساق بغض النظر عما إذا كنت تستخدم OpenAI، أو Anthropic، أو مثيل Ollama المحلي.

التطبيق العملي في Python

لنلقِ نظرة على مثال عملي باستخدام SDK الخاص بـ Python. أولاً، تحتاج إلى تثبيت الحزم اللازمة:

pip install opentelemetry-api opentelemetry-sdk \
     opentelemetry-exporter-otlp \
     opentelemetry-instrumentation-llm

بعد ذلك، قم بتكوين أداة التتبع (Tracer) ومراقبة عميل LLM الخاص بك. يوضح الكود التالي كيفية إعداد المصدر (Exporter) وتطبيق المراقبة:

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.instrumentation.llm import OpenTelemetryLLMInstrumentor

# إعداد مزود أداة التتبع
trace.set_tracer_provider(TracerProvider())

# تكوين مصدر OTLP لإرسال البيانات إلى الخلفية الخاصة بك
exporter = OTLPSpanExporter(endpoint="localhost:4317")
trace.get_tracer_provider().add_span_processor(
    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                trace.get_tracer_provider().get_tracer(__name__).get_tracer_provider().add_span_processor(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    trace.get_tracer_provider().get_tr
    
Share: