إنشاء مساعد تسوّق ذكي باستخدام أداة إنشاء الوكيل من خلال AlloyDB وVertex AI Agent Builder - الجزء 2

1. نظرة عامة

في عالم البيع بالتجزئة السريع الوتيرة اليوم، من المهم تقديم خدمة عملاء استثنائية مع توفير تجارب تسوّق مخصّصة. سنُصطحبك في رحلة فنية عبر إنشاء تطبيق دردشة يستند إلى المعرفة ومصمَّم للإجابة عن أسئلة العملاء وتوجيه استكشاف المنتجات وتخصيص نتائج البحث. ويجمع هذا الحل المبتكر بين فعالية AlloyDB لتخزين البيانات، ومحرك تحليلات داخل الشركة لفهم السياق، وGemini (نموذج لغوي كبير) للتحقق من مدى الصلة بالموضوع، و"Agent Builder" من Google لبدء التشغيل السريع للمساعد الحواري الذكي.

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

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

ما الذي ستقوم ببنائه

كجزء من هذا التمرين المعملي (الجزء 2)، سوف:

  1. إنشاء وكيل في Vertex AI Agent Builder
  2. دمج أداة AlloyDB مع الوكيل

المتطلبات

  • متصفح، مثل Chrome أو Firefox
  • مشروع على Google Cloud مع تفعيل الفوترة فيه

2. البنية

تدفق البيانات: لنلقِ نظرة فاحصة على كيفية انتقال البيانات عبر نظامنا:

نقل البيانات:

يتم تحميل بيانات البيع بالتجزئة (المستودع وأوصاف المنتجات وتفاعلات العملاء) باستمرار في AlloyDB.

محرك الإحصاءات:

سنستخدم AlloyDB كمحرّك الإحصاءات لإجراء ما يلي:

  1. استخراج السياق: يحلِّل المحرّك البيانات المخزَّنة في AlloyDB لفهم العلاقات بين المنتجات والفئات وسلوك العملاء وما إلى ذلك حسب الاقتضاء.
  2. تضمين العناصر: يتم إنشاء عمليات التضمين (تمثيلات رياضية للنص) لكل من طلب بحث المستخدم والمعلومات المخزّنة في AlloyDB.
  3. البحث المتجه: يجري المحرك عملية بحث عن التشابه، ويقارن طلبات البحث بتضمين أوصاف المنتجات والمراجعات والبيانات الأخرى ذات الصلة. ويحدد ذلك "الجار الأقرب" الـ 25 الأكثر صلة.

التحقّق من صحة Gemini:

ويتم إرسال هذه الردود المحتمَلة إلى Gemini لتقييمها. يحدّد Gemini ما إذا كانت هذه الصور مناسبة وآمنة لمشاركتها مع المستخدم.

إنشاء الردود:

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

سبق أن تم تناول الخطوات المذكورة أعلاه في الجزء الأول من التمرين.

ناقشنا التفاصيل الفنية لإنشاء محرّك تحليلات يستند إلى المعرفة ويدعمه مساعد التسوّق الذكي. لنتعرّف الآن على كيفية الاستفادة من إبداع أداة Agent Builder لإضفاء الحيوية على هذا المحرّك من خلال واجهة محادثة. تأكد من تجهيز عنوان URL لنقطة النهاية قبل بدء الجزء 2. في ما يلي الخطوة التي نتناولها في هذا التمرين المعملي:

التفاعل الحواري:

تقدِّم أداة Agent Builder الردود على المستخدمين بتنسيق لغة طبيعية، ما يسهِّل المحادثة المتبادلة.

3- قبل البدء

إنشاء مشروع

  1. في Google Cloud Console، ضمن صفحة أداة اختيار المشاريع، اختَر مشروعًا على Google Cloud أو أنشئه.
  2. تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع .
  3. ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud ويتم تحميلها مسبقًا مع bq. انقر على "تفعيل Cloud Shell" في أعلى وحدة التحكّم في Google Cloud.

تفعيل صورة زر Cloud Shell

  1. بعد الربط بخدمة Cloud Shell، يمكنك التحقّق من أنّه تمت مصادقتك من قبل وأنّ المشروع مضبوط على رقم تعريف المشروع باستخدام الأمر التالي:
gcloud auth list
  1. شغّل الأمر التالي في Cloud Shell للتأكد من معرفة الأمر gcloud بمشروعك.
gcloud config list project
  1. إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:
gcloud config set project <YOUR_PROJECT_ID>
  1. تفعيل واجهات برمجة التطبيقات المطلوبة يتوفّر بديل للأمر gcloud من خلال وحدة التحكّم من خلال البحث عن كل منتج أو استخدام هذا الرابط.

وفي حال عدم تضمين أيّ واجهة برمجة تطبيقات، يمكنك تفعيلها دائمًا خلال عملية التنفيذ.

يمكنك الرجوع إلى المستندات حول أوامر gcloud واستخدامها.

ملاحظة مهمة: تأكد أيضًا من إكمال الجزء 1 من التمرين المعملي لإكمال هذا.

4. إنشاء وكيل

لمحة عن أداة إنشاء الوكلاء

Agent Builder هي أداة فعالة وبسيطة تتيح لنا إنشاء وكلاء المحادثة بسرعة وكفاءة. تبسّط هذه المنصة عملية تصميم مسارات الحوار ودمج قواعد المعرفة والاتصال بواجهات برمجة التطبيقات الخارجية. في حالتنا، سنستخدم أداة إنشاء الوكلاء للاتصال بسلاسة بنقطة نهاية Cloud Function التي صممناها في الجزء الأول، ما يتيح لمساعد التسوّق الوصول إلى قاعدة المعلومات لدينا في مجال البيع بالتجزئة والردّ على استفسارات العملاء بذكاء.

إنشاء الوكيل

لنبدأ بإنشاء هذا الوكيل الجديد للإجابة عن أسئلة المستخدمين بشأن منتجات الملابس.

  1. ابدأ بتسجيل الدخول إلى منصّة أداة إنشاء الوكلاء. إذا طُلب منك تفعيل واجهة برمجة التطبيقات، انقر على متابعة وتفعيل واجهة برمجة التطبيقات.
  2. انقر على "CREATE APP" (إنشاء تطبيق) واعطاء وكيلك اسمًا وصفيًا (على سبيل المثال، "مساعد التسوّق للبيع بالتجزئة").
  3. انقر على "نوع التطبيق" "وكيل".

462bb48664e9a14e.png

  1. . أدخِل اسمًا وصفيًا لوكيلك، مثل "مساعد التسوّق للبيع بالتجزئة". وتعيين المنطقة كـ us-central1

10eceef44b1600d1.png

  1. أدخِل تفاصيل موظّف الدعم:
  2. يجب تغيير اسم الوكيل إلى "وكيل تسوّق للبيع بالتجزئة".
  3. إضافة "الهدف" أدناه:
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.

537a87a842aae897.png

  1. احفظه في هذه المرحلة واترك التعليمات فارغة في الوقت الحالي.
  2. ثم انقر فوق "أدوات" من قائمة التنقل وانقر فوق "CREATE" (إنشاء).

2ffae953bbad38e5.png

إدخال اسم الأداة: أداة تسوّق البيع بالتجزئة

إدخال وصف الأداة:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

إدخال المخطط: OpenAPI بتنسيق YAML:

وهذا هو الجزء الذي نستخدم فيه نقطة نهاية الخلفية لتشغيل الوكيل. انسخ مواصفات OpenAPI التالية واستبدل العنصر النائب لعنوان URL (المحاط بين قوسين معقوفين) بنقطة نهاية Cloud Function:

openapi: 3.0.0
info:
 title: AlloyDB Product Matcher
 description: A Cloud Function to query AlloyDB for product matches based on user search text.
 version: 1.0.0
servers:
 - url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
 /:
   post:
     summary: Find matching products based on search text.
     operationId: apparelSearch
     requestBody:
       description: JSON object containing the search text.
       required: true
       content:
         application/json:
           schema:
             type: object
             properties:
               search:
                 type: string
                 description: The user's search query for product matching.
     responses:
       '200':
         description: Successful response with a JSON array of matching products.
         content:
           application/json:
             schema:
               type: array
               items:
                 type: object
                 properties:
                   id:
                     type: string
                     description: Product ID.
                   category:
                     type: string
                     description: Product category.
                   sub_category:
                     type: string
                     description: Product sub-category.
                   uri:
                     type: string
                     description: Product URI or URL.
                   description:
                     type: string
                     description: Product description.
                   literature:
                     type: object
                     description: JSON object containing match information from the ML model.
                     properties:
                       MATCH:
                         type: string
                         description: Whether the product matches the search query (YES/NO).
                       PERCENTAGE:
                         type: string
                         description: Percentage of match.
                       DIFFERENCE:
                         type: string
                         description: Description of differences between the search and product.
       '500':
         description: Internal server error.

اترك الإعدادات الأخرى على قيمها التلقائية وانقر على "حفظ".

  1. ارجع إلى الوكيل في هذه المرحلة لأننا نريد إضافة "أداة" إلى "تعليمات الوكيل" أضف ما يلي إلى العنصر النائب للتعليمات (تذكر أن المسافات البادئة مهمة في تحديد التدفق):
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
   - Check if the request has details like gender, color, material, style and other key apparel details already.
   - If not, seek clarifying details.
   - If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
   - Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.

تأكد من أن الأداة "أداة تسوق البيع بالتجزئة" في قسم "الأدوات المتاحة" ثم احفظ معلومات الوكيل مرة أخرى.

5- اختبار الوكيل

في الجزء الأيسر، من المفترض أن يظهر لك قسم "وكيل المعاينة" الذي يتيح لك اختبار الوكيل.

كما ترون في لقطة الشاشة أدناه، لقد الترحيب بالمستخدمين وبدأت محادثتي بطلب الحصول على قميص أبيض بمطبوعات زرقاء:

63ac3ef6d1f0f614.png

في ما يلي استجابة JSON:

acf3cb0e2be2ed91.png

هذه هي نتيجة JSON الأولية من دالة السحابة الإلكترونية التي تعالج بحث التشابه في AlloyDB. هذا كل شيء! تم اتخاذ كل الخطوات اللازمة مع الوكيل.

6- نموذج مسار المحادثة

في هذه المرحلة، يمكنك اختبار مسار وكيل الحوار (المحادثة) وتكراره:

User: I'm looking for women's boots for winter. 

Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search) 

Cloud Function: (Processes query, returns JSON array) 

Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?

User: No, That is all. Bye!

Agent: Have a good day!

طلبات مختصَرة قليلة

لنفترض الآن أنك تريد رؤية نتيجة وكيل المحادثة بتنسيق رسومي معين بما في ذلك الصور والروابط. ويتم إجراء ذلك باستخدام أمثلة على المحادثات المعروفة أيضًا باسم "طلب لقطات قليلة".

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

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

  1. اكتب ما يلي في الحقل "إدخال إدخال المستخدم" :

dc8c010c36400e64.png

ستظهر لك إجابة مثل هذا:

e31d9f53bf5564c8.png

وسترى أيضًا مصفوفة JSON التي تعرضها نقطة نهاية واجهة برمجة التطبيقات.

  1. انقر الآن على "اسم الوكيل" (كما هو موضّح في الصورة أدناه المميّزة بعلامة اختيار حمراء) في هامش قسم المعاينة وسيتم تمييز جميع علامات التبويب في قسم معاينة المحادثة. الآن انقر فوق زر "حفظ المثال" في أعلى يسار الصفحة في قسم المعاينة ستظهر

1e0a9f6815f63bf9.png

  1. حفظ المحادثة باستخدام الاسم المعروض "رد يتضمّن صورًا" أو شيء من هذا القبيل وانقر على "إنشاء".
  2. انتقل الآن إلى علامة تبويب الرد المميزة بعلامة اختيار سوداء في الصورة أعلاه واستبدل النص "أرى. أنت تبحث عن حذاء أصفر. هل هذا صحيح؟" مع ما يلي:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>

<h2>Featured Sandals</h2>

<table style="overflow-x: auto; white-space: nowrap;">
    <tr>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
    </tr>
</table>

</body>
</html>
  1. انقر على "حفظ". في الأعلى.

كرر العملية لأي عدد تريده من الأمثلة مع أشكال وتدفقات مختلفة للمحادثة.

والآن امضِ قدمًا واختبره باستخدام مدخلات المستخدم:

450166a929645353.png

بعض الأنواع الأخرى من الردود:

be8908c99cd33730.png

ما مِن إجراءات أخرى مطلوبة. لقد أنشأنا واختبرنا "وكيل حواري" لتطبيقنا للبيع بالتجزئة.

7. النشر والدمج

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

8. تَنظيم

لتجنُّب تحصيل رسوم من حسابك على Google Cloud مقابل الموارد المُستخدَمة في هذه المشاركة، يُرجى اتّباع الخطوات التالية:

  1. في وحدة التحكّم في Google Cloud، انتقِل إلى إدارة .
  2. الموارد.
  3. في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على حذف.
  4. في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على إيقاف التشغيل لحذف المشروع.

9. تهانينا

تهانينا! من خلال دمج قوة محرك الإحصاءات المخصص مع الواجهة البسيطة لـ Agent Builder، أنشأنا مساعدًا ذكيًا للتسوّق بالتجزئة ليقدّم تجارب مخصصة ويجيب عن الأسئلة بدقة، ويحقق في النهاية إرضاء العملاء والمبيعات. من خلال الجمع بين إمكانات AlloyDB وVertex AI وVector Search، حققنا قفزة عملاقة في جعل عمليات البحث السياقية والمتّجه سهلة الوصول وفعّالة ومستندة إلى المعنى الفعلي وفعالة.