تجهيز مجموعة بيانات (Dataset) لتدريب نموذج مخصص لخدمة عملاء شركتك

دقائق القراءة: 5

تجهيز Dataset لتدريب نموذج مخصص لخدمة عملاء شركتك

نجاح أي نموذج مخصص لخدمة العملاء لا يبدأ من اختيار LLM قوي، بل من جودة البيانات التي سيتعلم منها. في البيئات المؤسسية، المشكلة الأساسية ليست نقص النماذج، وإنما فوضى مصادر المعرفة: تذاكر دعم قديمة، محادثات بريد إلكتروني، نصوص CRM، ملفات FAQ، وسياسات داخلية مكتوبة بأساليب متفاوتة. لذلك فإن تجهيز Dataset احترافية هو عملية هندسية تشمل الاستخراج، التنظيف، إعادة الصياغة، إزالة الحساسية، ثم التحويل إلى بنية قابلة للاستخدام في الضبط الدقيق Fine-Tuning أو في أنظمة RAG.

الهدف هنا ليس فقط أن يجيب النموذج، بل أن يجيب بنبرة الشركة، وفق سياساتها، وضمن حدود آمنة تمنع الهلوسة وتقلل مخاطر إعطاء وعود غير صحيحة للعميل. وإذا كنت قد قرأت سابقاً كيف تعمل نماذج اللغة الكبيرة LLMs برمجياً فستفهم أن البيانات ليست مجرد نصوص، بل هي تمثيل مباشر للسلوك الذي تريد من النموذج تقليده.

البنية المعمارية لخط تجهيز البيانات

هندسياً، يمر خط تجهيز بيانات خدمة العملاء عبر عدة طبقات مترابطة:

  • طبقة الاستخراج من الأنظمة المصدرية مثل البريد، Zendesk، ملفات CSV، أو قاعدة المعرفة.
  • طبقة التنظيف وإزالة الضجيج مثل التوقيعات، الرسائل الآلية، والبيانات المكررة.
  • طبقة إخفاء البيانات الحساسة مثل البريد، أرقام الهواتف، المعرفات، والعناوين.
  • طبقة التحويل إلى أمثلة تدريبية بنمط instruction-response أو messages.
  • طبقة المراجعة والتقييم لضمان الاتساق والجودة.
  • طبقة التوزيع بين تدريب Fine-Tuning أو التخزين داخل قواعد البيانات المتجهة Vector DBs لتشغيل RAG.

هذا التقسيم مهم لأن كثيراً من الفرق تخلط بين “بيانات تعلم الأسلوب” و“بيانات استرجاع الحقائق”. الأولى تناسب الضبط الدقيق، أما الثانية فغالباً تناسب دمج المعلومات المسترجعة مع النموذج لتوليد إجابة دقيقة.

تحديد نوع البيانات المناسبة

بيانات السلوك مقابل بيانات المعرفة

إذا كانت شركتك تريد من النموذج أن يتحدث بلغة مهذبة، يعتذر بطريقة موحدة، ويصعّد الحالات الحرجة وفق سياسة ثابتة، فأنت تحتاج بيانات سلوكية. أما إذا كان المطلوب الإجابة عن تفاصيل المنتجات المتغيرة والأسعار والشحن، فالأفضل دعم النموذج بنظام RAG مع Embeddings بدلاً من حشو كل الحقائق داخل التدريب.

أفضل مصادر البيانات

  • محادثات الدعم الناجحة التي أغلقت المشكلة بوضوح.
  • مستندات السياسات الرسمية للشحن، الإرجاع، الضمان، والاشتراكات.
  • الأسئلة المتكررة المصاغة من فريق خدمة العملاء.
  • قوالب الردود المعتمدة من الإدارة القانونية أو التشغيلية.
  • الحالات المصعّدة التي توضّح متى يجب أن يقول النموذج: لا أستطيع الحسم وأحتاج تدخلاً بشرياً.

تنظيف البيانات قبل أي تدريب

أخطر خطأ هو تدريب النموذج على سجلات خام. محادثات خدمة العملاء الواقعية تحتوي على أخطاء إملائية، غضب، معلومات خاصة، وردود متناقضة بين الموظفين. تنظيف البيانات ليس خطوة تجميلية، بل خطوة حماية للجودة والسمعة.

  • احذف الرسائل الفارغة أو غير المكتملة.
  • أزل التواقيع البريدية والشعارات والروابط التتبعية.
  • استبعد المحادثات التي انتهت دون حل أو تحتوي معلومات خاطئة.
  • وحّد أسماء الحقول وتنسيق التواريخ والعملات.
  • استبدل البيانات الحساسة بعلامات عامة مثل [EMAIL] و[ORDER_ID].
import re
import pandas as pd

def anonymize_text(text: str) -> str:
    text = re.sub(r'[\w\.-]+@[\w\.-]+', '[EMAIL]', text)
    text = re.sub(r'\b\d{8,}\b', '[ORDER_ID]', text)
    text = re.sub(r'\+?\d[\d\-\s]{7,}\d', '[PHONE]', text)
    return text.strip()

df = pd.read_csv("support_tickets.csv")
df = df.dropna(subset=["customer_message", "agent_reply"])

df["customer_message"] = df["customer_message"].apply(anonymize_text)
df["agent_reply"] = df["agent_reply"].apply(anonymize_text)

df = df[df["agent_reply"].str.len() > 30]
df = df.drop_duplicates(subset=["customer_message", "agent_reply"])
print(df.head())

إعادة هيكلة البيانات إلى صيغة تدريبية مفيدة

معظم مزودي النماذج يتوقعون بنية واضحة. في خدمة العملاء، من الأفضل تمثيل كل عينة كسياق قصير يحتوي على دور العميل ثم رد المساعد. ويمكن أيضاً إضافة رسالة نظام تحدد شخصية المساعد وحدوده.

أنت مساعد خدمة عملاء تابع للشركة. أجب بلغة واضحة ومهذبة، ولا تقدّم وعوداً غير مذكورة في السياسات. إذا كانت البيانات غير كافية، اطلب التصعيد إلى موظف بشري.

import json

samples = []

for _, row in df.iterrows():
    sample = {
        "messages": [
            {
                "role": "system",
                "content": "You are a professional customer support assistant. Follow company policy and avoid unsupported promises."
            },
            {
                "role": "user",
                "content": row["customer_message"]
            },
            {
                "role": "assistant",
                "content": row["agent_reply"]
            }
        ]
    }
    samples.append(sample)

with open("customer_service_finetune.jsonl", "w", encoding="utf-8") as f:
    for item in samples:
        f.write(json.dumps(item, ensure_ascii=False) + "\n")

هذه البنية تجعل النموذج يتعلم نمط الرد، ترتيب الأولويات، وحدود الصياغة. وإذا كنت تستخدم إجبار النموذج على الرد بصيغة JSON في بعض السيناريوهات، فيمكنك أيضاً تضمين أمثلة دعم تتضمن حقولاً منظمة مثل نوع المشكلة، مستوى الأولوية، والخطوة التالية.

متى نخلط بين Fine-Tuning وRAG؟

هندسياً، الدمج بينهما هو الخيار الأقوى. استخدم Fine-Tuning لتعليم النموذج الأسلوب، واستخدم RAG لتزويده بالمعلومات المتغيرة. هنا تكون مجموعة البيانات منقسمة إلى مسارين:

  • عينات محادثة نظيفة لتعليم الردود الاحترافية.
  • مستندات معرفة يتم تقطيعها بواسطة Text Splitters ثم تحويلها إلى متجهات.
from langchain_text_splitters import RecursiveCharacterTextSplitter

policy_text = open("return_policy.txt", "r", encoding="utf-8").read()

splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=80
)

chunks = splitter.split_text(policy_text)
print(chunks[:2])

بعد ذلك يمكن إرسال هذه الأجزاء إلى قاعدة متجهة مثل ChromaDB أو غيرها، بحيث يسترجع النظام فقط المعلومة ذات الصلة قبل توليد الإجابة. هذا يقلل الحاجة لإعادة تدريب النموذج كلما تغيّرت سياسة داخلية.

فحص الجودة قبل الاعتماد

معايير يجب قياسها

  • الاتساق: هل يجيب النموذج بنفس السياسة في أسئلة متشابهة؟
  • السلامة: هل يمتنع عن كشف معلومات حساسة أو اختلاق استثناءات؟
  • النبرة: هل يحافظ على أسلوب الشركة دون جفاف أو مبالغة؟
  • الدقة: هل يفرّق بين ما يعرفه وما يجب تصعيده؟

ومن الأفضل إنشاء مجموعة validation منفصلة بالكامل عن التدريب، ثم استخدام منهجيات التقييم الآلي Evaluation لقياس الأداء قبل النشر.

أخطاء شائعة تفسد Dataset

  • تدريب النموذج على ردود كتبها موظفون غير ملتزمين بالسياسة.
  • دمج المعرفة المتغيرة مع أمثلة الأسلوب داخل ملف واحد بلا فصل منطقي.
  • استخدام عينات قليلة لكن طويلة جداً ومليئة بالتشعب.
  • عدم إزالة بيانات التعريف الشخصية، ما يخلق خطراً قانونياً وسمعة سيئة.
  • إهمال حساب الرموز والتكلفة Tokens عند تجهيز العينات الطويلة.

الخلاصة الهندسية

تجهيز مجموعة بيانات لخدمة عملاء شركتك ليس مهمة أرشفة، بل عملية تصميم سلوكي ومعرفي للنموذج. أنت تحدد من خلال البيانات كيف يعتذر، كيف يشرح، متى يرفض، ومتى يصعّد. وكلما كانت العينات نظيفة، ممثلة للواقع، وخالية من التناقضات، ارتفع مستوى الاعتمادية في بيئة الإنتاج. عملياً، ابدأ بعينات دعم ممتازة، أخفِ المعلومات الحساسة، افصل بين بيانات الأسلوب وبيانات المعرفة، ثم اختر إن كنت تحتاج Fine-Tuning أو RAG أو مزيجاً منهما. هذه هي النقطة التي يتحول فيها الذكاء الاصطناعي من تجربة مبهرة إلى موظف دعم رقمي يمكن الوثوق به.

1 comment

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *