قابلية المراقبة الإنتاجية

LangSmith: منصة قابلية المراقبة من LangChain

3 دقيقة للقراءة

LangSmith هي منصة قابلية المراقبة والتقييم المتكاملة من LangChain، توفر رؤية عميقة لتطبيقات LangChain مع ميزات مثل التتبع والاختبار وساحة المطالبات.

المعمارية والتكامل

┌─────────────────────────────────────────────────────────────┐
│                   منصة LangSmith                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    لوحة الويب                        │   │
│  │  ┌──────────┐ ┌──────────┐ ┌────────────────────┐   │   │
│  │  │ التتبعات │ │ الساحة   │ │    التقييمات      │   │   │
│  │  └──────────┘ └──────────┘ └────────────────────┘   │   │
│  │  ┌──────────┐ ┌──────────┐ ┌────────────────────┐   │   │
│  │  │مجموعات  │ │ التعليقات│ │ Hub (المطالبات)   │   │   │
│  │  └──────────┘ └──────────┘ └────────────────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
│                          ↑                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              تكامل LangChain                         │   │
│  │                                                      │   │
│  │  التتبع التلقائي لـ:                                 │   │
│  │  • السلاسل، الوكلاء، الأدوات                        │   │
│  │  • استدعاءات LLM (أي مزود)                          │   │
│  │  • عمليات الاسترجاع                                 │   │
│  │  • المكونات المخصصة                                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

البداية السريعة

الإعداد

pip install langsmith langchain langchain-openai

# تعيين متغيرات البيئة
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="ls__..."
export LANGCHAIN_PROJECT="my-project"

التتبع التلقائي لـ LangChain

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# جميع عمليات LangChain تُتبع تلقائياً
llm = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_messages([
    ("system", "أنت مساعد مفيد."),
    ("user", "{question}")
])

chain = prompt | llm | StrOutputParser()

# هذه السلسلة بأكملها تُتبع في LangSmith
response = chain.invoke({"question": "ما هو التعلم الآلي؟"})

التتبع اليدوي مع @traceable

from langsmith import traceable
from openai import OpenAI

client = OpenAI()

@traceable(name="generate_response")
def generate_response(user_message: str) -> str:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "أنت مفيد."},
            {"role": "user", "content": user_message}
        ]
    )
    return response.choices[0].message.content

@traceable(name="process_query")
def process_query(query: str) -> dict:
    # التتبعات المتداخلة ترتبط تلقائياً
    response = generate_response(query)
    return {"query": query, "response": response}

ساحة المطالبات

اختبر وكرر على المطالبات مباشرة في LangSmith:

from langsmith import Client

client = Client()

# إنشاء مطالبة في الساحة
prompt = client.create_prompt(
    name="customer_support",
    template="""أنت وكيل دعم عملاء لـ {{company}}.

استفسار المستخدم: {{query}}

رد بشكل مفيد ومهني.""",
    input_schema={
        "company": {"type": "string"},
        "query": {"type": "string"}
    }
)

# استخدام المطالبة في تطبيقك
from langchain import hub

prompt_template = hub.pull("customer_support")
chain = prompt_template | llm | StrOutputParser()

التقييم القائم على مجموعات البيانات

إنشاء مجموعات بيانات للتقييم وتشغيل اختبارات آلية:

from langsmith import Client
from langsmith.evaluation import evaluate

client = Client()

# إنشاء مجموعة بيانات
dataset = client.create_dataset(
    name="support_qa_test",
    description="حالات اختبار لدعم العملاء"
)

# إضافة أمثلة
client.create_examples(
    inputs=[
        {"query": "كيف أعيد تعيين كلمة المرور؟"},
        {"query": "ما هي ساعات العمل؟"},
    ],
    outputs=[
        {"expected": "تعليمات إعادة تعيين كلمة المرور"},
        {"expected": "ساعات العمل"},
    ],
    dataset_id=dataset.id
)

# تحديد السلسلة/الوظيفة للتقييم
def my_chain(inputs: dict) -> dict:
    response = chain.invoke(inputs)
    return {"response": response}

# تشغيل التقييم
results = evaluate(
    my_chain,
    data=dataset.name,
    evaluators=[
        "correctness",  # مقيم مدمج
        "helpfulness",
    ],
    experiment_prefix="support-v2"
)

المقيمات المخصصة

from langsmith.evaluation import EvaluationResult

def custom_evaluator(run, example) -> EvaluationResult:
    """تحقق إذا كان الرد يذكر المصطلحات الرئيسية."""
    response = run.outputs.get("response", "")
    expected_terms = example.outputs.get("expected_terms", [])

    matches = sum(1 for term in expected_terms if term.lower() in response.lower())
    score = matches / len(expected_terms) if expected_terms else 1.0

    return EvaluationResult(
        key="term_coverage",
        score=score,
        comment=f"تطابق {matches}/{len(expected_terms)} مصطلحات"
    )

results = evaluate(
    my_chain,
    data=dataset.name,
    evaluators=[custom_evaluator]
)

قوائم انتظار التعليق

إعداد سير عمل المراجعة البشرية:

# إنشاء قائمة انتظار تعليق
queue = client.create_annotation_queue(
    name="low_confidence_reviews",
    description="مراجعة الردود ذات الثقة المنخفضة"
)

# إضافة التشغيلات للقائمة برمجياً
@traceable
def generate_with_review(query: str):
    response = chain.invoke({"query": query})

    # تحقق من الثقة وأضف للمراجعة إذا لزم الأمر
    confidence = estimate_confidence(response)
    if confidence < 0.7:
        # التشغيل سيظهر في قائمة التعليق
        pass

    return response

اختبار A/B مع التجارب

مقارنة تكوينات مختلفة:

# تشغيل التجربة مع المتغير A
results_a = evaluate(
    chain_v1,
    data="test_dataset",
    experiment_prefix="chain-v1"
)

# تشغيل التجربة مع المتغير B
results_b = evaluate(
    chain_v2,
    data="test_dataset",
    experiment_prefix="chain-v2"
)

# المقارنة في لوحة LangSmith

مراقبة الإنتاج

from langsmith import Client
from datetime import datetime, timedelta

client = Client()

# استعلام التشغيلات الأخيرة
runs = client.list_runs(
    project_name="production",
    start_time=datetime.now() - timedelta(hours=24),
    filter='eq(status, "error")'  # البحث عن الأخطاء
)

# تحليل المقاييس
for run in runs:
    print(f"خطأ: {run.error}")
    print(f"زمن الاستجابة: {run.latency_ms}ms")
    print(f"الرموز: {run.total_tokens}")

أفضل الممارسات

┌─────────────────────────────────────────────────────────────┐
│              أفضل ممارسات LangSmith                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. تنظيم المشاريع                                         │
│     ├── مشاريع منفصلة للتطوير/الاختبار/الإنتاج            │
│     ├── استخدم اتفاقيات تسمية متسقة                        │
│     └── وسم التشغيلات بمعلومات الإصدار                    │
│                                                             │
│  2. استراتيجية التقييم                                     │
│     ├── إنشاء مجموعات بيانات اختبار تمثيلية               │
│     ├── تشغيل التقييمات قبل كل نشر                        │
│     ├── تتبع المقاييس عبر الوقت                           │
│     └── إعداد تنبيهات الانحدار                            │
│                                                             │
│  3. إدارة المطالبات                                        │
│     ├── إصدار المطالبات في LangChain Hub                  │
│     ├── الاختبار في الساحة قبل الإنتاج                    │
│     └── ربط التوليدات بإصدارات المطالبات                  │
│                                                             │
│  4. الملاحظات البشرية                                      │
│     ├── إعداد قوائم انتظار التعليق                        │
│     ├── توجيه الحالات الحدية للمراجعة                     │
│     └── استخدام الملاحظات لتحسين المقيمات                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

LangSmith مقابل البدائل

الميزة LangSmith Langfuse Helicone
تكامل LangChain أصلي جيد أساسي
الاستضافة الذاتية لا نعم نعم
ساحة المطالبات ممتاز جيد أساسي
إطار التقييم مدمج مدمج محدود
التسعير مستويات مدفوعة نواة مفتوحة طبقة مجانية
الأفضل لـ تطبيقات LangChain الاحتياجات مفتوحة المصدر وكيل عالي النطاق
:::

اختبار

الوحدة 4: قابلية المراقبة الإنتاجية

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.