أبرز النقاط
- بدأنا من نقطة ألم حقيقية لدى العملاء. تم بناء Snyk Assist ليسهيل حصول العملاء على إجابات سريعة ودقيقة دون الحاجة إلى البحث عبر الوثائق ومحتوى الدعم وأنظمة الحسابات.
- تعاملنا مع الثقة والتحكم في الوصول كمتطلبات جوهرية للمنتج. نظرًا لأن Snyk منصة أمنية، تم تصميم الوكيل ليبقى ضمن صلاحيات المستخدم وأن يُثبت أنه آمن وموثوق وصحيح قبل التوسع في إطلاقه.
- بنيناه ليكون مفيدًا وقابلًا للقياس والتحجيم. وقت تشغيل واحد من LangGraph يشغّل واجهات متعددة، بينما تساعد تقييمات LangSmith الفريق في اكتشاف حالات التراجع وتحسين الاستجابات والاستمرار في الإطلاق بثقة.
Snyk هي منصة أمنية مدعومة بالذكاء الاصطناعي. تجد منصتها الثغرات الأمنية وتصلحها في الكود وتبعيات المصدر المفتوح والحاويات وإعدادات السحابة، وهي متواجدة في الأماكن التي يعمل فيها المطورون بالفعل: بيئة التطوير المتكاملة، وطلب السحب، وخط الأنابيب.
نحن نبني منتجات أمنية للمطورين، مما يعني أن عملاءنا يطرحون أسئلة صعبة ومحددة. يريدون إجابات عن الثغرات الأمنية وسياق الحساب ومشكلات الدعم وسلوك المنتج، غالبًا في خضم عمل فعلي. قبل Snyk Assist، كانت هذه المعلومات موزعة بين وثائق المنتج ومقالات الدعم وملاحظات الإصدار ومحتوى التعلم وبيانات الحساب. وكان العثور على الإجابة الصحيحة يعني عادةً قراءة عدة صفحات أو فتح تذكرة والانتظار.
Snyk Assist هو وكيل محادثة مبني على LangChain وLangGraph مع إدارة المراقبة في LangSmith. يساعد العملاء في العثور على الإجابات بلغة طبيعية ويمكنه اتخاذ إجراءات نيابة عنهم. يمكنه البحث عن المشكلات المفتوحة، وفحص حزمة بحثًا عن ثغرات معروفة، وفتح حالة دعم من داخل المحادثة، أو تسجيل طلب ميزة عندما لا ندعم سير العمل المطلوب بعد.
بدأ كأداة داخلية لفريق الدعم لدينا. في سبتمبر 2026، نقلناه إلى المنتج الأساسي لـ Snyk، حيث يمكن لكل عميل يدفع الاشتراك الوصول إليه.
في هذه المقالة، نشارك كيف بنينا Snyk Assist، من حالة الاستخدام الداخلية الأصلية للدعم إلى تجربة المنتج الموجهة للعملاء. كما نغطي البنية المعمارية خلفه، بما في ذلك كيفية تعاملنا مع الصلاحيات والحالة وضوابط الحماية والتقييم أثناء توسيع نطاقه.
التحدي: دعم غير قابل للتحجيم ومعيار عالٍ لإطلاق الذكاء الاصطناعي
يتعامل فريق الدعم لدينا مع آلاف الحالات كل أسبوعين تقريبًا. وكانت كل حالة يجب قراءتها وتصنيفها حسب المنتج والخطورة والمسؤول وتوجيهها إلى المكان الصحيح. وقد شكّل هذا تحديًا في التحجيم مع نمو استفسارات العملاء. كان الوكيل هو الحل الواضح، ولكن لأننا نبني برامج أمنية، فإن أي شيء نضعه أمام العملاء يجب أن يفي بنفس المعايير التي نتوقعها من بقية منتجنا. احتجنا إلى إثبات ثلاثة أمور: أن الوكيل يجيب بشكل صحيح، ويرفض ما يجب رفضه، ولا يعيد أبدًا أي شيء غير مسموح للمستخدم برؤيته أصلًا.
"الجزء الصعب في بناء الوكلاء ليس ما يستطيع النموذج فعله، بل إثبات أن الوكيل يعمل فعلًا. نجري كل تغيير عبر تقييمات في LangSmith، وإذا لم يتجاوز المعيار، لا يُطلق."
—بايلي ميلنز، مهندس ذكاء اصطناعي، Snyk
بدلًا من الإطلاق مباشرة داخل المنتج، بدأنا بالاختبار داخليًا مع فريقنا. ضمنت هذه المقاربة بقاء أي أخطاء أولية داخل Snyk بدلًا من التأثير على العملاء المدفوعين. كما سمحت لنا باختبار الميزات الأكثر خطورة بأمان ومراقبة سلوك الوكيل قبل التوسع في الإطلاق.
مكّنتنا هذه المرحلة الداخلية من تأسيس نموذج التشغيل لدينا باستخدام LangSmith قبل تقديم الميزات الموجهة للعملاء. تغذت كل تتبعة من هذه الجلسات المبكرة مباشرة في مجموعات التقييم لدينا، مما منحنا فهمًا قويًا لكيفية أداء الوكيل بح الوقت الذي أطلقناه فيه في بوابة الدعم.
المرحلة 1: الأدوات الداخلية
لقرابة عام، عمل Snyk Assist كأداة داخلية لفريق دعم العملاء كوكيل فرز للحالات ووكيل افتراضي، مع كان موظفو Snyk هم المستخدمون الوحيدون. مكّننا الاختبار الداخلي للوكيل من اكتشاف حالات حدّية لم تظهر في الاختبار دون الاتصال بالإنترنت، وكانت حلقة التغذية الراجعة تُقاس بالساعات بدلًا من دورات الإصدار.
المرحلة 2: بوابة الدعم
في أبريل 2026 أطلقنا Snyk Assist للعملاء في بوابة الدعم لدينا. في تلك المرحلة، كان بإمكانه تحية المستخدمين بالاسم، وفهم سياق الحساب، وإجراء فحص صحي عند تسجيل الدخول، ورفع تذكرة في أي وقت دون انتظار تدخل بشري.
المرحلة 3: المنتج الأساسي
في 1 سبتمبر 2026، انتقل Snyk Assist إلى المنتج الأساسي لـ Snyk، إلى جانب التنقل الجديد لدينا، كلوحة في الشريط العلوي لكل صفحة، ولكل عميل يدفع الاشتراك.
حافظنا على نفس وقت تشغيل الوكيل عبر كل مرحلة. الشيء الوحيد الذي تغيّر هو الواجهة أمامه.
وقت تشغيل واحد، وأبواب أمامية متعددة
Snyk Assist هو وكيل LangGraph واحد خلف عدة واجهات: تطبيق Slack، وتطبيق ويب، ووصول مباشر عبر API، وكلها موجهة عبر نفس الإطار الآمن.
اخترنا LangChain بسبب مجتمعه الواسع ونظامه البيئي القوي ومكانته كمعيار الصناعة لبناء الوكلاء.
"كان لدى LangChain أكبر مجتمع ونظام بيئي على الإطلاق، وكان يتحول بسرعة إلى المعيار الفعلي لبناء الوكلاء."
—جادا روس، مهندسة ذكاء اصطناعي، Snyk
وبينما كنا نعمل كفريق صغير، أردنا بيئة تشغيل واحدة حتى نتمكن من إصلاح الأخطاء وإطلاق الميزات والتعامل مع الاستجابة للحوادث من مكان واحد. لقد مكّنتنا هذه البساطة من التوسع بسرعة دون تجزئة بنيتنا.
كما أن استخدام وسيطيات LangChain بدلاً من بناء حل مخصص وفّر لنا نقاط تكامل محددة للسياق وضمانات الحماية والبدائل للنماذج. يتيح لنا هذا الإعداد تحديث الوظائف أو إعادة ترتيبها بتعديلات بسيطة من سطر واحد بدلاً من إعادة كتابة واسعة للكود.
إليك قرارات التصميم الأربعة التي جعلت تشغيل النظام في بيئة الإنتاج أمراً عملياً:
- الأدوات كدوال مُنمَّطة، مسجَّلة لكل مستخدم. نربط الأدوات في وقت الطلب بناءً على الصلاحيات التي يمتلكها المستخدم المسجَّل دخوله فعلياً. وهذا يعني أن الوكيل لا يمكنه الوصول إلا إلى البيانات التي كان بإمكان المستخدم رؤيتها أصلاً. معظم الأدوات هي خدمات مصغّرة منفصلة، ما يتيح لنا توسيعها بشكل مستقل وإضافة قدرات جديدة دون تغيير حلقة الوكيل.
- البرمجيات الوسيطة بدلاً من التوصيل اليدوي. إدارة السياق، وضمانات الحماية، والبدائل الاحتياطية للنماذج تُوصل إلى نقاط محددة في دورة حياة الوكيل بدلاً من تمريرها يدوياً عبر الحلقة. إضافة سلوك أو إعادة ترتيبه تتطلب تغييراً من سطر واحد في قائمة، وليس إعادة كتابة كاملة.
- الحالة تُدار بواسطة الـ checkpointer. سجل المحادثة يُحفظ في PostgreSQL ويُفهرَس بحسب الجلسة، فتعمل الذاكرة متعددة الأدوار، والتوسّع عبر الـ pods، واستئناف المحادثة، كل ذلك دون أسلاك توصيل إضافية.
- الحلقة كمنصة داخلية. بما أن الوكيل ليس سوى نموذج وأدوات وتوجيه (prompt) وبرمجيات وسيطة وـ checkpointer، فإن مصنعاً مشتركاً يعيد الرسم البياني المُجمَّع، وتوفّر كل فريق إعداداته الخاصة. معظم سير العمل الجديدة هي تغيير في الإعدادات وليست بنية جديدة.
«من منظور التطوير، منحتنا LangChain تجريداً للوكلاء شاملاً كل شيء فتمكنا من التركيز على الأثر والقدرة في وكيلنا، بدلاً من إعادة اختراع التنسيق، واستدعاء الأدوات، والبث، والحالة.»
— مات جارفيس، مدير هندسة الذكاء الاصطناعي، Snyk

كيف نقيّم كل تغيير
كل استدعاء نموذج، وكل استدعاء أداة، وكل نقطة قرار، تم تتبعها في LangSmith منذ اليوم الأول من التطوير. وأصبح هذا التتبع أساس الطريقة التي نُطلق بها المنتج.
نستخدم طبقتين من التقييم.
التقييم دون الاتصال يشغّل مجموعات من أسئلة الاختبار في LangSmith. الأولى أسئلة حقيقية بإجابات جيدة معروفة، يتم تقييمها بواسطة نموذج ثانٍ، حتى نتمكن من معرفة سريعاً ما إذا كان تغيير في التوجيه أو النموذج قد أدى إلى تدهور جودة الإجابة. والثانية تمرين آلي للفريق الأحمر يحاول فيه أشخاص خداع الوكيل ليتجاهل التعليمات أو يسلّم أسراراً.
التكامل المستمر كحاجز يعني أن كل طلب دمج (pull request) يشغّل الوكيل الحقيقي ضد تلك المجموعات ويُوقف العملية عند عتبات متفق عليها مُودعة في المستودع.
التقييم عبر الاتصال يقيّم كل تشغيل في بيئة الإنتاج من خلال مهمة مجدولة. نتحقق من أمرين: هل كان السؤال عن Snyk، وهل أجابت الاستجابة عنه؟ تمنحنا هذه الدرجات معدل تحويل مقاساً بدلاً من تقديري. كما نصنّف كل سؤال حسب مجال المنتج، والموضوع، والنظام البيئي اللغوي، ونوع الخطأ، ما يمنح مديري المنتجات خريطة حية لمواطن المعاناة لدى العملاء.
إغلاق الحلقة يحدث داخل وكلاء البرمجة لدينا عبر خادم LangSmith MCP. عندما نجد تتبعاً سيئاً، يمكننا التحقيق فيه وتحويله إلى مجموعة بيانات دون مغادرة بيئة التطوير.
لأن كل خطوة يتم تتبعها في LangSmith، يمكننا اختبار التغييرات مقابل أسئلة حقيقية، ورصد التراجعات قبل إطلاقها، وتحويل التتبعات السيئة إلى مجموعات بيانات جديدة بسرعة. ذلك يمنحنا حلقة تغذية راجعة أسرع ويجعل الإطلاق بثقة أسهل بكثير.
الأثر: تذاكر أقل، إجابات أسرع
منذ إطلاق Snyk Assist للعملاء في أبريل 2026:
- أكثر من 60,000 استعلام تمت معالجتها
- أكثر من 500 حساب عميل
- أكثر من 85% من الجلسات حُلّت دون تذكرة دعم، ما وفّر لفريق الدعم مئات الساعات
- أكثر من 250 حالة اكتشفها الوكيل تلقائياً وصعّدها مباشرة إلى الفريق المناسب
تُقيَّم كل محادثة وتُصنَّف، فنتمكن من رؤية أجزاء المنتج التي تسبب أكبر قدر من الالتباس. وهذا يساعدنا على تحسين الوثائق.
الخلاصات الرئيسية وما هو قادم
بدأ Snyk Assist كأداة لفريق الدعم الخاص بـ Snyk نفسه. واليوم، عالج أكثر من 60,000 استعلام من العملاء ويحل أكثر من 85% من الجلسات دون إنشاء تذكرة دعم. ومنذ سبتمبر، أصبح Snyk Assist جزءاً من المنتج نفسه، متاحاً في كل صفحة إلى جانب العمل الذي يقوم به العملاء أصلاً. نريده أن يكون جزءاً مفيداً من تجربة Snyk لكل عميل.
الرابط: https://docs.snyk.io/navigate-the-snyk-web-ui#snyk-assist
