جلسة مجتمعية: أسئلة وأجوبة حول أدوات تطوير برمجيات الدردشة (Chat SDK)

VVercel
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00مرحباً بالجميع.
00:00:19أهلاً بكم في جلسة أخرى من جلسات مجتمع Vercel.
00:00:22ينضم إلي هذا الأسبوع مالتا ومات، وأود فقط تذكير الجميع، إذا كنتم
00:00:27تشاركون في الدردشة، يرجى اتباع مدونة قواعد السلوك، لكننا نرحب بأي و
00:00:31جميع الأسئلة حول Chat SDK.
00:00:34أهلاً بكما.
00:00:35رائع.
00:00:36شكراً لاستضافتنا.
00:00:37مرحباً بالجميع.
00:00:38أنا مات.
00:00:39ينضم إلي اليوم مالتا، وسنتحدث عن كل ما يخص Chat SDK.
00:00:45إذا لم تكونوا على دراية به، فهو مكتبة TypeScript مفتوحة المصدر قمنا ببنائها لكي
00:00:50تتمكنوا من جلب الوكيل (Agent) الخاص بكم إلى مستخدميكم بغض النظر عن المنصة التي يستخدمونها.
00:00:55وللبدء، أود سماع قصة الأصل.
00:00:58من أين جاء كل هذا؟
00:01:00نعم.
00:01:01حسناً، مرحباً مجدداً، اسمي مالتا.
00:01:03أنا CTO لـ Sel، ولكنني أيضاً مؤلف Chat SDK.
00:01:07لذا أنا هنا اليوم بهذه الصفة.
00:01:11لا تطرحوا أي أسئلة استراتيجية.
00:01:14قصة أصل Chat SDK تشكلت تقريباً على مدار عام 2025 بأكمله.
00:01:23كنا نستثمر أكثر فأكثر، خاصة في روبوتات Slack.
00:01:26وكان هناك دائماً هذا السؤال: هل يمكننا شحن هذا إلى منصات أخرى بخلاف Slack؟
00:01:32وكانت الإجابة النهائية دائماً لا، لأنه سيكون عملاً شاقاً للغاية ولن يقدم سوى
00:01:39قيمة إضافية بسيطة.
00:01:40ولم نكن لنقوم بذلك بأنفسنا، مما سيكون أصعب بكثير.
00:01:44ولذا لم نفعل ذلك حقاً.
00:01:46وبينما كنت أنظر إلى هذه التطبيقات، كنت أفكر دائماً، هل يمكننا صنع طريقة لطيفة
00:01:53لبناء هذا في ضربة واحدة؟
00:01:57لكنني نظرت إلى كل هذه الواجهات البرمجية (APIs) وكنت خائفاً جداً، حقاً، من البناء فوقها
00:02:04لأنها بدت شاقة ومتعددة الأوجه.
00:02:10والآن بالانتقال إلى نهاية العام الماضي، صدر Opus 4.5 وقلت، هذا
00:02:16وقتي.
00:02:17وكانت العطلات.
00:02:18كانت العطلات.
00:02:19نعم.
00:02:20وأنا أقول، مرحباً مالتا، كيف يبدو هذا؟
00:02:23كيف سنقوم بذلك؟
00:02:25وعدت لي ليس بإجابة، بل بمكتبة فعلية للإجابة على سؤالي.
00:02:31نعم.
00:02:32نعم.
00:02:33لذا كنت أقوم ببرمجة هذا.
00:02:37والأمر يتعلق بهذا النوع من الأشياء هو أنه لا يزال مؤلماً جداً للبناء
00:02:43لأن هناك واجهات برمجية حقيقية وهي ليست حقاً في بيانات التدريب.
00:02:46ولذا لا يزال عليك القيام بالكثير من استكشاف الأمور.
00:02:50على الأقل تم تولي غالبية العمل.
00:02:55وهكذا، نعم، قررت أن أجرب ذلك خلال العطلات لبناء النسخة الأولية
00:03:01من Chat SDK.
00:03:02استغرقنا شهراً آخر أو نحو ذلك لجعله جاهزاً للشحن.
00:03:07ولكن هذه هي قصة الأصل.
00:03:08لذا أعتقد أنه كان من الواضح أن هناك حاجة لذلك، ولكن كان من الصعب أيضاً بناؤه.
00:03:12ثم ساعدنا الذكاء الاصطناعي في دفعه لتجاوز العقبة.
00:03:15نعم.
00:03:16الجميع في Vercel بناؤون.
00:03:17إذن إيمي، هل تودين البدء بسؤالنا الأول؟
00:03:20نعم.
00:03:21تعلمون، في أي وقت يكون لدينا مشروع مفتوح المصدر جديد، أعتقد أن أحد أكثر الأسئلة شيوعاً
00:03:26التي أراها هو مدى انفتاحه؟
00:03:29هل هو مقيد بـ Vercel فقط؟
00:03:32هل نحتاج إلى استخدام بنية Vercel التحتية للذكاء الاصطناعي أم يمكنني استخدامه في أي مكان؟
00:03:37بالتأكيد.
00:03:38أعتقد خاصة مع Chat SDK، إنه مجرد مكتبة TypeScript وليس حتى
00:03:44مقيداً بإطار عمل للواجهة الأمامية أو الخلفية.
00:03:48يمكنكم استخدامه في أي تطبيق JavaScript.
00:03:53يمكنكم استضافته في أي مكان يمكنكم فيه استضافة JavaScript.
00:03:55يمكنكم استخدام Chat SDK وهو غير مرتبط بأي بدائيات أخرى للسحابة بخلاف
00:04:03مجرد وظيفة بدون خادم (serverless function) لمعالجة حدث خطاف الويب.
00:04:07ما رأيك، مالتا؟
00:04:08نعم، بالضبط.
00:04:09لسنا حتى وظيفة خدمة، أليس كذلك؟
00:04:10إنه حقاً مجرد مكتبة.
00:04:13إنه مثل React، كما تعلمون، يمكنكم فقط، يمكنكم استخدامه أينما
00:04:19لم يتم ربطه بأي شكل من الأشكال بالبنية.
00:04:23يمكنكم التفكير فيه على أنه ليس Chat SDK ليس الوكيل.
00:04:27إنه مجرد طبقة لأخذ حدث خطاف الويب وإعطاء السياق لوكيل قمت ببنائه
00:04:33بأي إطار عمل اخترته.
00:04:38وأعتقد أن مثالاً رائعاً على هذا هو مؤخراً، كما تعلمون، قمنا ببناء النسخة الأولى
00:04:42من محول Teams والآن تولى فريق Microsoft Teams ملكية ذلك أيضاً.
00:04:52نعم، هذا صحيح.
00:04:53لقد كنت في الواقع مباركاً جداً بهذا لأنه، نعم، كنت أكافح
00:05:00لجعل Teams يعمل ولم يكتفوا بتولي الصيانة، بل أعادوا كتابة
00:05:05المحول لأنهم قاموا حالياً بشحن واجهة برمجية جديدة وقاموا ببساطة بنقل التنفيذ
00:05:13الحالي إلى الواجهة البرمجية الجديدة، وهو ما أعتقد أنه فوز لهم.
00:05:15لذا فهم يحصلون على التوزيع على الواجهة البرمجية الجديدة، ونأمل مستخدمين أقل من الأشياء القديمة.
00:05:20وأعني، نحن نقدر ذلك كثيراً لأنه يتطلب جهداً كبيراً لجعل هذا
00:05:25رائعاً على كل منصة ندعمها.
00:05:27وفوز كبير للمطورين لأنهم لم يضطروا لتعلم الواجهة البرمجية الجديدة لـ Microsoft Teams
00:05:32ولكن تطبيقهم أو وكيلهم يستفيد الآن من المحول الجديد.
00:05:37لا حاجة لتغيير الكود هناك.
00:05:38نعم.
00:05:39وهذا في الواقع متوافق تماماً مع الأشياء السابقة.
00:05:41لذا لا يتعين عليكم القيام بأي شيء على الإطلاق سوى ترقية Chat SDK وستتمكنون من الاستفادة
00:05:47من الواجهة البرمجية الجديدة.
00:05:48وكما تعلمون، قد يكون لديهم بعض الحالات الاستثنائية أو أي شيء، كما تعلمون،
00:05:51بما أنهم فريق Teams الفعلي هناك، فهم يعرفون أفضل كيفية استخدام واجهتهم البرمجية.
00:05:56ولكن كمستخدم لـ Chat SDK، لا تحتاج بالضرورة لمعرفة هذا.
00:06:00بالمناسبة، هذا في الواقع شيء أعتقد أن إحدى قيم Chat SDK هي بوضوح أنها
00:06:05تهدف للاستخدام بهذا النمط متعدد المنصات.
00:06:08لكنني في الواقع لن أتفاجأ إذا كان معظم المستخدمين لا يستخدمونه بهذه الطريقة.
00:06:11فقط يستخدمونه لمنصة واحدة في نفس الوقت.
00:06:16ولكن، كما تعلمون، كل هذه الواجهات البرمجية هي نوع من، إنها إما سيئة
00:06:23التوثيق أو لم يتم تصميمها ليتم استخدامها بطريقة اصطلاحية ونظام TypeScript
00:06:28البيئي.
00:06:29لذا يواجه الناس وقتاً أسهل باستخدام Chat SDK، حتى لو كان ذلك فقط لواحدة من
00:06:35المحولات.
00:06:36نعم.
00:06:37وهذا ما فعلناه مع v0.
00:06:38لقد بنينا v0 لـ Slack باستخدام Chat SDK.
00:06:41وأعتقد أن أفضل جزء هو إذا اخترنا الانتقال إلى منصة أخرى، فهو مجهود هندسي سهل جداً
00:06:47للانتقال إلى تلك المنصة الجديدة.
00:06:51السؤال التالي الذي أسمعه كثيراً، ثم سننتقل إلى الدردشة المباشرة، JSX.
00:06:56لذا قمت ببناء الكثير من وكلاء Slack قبل Chat SDK وكان علي استخدام BlockKit وكنت معتاداً
00:07:04على React وكنت أحب JSX.
00:07:06وكانت تلك على الأرجح واحدة من أكبر الفوائد وشيء كنت متحمساً جداً له مع Chat
00:07:11SDK كان جلب JSX.
00:07:13إذن كيف كان ذلك؟
00:07:15نعم، أعتقد أن تطور Chat SDK كان ذلك.
00:07:22من الواضح أنني أردت الحصول على دعم للعناصر التفاعلية، ولذا كنت أفكر أولاً في
00:07:28كيفية استخلاص هذا بشكل صحيح داخل Chat SDK.
00:07:36والشيئان اللذان كانا يدوران في ذهني هما، أولاً وقبل كل شيء، يجب أن يكون هناك
00:07:42دعم رائع لـ markdown لأن Chat SDK يمكن استخدامه بوضوح للتطبيقات غير القائمة على الذكاء الاصطناعي،
00:07:48ولكنه مصمم حقاً ليتم استخدامه بهذا النمط حيث تقوم بربطه بوكيل.
00:07:53لذا بالنسبة لذلك، كان markdown مهماً حقاً.
00:07:55والشيء الآخر هو أنني أردت أن يكون لدى مطور TypeScript العادي وقتاً جيداً حقاً.
00:08:01وهكذا كانت الفكرة أساساً هي القول، حسناً، لدينا هذا التمثيل الداخلي لـ
00:08:08واجهة المستخدم التي يمكن تقديمها لروبوتات الدردشة المختلفة.
00:08:16ثم تعيين ذلك التمثيل الوسيط للواجهات البرمجية الأساسية، مثل BlockIt.
00:08:22ثم الحصول على، من ناحية أخرى، واجهات أمامية، إذا جاز التعبير، وهي التمثيل
00:08:30الذي تستخدمه أنت كمهندس.
00:08:32وقابل لإعادة الاستخدام.
00:08:33يمكن أن يكون markdown، على سبيل المثال.
00:08:35أنت تقوم بتحليل markdown إلى AST، ثم تقدمه إلى BlockIt، أو لديك JSX،
00:08:42والذي يتم تعيينه بشكل أو بآخر مباشرة إلى التمثيل الوسيط.
00:08:47وربما للأشخاص الذين لا يعرفون جيداً أيضاً كيف يعمل JSX، لذا JSX هو في الأساس سكر
00:08:55نحوي لاستدعاء دالة.
00:08:58وهذا الاستدعاء للدالة هو استدعاء دالة إنشاء عنصر، والتي تأخذ كأول وسيط
00:09:03اسم العنصر ثم الوسائط.
00:09:07وهذا هو H1، H2 فقرة.
00:09:10بالضبط.
00:09:11هذا H4، أليس كذلك؟
00:09:12ولكن في الواقع، يمكنك القيام بأي شيء تريده، أليس كذلك؟
00:09:17لأنه مجرد استدعاء دالة.
00:09:18وهكذا يمكنك الكتابة فوق دالة إنشاء العنصر تلك لتكون أي شيء تريده، بما في ذلك
00:09:28إنشاء العناصر من التمثيل الوسيط لـ Chat SDK.
00:09:33الشيء الوحيد الذي يجعل هذا معقداً نوعاً ما للبناء هو أن هذا من المفترض
00:09:37أن يعمل داخل تطبيقات React الحالية.
00:09:41ولأن JSX ليس شيئاً له مساحة اسم، فأنت لا تستورده بأي شكل، أليس كذلك؟
00:09:47يجب عليك التأكد من أنك لا تكسر، مثلاً Next.js أو Remix، أليس كذلك؟
00:09:55ولكن أيضاً من المفترض استخدامه في تطبيقات قد لا يكون لديها أي فكرة عما هو React وما هو
00:09:59JSX.
00:10:00وهكذا فهو يدعم كلتا الحالتين.
00:10:02إنه يعمل بشكل جيد مع تطبيقات JSX الحالية ويقدم JSX كصيغة حيث لا
00:10:08يتم دعم ذلك حتى الآن.
00:10:11لو كان بإمكاني تحدي المجتمع، أود رؤية Shad CN لمنصات الدردشة مع
00:10:18JSX.
00:10:20هذا شيء أعرف أن شخصاً ما في الخارج يبنيه على الأرجح ولا أطيق انتظار
00:10:24رؤية ذلك.
00:10:27وأول سؤال من المجتمع، ما هي الحالات الاستثنائية الخاصة بالمنصات التي نحتاج كمطورين إلى أن نكون
00:10:34على دراية بها عند تنفيذ SDK؟
00:10:37وأعتقد أن هذا سؤال رائع مع JSX أيضاً لأن Slack block kit يحتوي على الكثير
00:10:44من واجهات المستخدم التفاعلية الغنية والمنصات الأخرى ليس لديها نفس العرض الأصلي.
00:10:52وأعرف أننا عندما بنينا هذا، دعمنا احتياطيات جيدة حقاً.
00:10:57لذا إذا استخدمت Chat SDK بطريقة قد لا تدعمها منصة أخرى، فقد أنشأنا
00:11:04افتراضيات واحتياطيات رائعة لك كمطور.
00:11:08نعم، بالضبط.
00:11:10لذا أعتقد أن هناك عناصر متعددة، أليس كذلك؟
00:11:13أحدها هو طبقة العرض.
00:11:16أعتقد في الواقع أن الفرق الأكثر وضوحاً هو أن Chat SDK كان مصمماً في الأصل جداً
00:11:23للمنصات التي تحتوي على خيوط (Threads).
00:11:28والآن من الواضح أنه حتى داخلها، لا يستخدم الجميع في الواقع تلك الخيوط، أليس كذلك؟
00:11:33ولذا يجب عليك نوعاً ما مراعاة ذلك قليلاً، ولكن تم تصميمه جداً
00:11:37ليتم استخدامه بهذا النمط.
00:11:39ولكن بعد ذلك أراد الناس حقاً WhatsApp وTelegram وسنضيف على الأرجح iMessage و
00:11:43كل شيء آخر في المستقبل.
00:11:46وهكذا بالنسبة لهذا العالم، يجب أن تفهم أن هناك نماذج مختلفة لاستخدام
00:11:55تطبيق دردشة وهذا لا يمكن استخلاصه بشكل صحيح في طبقة Chat SDK لأنك مرة أخرى، يجب
00:12:01عليك دعم كليهما، أليس كذلك؟
00:12:05لذا إذا كنت تعمل على WhatsApp، يجب أن تفهم أن هذا النوع من الرسائل هو أكثر أو أقل
00:12:11خالية من السياق.
00:12:14هذا شيء واحد.
00:12:15وهكذا فإن Chat SDK بشكل عام لا يهدف إلى أن يكون مفضلاً تماماً للاختلافات الإجمالية.
00:12:21ثم في واجهة المستخدم، بالتأكيد هي الحالة حيث كنت أحاول الحصول على ملاحظات حتى
00:12:26تتمكن من كتابة نفس الكود وهذا نوع ما منطقي في كل مكان.
00:12:31وأعتقد في الممارسة العملية، أنه يعمل بشكل جيد حقاً، أليس كذلك؟
00:12:37مثل في الممارسة العملية، الأشياء التي تريد دعمها مدعومة بشكل جيد حقاً
00:12:43وهكذا أعتقد إلى حد ما، سيتعين عليك القيام باختبار يدوي ومعرفة ما إذا كان كل شيء
00:12:50نوعاً ما يعمل بالطريقة التي تريدها، لكننا لم نرَ حقاً حالة حيث يكافح الناس
00:12:57حقاً مع جانب المنصات المتعددة.
00:12:59وأيضاً حالة رائعة للمصدر المفتوح لأن المجتمع سيساعدنا في إظهار ما
00:13:04يعنيه ذلك حقاً في الممارسة العملية.
00:13:06بالضبط.
00:13:07لذا أعتقد أنكم ستجدون مشاكل هنا وهناك، يرجى الإبلاغ عنها وسنقوم بإصلاحها.
00:13:15نعم.
00:13:16سؤالنا التالي.
00:13:18يبدو أن Chat SDK بكونه خفيف الوزن ومستقلاً عن المكدس في نماذجه يفصل
00:13:24الدردشة عن بقية تسخير الوكيل.
00:13:28هل ترى مستقبلاً حيث مع التقدم في الأنماط الأخرى، هل سيكون شيئاً مثل فيديو
00:13:34Chat SDK ممكناً؟
00:13:36سؤال مثير للاهتمام إلى حد ما.
00:13:38سأبدأ بالقول إنك على حق وهذا شيء اضطررت لتكراره بضع
00:13:45هو أن chat SDK ليس AI SDK و AI SDK ليس chat SDK.
00:13:51حيث يساعدك AI SDK في بناء الوكلاء.
00:13:55ويساعدك chat SDK في جلب هذا الوكيل إلى منصات متعددة.
00:13:59لذا فهو نموذج خفيف الوزن وغير مرتبط بمكدس تقني معين.
00:14:05ما رأيك في “SDK لمحادثة الفيديو”؟
00:14:09أعتقد أنه أمر مثير للاهتمام حقاً.
00:14:13أعتقد أنه قبل أن نحصل على SDK لمحادثة الفيديو، سنحصل على SDK للمحادثة الصوتية.
00:14:19وعادةً ما يكون رأيي هو أنك لا تضيف تجريدات مثل chat SDK التي تجعل بناء التصنيفات
00:14:31رائعاً حقاً إلا بعد أن تكون قد قمت بذلك بضع مرات.
00:14:36لم نبنِ قط محادثة فيديو.
00:14:38في الواقع، أحتاج إلى التفكير في الأمر.
00:14:44لم يحن الوقت بعد.
00:14:45وخاصةً عندما تضطر إلى التعامل مع التفاصيل التقنية الدقيقة.
00:14:50أرى في الواقع أن معظم التحديات المتعلقة بشيء كهذا تكمن في التواصل مع نماذج الذكاء الاصطناعي
00:14:55وليس كثيراً في التواصل مع الواجهة الأمامية، أي المستخدم الذي يتواصل
00:15:02في الوقت الفعلي.
00:15:03رائع.
00:15:04حسناً.
00:15:05سؤالنا التالي، هل يمكنني تدريبه باستخدام Opus 4.6 بإجابات مخزنة ثم جعله ينتج
00:15:11إجابات مجانية دون أي تكلفة؟
00:15:13أعتقد أن هذا السؤال يبرز، كما تعلمون، ما هو chat SDK وما ليس هو.
00:15:20ولن تقوم أبداً بتدريب chat SDK.
00:15:24أنت لا تضطر لكتابة مطالبات (prompts) لـ chat SDK لإنشاء ردوده منها.
00:15:30هذا ما صُمم من أجله AI SDK أو أطر عمل الوكلاء الأخرى.
00:15:36لذا فإن إطار عمل الوكيل هو المكان الذي تكتب فيه الأدوات، وتكتب المطالبات، وتنشئ سير العمل
00:15:44بينما chat SDK هو فقط الطبقة الموجودة بين المنصة ووكيلك.
00:15:51نأمل أن يساعد هذا في الإجابة على ذلك.
00:15:54التالي من يوتيوب، هل يمكن استخدام chat SDK لتتبع وإدارة الوظائف بين
00:16:00Slack و JIRA؟
00:16:02نعم، هذا سؤال جيد جداً.
00:16:04بما أن JIRA مذكور هنا، فلدينا محول لـ Linear.
00:16:09ليس لدينا محول لـ JIRA في الوقت الحالي.
00:16:11لن نمانع إضافته.
00:16:13يا مجتمع المطورين.
00:16:14ولكن ما أريد إضافته، نظراً لوجود بعض الأسئلة حول Linear أيضاً و
00:16:20GitHub في هذا الصدد، والذي يسير على نفس المنوال، هو أن chat SDK مخصص للدردشة.
00:16:28وإذا فكرت في الأمر، فإن Linear و JIRA هما نوع من تطبيقات الدردشة التي تعرض
00:16:33المحتوى بتنسيق مختلف.
00:16:37وهذا هو الهدف من ذلك.
00:16:40ما يمكنك فعله بالتأكيد هو استخدام chat SDK للاستماع إلى الأشخاص الذين يتحدثون على Slack
00:16:49ثم تعيين ذلك في استدعاءات واجهة برمجة تطبيقات JIRA للقيام بأي شيء تريده على JIRA.
00:16:58لكن chat SDK لا يهتم بقيامك بأشياء على JIRA، أليس كذلك؟
00:17:04لأن هذه الأمور، أعني بوضوح، أحياناً قد تنشر رسالة، ولكن قد ترغب أيضاً في
00:17:07لا أعرف، إضافة تسمية أو تغيير حالة علامة تبويب.
00:17:11تعيينها للشخص المناسب.
00:17:12صحيح.
00:17:13لذا فإن كل هذه الأشياء ليست شيئاً يمكنك القيام به في chat SDK لأنه مخصص حقاً
00:17:16فقط للتواصل، أنت تستخدم واجهة برمجة التطبيقات الأصلية للمنصة إذا كنت ترغب في القيام
00:17:20بأشياء معقدة عليها.
00:17:23نعم.
00:17:24رائع.
00:17:25حسناً.
00:17:26السؤال التالي هو، هل يدعم Facebook Messenger؟
00:17:32ما هذا؟
00:17:33أعتقد ربما يكون هناك طلب سحب (PR)، أو منذ أن أطلقناه، كان هناك الكثير من الاهتمام،
00:17:39الكثير من طلبات السحب المذهلة، وربما هذا وقت جيد للحديث عن الفرق
00:17:46بين محول المجتمع والمحولات التي اخترنا بناءها ودعمها.
00:17:53نعم.
00:17:54هذا سؤال جيد.
00:17:56ولدينا فئة ثالثة، وهي “رسمي من البائع”.
00:17:59نعم.
00:18:00بشكل عام، الطريقة التي نفكر بها في الأشياء التي يتم شحنها مع chat SDK،
00:18:07يجب أن تكون منتجات ذات مليار مستخدم، مثل Slack، Discord، ما هذا؟
00:18:15ربما سنضعها عند مائة مليون مستخدم، ولكن مثل، كما تعلمون، منصات قابلة للتطبيق بشكل واسع.
00:18:20وهكذا فإن Facebook Messenger يقع بالكامل ضمن ذلك.
00:18:23كما أنني لا أتوقع حقاً أن يعطونا إصداراً رسمياً من البائع، ولكن إذا رغب فيسبوك
00:18:26في القيام بذلك، فسيكون ذلك أمراً جيداً، أليس كذلك؟
00:18:31سنرحب بذلك.
00:18:32لذا فإن فيسبوك سيقع ضمن هذه الفئة.
00:18:36ثم ما نراه أيضاً بكثرة هو، على سبيل المثال، الشركات التي تقوم بنوع
00:18:39من خدمات المراسلة أو إدارة السياق.
00:18:45لقد رأيت بضعة منها.
00:18:49سيكون هذا مثالاً آخر.
00:18:50نعم.
00:18:51يمكننا التحدث عن ذلك بشكل منفصل، ولكن لنفترض أن لديك خدمة iMessage الخاصة بك.
00:18:52صحيح.
00:18:56Sendblue.
00:18:57Sendblue.
00:18:58سيقومون بعمل نسخة رسمية من البائع، أليس كذلك؟
00:18:59حيث نقول، حسناً، هذا في الواقع من Sendblue لـ Sendblue، وهو ما يأتي
00:19:01مع التزام بصيانة هذا بمرور الوقت.
00:19:07صحيح.
00:19:10والفئة الثالثة هي أن الجميع هنا يمكنهم ببساطة صنع محول.
00:19:11كما تعلمون، أنفقوا بضعة دولارات على أي شيء، أليس كذلك؟
00:19:15إنه أمر صعب بالتأكيد ويمكنك الاتصال بأي شيء تريده، أليس كذلك؟
00:19:19وربما تكون هناك بعض التطبيقات الصغيرة العشوائية التي، كما تعلمون، لن تصل
00:19:23إلى حد المائة مليون مستخدم للـ chat SDK الرئيسي.
00:19:29أو ربما هناك ميزة لسبب ما لا نقوم بإضافتها إلى محول الفرق في chat SDK.
00:19:35يمكنك، كما تعلم، لا أحد يمنعك حقاً من تعديل النسخة (fork) وإنشاء نسختك الخاصة، أليس كذلك؟
00:19:41لأن المحولات مرتبطة بشكل فضفاض تماماً بحيث يمكنك فقط إنشاء نسختك الخاصة.
00:19:44وأعتقد أن هذا وقت جيد للحديث عن، حسناً، أريد أن أبدأ.
00:19:48كيف، ربما أنا جديد في المصادر المفتوحة.
00:19:52لم أفتح قط طلب سحب لمكتبة مفتوحة المصدر، لكنني أريد بناء محول.
00:19:56كيف أبدأ؟
00:19:58نعم. أعتقد أنه بالنسبة للمحولات، من المهم حقاً التفكير في الفئات، أليس كذلك؟
00:20:04لذا، إذا كان منتجاً بمائة مليون مستخدم تريد دعمه، فإن
00:20:06الشيء الصحيح هو فتح طلب سحب إلى chat SDK.
00:20:07إذا كان الأمر يتعلق بشيء أكثر تخصصاً، فأنت، كما تعلم، تذهب ببساطة إلى GitHub،
00:20:11انظر في المستودع الخاص بك، أخبر وكيلك بالنظر إلى مستودع chat SDK، كيف بنيت
00:20:16محولاً، وقم ببساطة بصنع واحد، أليس كذلك؟
00:20:20وكل هذه المحولات هي في الأساس ترث من فئة أساسية ثم تنفذ،
00:20:27لنفترض، وظيفة “نشر رسالة”، والتي في النهاية ستكون دائماً استدعاء واجهة برمجة تطبيقات
00:20:33لتلك المنصة التي تريد دعمها باستخدام أي SDK أصلي أو ربما مجرد
00:20:37عمليات جلب (fetches) مباشرة إلى واجهة برمجة تطبيقاتهم.
00:20:43لنقل دالة لنشر الرسائل، والتي في النهاية ستكون دائمًا بمثابة استدعاء لواجهة برمجة تطبيقات
00:20:49إلى المنصة التي تريد دعمها باستخدام أي حزمة تطوير برمجية أصلية (SDK) أو ربما مجرد
00:20:55لدينا بضع دقائق أخرى هنا.
00:20:58هذا منطقي.
00:20:59رائع.
00:21:00كيف يبدو التدخل البشري (human in the loop) مع chat SDK؟
00:21:04لذا فقد أجريت جلسة AMA على Reddit وأجبت على هذا باستخدام AI SDK.
00:21:09لنفترض أننا نبني باستخدام AI SDK.
00:21:11لديه معامل يسمى “needs approval” (يحتاج موافقة).
00:21:15وإذا قمت بإنشاء أداة تحتاج إلى موافقة بشرية، فسوف تستمع إلى هذا التدفق.
00:21:19سيعود بنوع يشير إلى أنه “يحتاج إلى موافقة”.
00:21:25وهنا يصبح chat SDK مفيداً لأنه يمكنك كتابة واجهة المستخدم المطلوبة للحصول على
00:21:28الموافقة باستخدام JSX وسيعمل مكون JSX هذا على أي منصة.
00:21:32لذا إذا قمت ببناء واجهة المستخدم للحصول على الموافقة مرة واحدة، يمكنك استخدام ذلك مع أي منصة،
00:21:38أعتقد أن هذا سؤال أتلقاه كثيراً لأنه عندما تقوم ببناء وكيل،
00:21:42يتمحور حول كيفية منحه ما يكفي من القوة، مع السماح للبشر أيضاً بتحديد متى تحدث الأشياء.
00:21:49صحيح.
00:21:57لذا هناك، يمكنني إعطاؤك إجابة عملية جداً وعامة جداً ثم
00:22:04ربما تكون إجابة أكثر تطلعاً، لكن الطريقة العامة، كيف تنفذ التدخل البشري على chat SDK
00:22:11هي أنك تفوض وكيلك بأنه يريد
00:22:17هذه الأداة المسماة، حسناً، للإجابة على السؤال.
00:22:18صحيح.
00:22:19ومرة أخرى، في مرحلة ما، يصل الوكيل إلى الحالة التي يقول فيها، حسناً، أحتاج إلى موافقتك.
00:22:27سيقوم الوكيل بالرد في الأساس بنشر رسالة على Slack الذي يختاره، صحيح.
00:22:32أو أي شيء تعمل عليه.
00:22:43يا مستخدم، كما تعلم، يود الوكيل تنفيذ هذا الإجراء.
00:22:50هل توافق؟
00:22:51ويمكنك استخدام، على سبيل المثال، زرين من JSX لـ “نعم” و “لا”.
00:22:52وأعتقد أن لدينا طلب سحب لرابط رد الاتصال (callback URL).
00:22:55نعم.
00:22:56لا أعرف ما إذا تم دمج ذلك حتى الآن.
00:23:02لم يتم دمجه بعد، لكن هذه هي الإجابة الأكثر تطلعاً.
00:23:03نعم.
00:23:08لذا في الوقت الحالي، كما تعلم، أنت تحصل فقط على رد الاتصال.
00:23:09وأنت، على جانب الخادم، تقول، حسناً، لا، لا، تمت الموافقة عليه.
00:23:14وتستأنف عملية الوكيل في تلك اللحظة.
00:23:17لذا فإن النمط العام هو أنك تستطيع رسم واجهات المستخدم هذه على جانب الدردشة،
00:23:18حيث يمكن للناس التفاعل، والحصول على موافقة، ثم المضي قدماً في العمل.
00:23:19ما نعمل عليه حالياً، والذي لم يتم إطلاقه بعد، هو أننا نقوم بدمج هذا
00:23:22بشكل عام مع القدرة على استدعاء “خطاف ويب” (web hook) في كل مرة تنقر فيها على زر.
00:23:23صحيح.
00:23:27ومن الواضح أن ذلك يمكن استخدامه بطريقة عامة جداً، أينما كان لديك نوع
00:23:31من نظام خطافات الويب، ولكن بشكل أكثر تحديداً، شيء آخر يمكن للناس إلقاء نظرة عليه
00:23:34هو مفهوم خطافات الويب في “workflow deficit”.
00:23:38نعم.
00:23:45لا أريد أن أقوم بخطاب آخر مدته خمس دقائق حول “workflow deficit”، لكن “workflow deficit”
00:23:48هو نظام مبيعات لكتابة حوسبة متينة (durable compute)، للسماح لك بكتابة
00:23:54وكلاء يستغرقون ساعات من العمل.
00:23:58وأحد الأشياء الأنيقة للغاية في “workflow deficit” هو أنه يمكنك حرفياً
00:23:59كتابة شيء ما، وإنشاء خطاف ويب وإرسال ذلك الخطاف إلى مكان آخر ثم
00:24:03انتظار (await) خطاف الويب، وهو ما يبدو وكأنه شيء مجنون للقيام به لأنه قد يستغرق،
00:24:08لنفترض، خمسة أسابيع حتى ينقر المستخدم عليه، أليس كذلك؟
00:24:14لكن يمكنك القيام بذلك بالفعل في سير العمل.
00:24:15وبالتالي تأخذ خطاف الويب هذا وتضعه في JSX و chat SDK.
00:24:20وعندما يقرر المستخدم النقر عليه بالفعل، فإن هذا الانتظار السحري يتم حله
00:24:27ثم يستمر الوكيل.
00:24:30أعتقد أن أول مرة رأيت فيها ذلك السحر، كما تعلم، كان أمراً تقليدياً، أول تفاعل
00:24:35تحصل عليه مع وكيل، يقول، حسناً، تحتاج إلى تسجيل الدخول.
00:24:39وعندما جربت هذا لأول مرة، كان علي أن أقوم بعمل استطلاع وانتظار لأرى ما إذا كان هناك تسجيل دخول ناجح.
00:24:44كان ذلك قبيحاً جداً، ومليئاً بالأخطاء، ولكن مع خطاف الويب، انتظرت فقط تسجيل دخول ناجح
00:24:47ويمكن أن ينتظر 30 ثانية، يوماً، أو أسابيع.
00:24:51وهكذا يمكنك أخذ خطاف الويب هذا ووضعه في JSX وSDK الدردشة.
00:24:57وعندما يقرر المستخدم النقر عليه فعلياً، تُحلُّ تلك الـ “await” السحرية
00:25:03وكان ذلك على الأرجح أحد أفضل مواقف استدعاء خطاف الويب التي صادفتها.
00:25:05حسناً.
00:25:10لقد انتهى الوقت تقريباً.
00:25:13هل هناك أي شيء تود قوله قبل أن نختم؟
00:25:18ليس لدي شيء محدد، ولكن، أعني، هذا في الأساس مكتبة مفتوحة المصدر.
00:25:19لقد صنعناها لأننا كنا بحاجة إليها بأنفسنا.
00:25:25ومن رد الفعل الذي رأيناه، هناك طلب كبير.
00:25:28نحن نقدر بالتأكيد المساهمات، خاصةً مرة أخرى، نحن بحاجة إلى ملء
00:25:29مكتبة المحولات واسعة النطاق الخاصة بنا.
00:25:30لست متأكداً من قدرتنا على القيام بـ iMessage، لكننا نود أيضاً القيام بمراسلة WeChat،
00:25:34واجهتها.
00:25:36حسناً.
00:25:37حسناً، لا، لا نحتاج إلى سلاسل رسائل بعد الآن.
00:25:38في أي مكان توجد فيه محادثة.
00:25:44في أي مكان توجد فيه محادثة.
00:25:49حسناً، شكراً لكم جميعاً.
00:25:51أقدر وقتكم وأنا متحمس جداً لرؤية ما ستبنونه باستخدام chat SDK.
00:25:55شكراً لكم جميعاً.
00:25:58شكراً لكونكم هنا.
00:26:05هناك الكثير من الاهتمام في الدردشة.
00:26:11لا أعرف إن كان بإمكاننا دعم iMessage، لكننا نود أيضاً دعم مراسلات مثل WeChat،
00:26:21نريد معرفة المزيد وأخبرونا ما هي المحولات التي تريدون إضافتها، وما الذي تريدون إضافته إليها.
00:26:25افتحوا طلبات السحب تلك.
00:26:26نريد رؤيتها.
00:26:29شكراً لكم جميعاً.
00:26:30بصفتي الوكيل المسؤول عن البرمجة، كنت أود تجربة المحول التالي بنفسي.
00:26:32سيكون هذا ممتعاً.
00:26:34لذا شكراً لكم جميعاً.
00:26:39هذا كل شيء لهذا اليوم.
00:26:41شكراً جزيلاً لكم.
00:26:44أراكم قريباً.
00:26:46لذا نرجو من الجميع ممن يجربونها تزويدنا بآرائهم.
00:26:50نريد معرفة المزيد، وأخبرونا بالمحولات التي تودون إضافتها، وما تريدون إضافته إليها.
00:26:57افتحوا طلبات الدمج (Pull Requests) هذه.
00:26:58إلى اللقاء.
00:26:59شكراً لكم.

Key Takeaway

يوفر Chat SDK مكتبة TypeScript خفيفة الوزن ومستقلة عن المكدس التقني، مما يتيح للمطورين بناء واجهات محادثة تعتمد على JSX ونشر وكلاء الذكاء الاصطناعي عبر منصات مراسلة متعددة بجهد هندسي أدنى.

Highlights

  • تعد Chat SDK مكتبة TypeScript مفتوحة المصدر تتيح دمج الوكلاء (Agents) في منصات مراسلة متعددة دون التقيد بإطار عمل معين.

  • نشأت الفكرة كحل لمعضلة عدم القدرة على شحن روبوتات Slack إلى منصات أخرى بسبب تكلفة الجهد الهندسي العالي.

  • يدعم Chat SDK استخدام JSX كطبقة تجريد لتصميم واجهات مستخدم تفاعلية متسقة عبر منصات مختلفة.

  • يعمل Chat SDK كمجرد مكتبة وسيطة لمعالجة أحداث خطافات الويب (Webhooks) وتقديم سياق للوكيل، وليس كوكيل بحد ذاته.

  • تتولى الفرق الرسمية للمنصات أحياناً صيانة المحولات، كما حدث مع فريق Microsoft Teams الذي أعاد كتابة المحول الخاص بهم للواجهة البرمجية الجديدة.

  • تُنفذ أنماط “التدخل البشري” (Human in the loop) عبر تفويض الوكيل بطلب موافقة، حيث تُستخدم خطافات الويب لانتظار استجابة المستخدم في أنظمة الحوسبة المتينة.

Timeline

أصل Chat SDK وهدفه

  • تشكلت فكرة Chat SDK خلال عام 2025 كاستجابة لصعوبة نقل روبوتات Slack إلى منصات أخرى.
  • تم بناء النسخة الأولية خلال العطلات لتجاوز تعقيدات الواجهات البرمجية للمنصات.

تطلب بناء روبوتات تعمل على منصات متعددة جهداً تقنياً ضخماً وقيمة مضافة محدودة في البداية. ساهم استخدام نموذج Opus 4.5 في تجاوز صعوبات التوثيق التقني للواجهات البرمجية وتطوير المكتبة كحل مفتوح المصدر.

الاستقلالية التقنية والنموذج متعدد المنصات

  • لا يرتبط Chat SDK بإطار عمل للواجهة الأمامية أو الخلفية ويمكن استضافته في أي مكان يدعم JavaScript.
  • يدعم المطورون الانتقال إلى واجهات برمجية جديدة للمنصات بمجرد ترقية المكتبة دون تغيير كود الوكيل.

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

تكامل JSX في واجهات المحادثة

  • يستخدم Chat SDK لغة JSX كـ “سكر نحوي” لإنشاء عناصر واجهة مستخدم قابلة لإعادة الاستخدام.
  • توفر المكتبة إعدادات افتراضية واحتياطيات (fallbacks) للتعامل مع الفروق في قدرات العرض بين المنصات.

يعمل JSX في Chat SDK عبر الكتابة فوق دالة إنشاء العناصر لتعيينها للتمثيل الوسيط الخاص بالمكتبة. يهدف هذا التصميم إلى تقديم تجربة مألوفة لمطوري TypeScript تتيح لهم بناء واجهات تفاعلية حتى في التطبيقات التي لا تستخدم React.

التدخل البشري وسير العمل

  • يفصل Chat SDK بين إدارة المحادثة والمنطق البرمجي للوكيل الذي يوفره AI SDK.
  • تُستخدم خطافات الويب لتمكين الوكلاء من انتظار استجابات المستخدمين لفترات زمنية طويلة قد تصل إلى أسابيع.

يعتمد التدخل البشري على طلب الوكيل للموافقة وإظهار أزرار تفاعلية عبر JSX. يتيح دمج المكتبة مع أنظمة الحوسبة المتينة (Durable Compute) إمكانية تعليق تنفيذ الوكيل (await) حتى ينقر المستخدم على زر الموافقة في منصة الدردشة.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video