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

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-5.4")
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-5.4",
        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 مقابل البدائل

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

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

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

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

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

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

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