جلسة مجتمعية: أسئلة وأجوبة حول أدوات تطوير برمجيات الدردشة (Chat SDK)
VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology
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شكراً لكم.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video