AI Observability

مشاهده‌پذیری هوش مصنوعی مستقل از فروشنده با OpenTelemetry

با تمرکز مدل‌های زبانی بزرگ (LLMs) در برنامه‌های مدرن، اطمینان از قابلیت اطمینان، کارایی هزینه و عملکرد آن‌ها حیاتی است. ابزارهای نظارتی سنتی اغلب در ردیابی جریان‌های کاری پیچیده و غیرقطعی هوش مصنوعی مولد ناتوان‌اند. اینجاست که OpenTelemetry (OTel) درخشش می‌کند و یک استاندارد یکپارچه و مستقل از فروشنده برای داده‌های تله‌متری ارائه می‌دهد.

چالش ابزارک‌نویسی LLM

ابزارک‌نویسی LLM‌ها تفاوت قابل توجهی با نظارت استاندارد API دارد. شما باید نه تنها تأخیر و کدهای وضعیت، بلکه قالب‌های پرامپت، تعداد توکن‌ها، نسخه‌های مدل و متادیتای پاسخ را ثبت کنید. بدون یک رویکرد استاندارد، شما خود را در قید SDK یک فروشنده خاص گرفتار می‌کنید و تغییر ارائه‌دهندگان یا تجمیع داده‌ها در چندین سرویس هوش مصنوعی را دشوار می‌سازید.

شروع با کتابخانه‌های LLM OpenTelemetry

کتابخانه‌های ابزارک‌نویسی LLM OpenTelemetry (به‌طور خاص برای Python و Node.js) پیچیدگی ایجاد ردیابی برای ارائه‌دهندگان مختلف مدل را انتزاع می‌کنند. آن‌ها به‌طور خودکار اسپن‌هایی برای پرامپت‌ها، تکمیل‌ها و جاسازی‌ها ایجاد می‌کنند و اطمینان حاصل می‌کنند که سازگاری حفظ شود، صرف‌نظر از اینکه از OpenAI، Anthropic یا یک نمونه محلی Ollama استفاده می‌کنید.

پیاده‌سازی عملی در Python

بیایید یک مثال عملی با استفاده از SDK پایتون بررسی کنیم. ابتدا، باید بسته‌های ضروری را نصب کنید:

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

سپس، تریسر (Tracer) را پیکربندی کنید و مشتری LLM خود را ابزارک‌نویسی نمایید. کد زیر نحوه تنظیم اکسپورتر و اعمال ابزارک‌نویسی را نشان می‌دهد:

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

# Set up the tracer provider
trace.set_tracer_provider(TracerProvider())

# Configure the OTLP exporter to send data to your backend
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(
    
Share: