สร้างผู้ช่วย Smart Shopping ด้วย AlloyDB และ Vertex AI Agent Builder - ส่วนที่ 2

1. ภาพรวม

ในสภาพแวดล้อมการค้าปลีกที่รวดเร็วในปัจจุบัน การให้บริการลูกค้าที่ยอดเยี่ยมพร้อมทั้งมอบประสบการณ์การช็อปปิ้งที่ปรับเปลี่ยนในแบบของผู้ใช้จึงเป็นสิ่งสำคัญอย่างยิ่ง เราจะพาคุณไปพบกับการเดินทางด้านเทคนิคผ่านการสร้างแอปพลิเคชันแชทที่ขับเคลื่อนด้วยความรู้ ซึ่งออกแบบมาเพื่อตอบคำถามของลูกค้า แนะนำการค้นพบผลิตภัณฑ์ และปรับแต่งผลการค้นหา โซลูชันนวัตกรรมนี้ผสานรวมประสิทธิภาพของ AlloyDB สำหรับการจัดเก็บข้อมูล, เครื่องมือวิเคราะห์ภายในสำหรับการทำความเข้าใจตามบริบท, Gemini (โมเดลภาษาขนาดใหญ่) สำหรับการตรวจสอบความเกี่ยวข้อง และ Agent Builder ของ Google สำหรับการเริ่มต้นใช้งานผู้ช่วยสนทนาอัจฉริยะอย่างรวดเร็ว

ความท้าทาย: ลูกค้าค้าปลีกในปัจจุบันคาดหวังว่าจะได้รับคำตอบทันทีและคำแนะนำผลิตภัณฑ์ที่สอดคล้องกับความต้องการเฉพาะของตน วิธีการค้นหาแบบเดิมๆ มักไม่สามารถให้การปรับเปลี่ยนในแบบของคุณในระดับนี้ได้

โซลูชัน: แอปพลิเคชันแชทที่ขับเคลื่อนด้วยความรู้ของเราจะรับมือกับความท้าทายนี้โดยตรง โดยใช้ประโยชน์จากฐานความรู้ที่ได้จากข้อมูลการค้าปลีกเพื่อทำความเข้าใจความตั้งใจของลูกค้า ตอบสนองอย่างชาญฉลาด และแสดงผลลัพธ์ที่เกี่ยวข้องอย่างยิ่ง

สิ่งที่คุณจะสร้าง

ในแล็บนี้ (ส่วนที่ 2) คุณจะได้ทำสิ่งต่อไปนี้

  1. สร้าง Agent สร้างโค้ดของ Vertex AI Agent Builder
  2. ผสานรวมเครื่องมือ AlloyDB กับ Agent

ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน

2. สถาปัตยกรรม

การไหลเวียนของข้อมูล: มาดูรายละเอียดวิธีที่ข้อมูลไหลเวียนผ่านระบบของเรากัน

การส่งผ่านข้อมูล

ระบบจะโหลดข้อมูลการค้าปลีก (สินค้าคงคลัง รายละเอียดผลิตภัณฑ์ การโต้ตอบของลูกค้า) ลงใน AlloyDB อย่างต่อเนื่อง

เครื่องมือวิเคราะห์:

เราจะใช้ AlloyDB เป็นเครื่องมือวิเคราะห์เพื่อดำเนินการต่อไปนี้

  1. การแยกบริบท: เครื่องมือจะวิเคราะห์ข้อมูลที่จัดเก็บไว้ใน AlloyDB เพื่อทำความเข้าใจความสัมพันธ์ระหว่างผลิตภัณฑ์ หมวดหมู่ พฤติกรรมของลูกค้า ฯลฯ ตามความเหมาะสม
  2. การสร้างการฝัง: ระบบจะสร้างการฝัง (การแสดงข้อความในรูปแบบคณิตศาสตร์) สำหรับทั้งคำค้นหาของผู้ใช้และข้อมูลที่จัดเก็บไว้ใน AlloyDB
  3. การค้นหาเวกเตอร์: เครื่องมือจะทำการค้นหาความคล้ายคลึงโดยเปรียบเทียบการฝังคำค้นหากับการฝังของรายละเอียดผลิตภัณฑ์ รีวิว และข้อมูลอื่นๆ ที่เกี่ยวข้อง ซึ่งจะระบุ "เพื่อนบ้านที่ใกล้ที่สุด" 25 รายการที่เกี่ยวข้องมากที่สุด

การตรวจสอบ Gemini:

ระบบจะส่งคำตอบที่เป็นไปได้เหล่านี้ไปยัง Gemini เพื่อประเมิน Gemini จะพิจารณาว่าข้อมูลดังกล่าวเกี่ยวข้องและปลอดภัยที่จะแชร์กับผู้ใช้จริงหรือไม่

การสร้างคำตอบ:

การตอบกลับที่ตรวจสอบแล้วจะจัดโครงสร้างเป็นอาร์เรย์ JSON และระบบทั้งหมดจะรวมอยู่ในฟังก์ชัน Cloud Run แบบ Serverless ที่เรียกใช้จาก Agent Builder

ขั้นตอนข้างต้นได้อธิบายไว้แล้วในส่วนที่ 1 ของแล็บ

เราได้พูดคุยถึงรายละเอียดทางเทคนิคของการสร้างเครื่องมือวิเคราะห์ที่ขับเคลื่อนด้วยความรู้ซึ่งขับเคลื่อนผู้ช่วยช็อปปิ้งอัจฉริยะของเรา ตอนนี้เรามาดูวิธีใช้ประโยชน์จากความมหัศจรรย์ของ Agent Builder เพื่อทำให้เครื่องมือนี้ใช้งานได้จริงในอินเทอร์เฟซแบบสนทนากัน ตรวจสอบว่าคุณมี URL ของปลายทางพร้อมแล้วก่อนที่จะเริ่มส่วนที่ 2 ขั้นตอนถัดไปนี้คือสิ่งที่เราจะพูดถึงใน Lab นี้

การโต้ตอบแบบสนทนา:

Agent Builder จะแสดงคำตอบต่อผู้ใช้ในรูปแบบภาษาที่เป็นธรรมชาติ ซึ่งช่วยให้เกิดการสนทนาไปมาได้

3. ก่อนเริ่มต้น

สร้างโปรเจ็กต์

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
  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. เปิดใช้ API ที่จำเป็น คุณสามารถใช้คอนโซลแทนคำสั่ง gcloud ได้โดยค้นหาแต่ละผลิตภัณฑ์หรือใช้ลิงก์นี้

หากพลาด API ใดไป คุณก็เปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน

โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

หมายเหตุสำคัญ: โปรดตรวจสอบว่าคุณได้ทำส่วนที่ 1 ของแล็บเสร็จแล้วจึงจะทำส่วนนี้ได้

4. การสร้าง Agent

ขอแนะนำ Agent Builder

Agent Builder เป็นเครื่องมือที่มีประสิทธิภาพและใช้โค้ดน้อย ซึ่งช่วยให้เราสร้างเอเจนต์แบบสนทนาได้อย่างรวดเร็วและมีประสิทธิภาพ ซึ่งจะช่วยเพิ่มประสิทธิภาพกระบวนการออกแบบโฟลว์ของกล่องโต้ตอบ การผสานรวมฐานความรู้ และการเชื่อมต่อกับ API ภายนอก ในกรณีของเรา เราจะใช้ Agent Builder เพื่อเชื่อมต่อกับปลายทาง Cloud Functions ที่เราสร้างขึ้นในส่วนที่ 1 อย่างราบรื่น ซึ่งจะช่วยให้ผู้ช่วยช็อปปิ้งของเราเข้าถึงฐานความรู้ด้านการค้าปลีกและตอบคำถามของลูกค้าได้อย่างชาญฉลาด

การสร้าง Agent

มาเริ่มสร้างเอเจนต์ใหม่นี้เพื่อตอบคำถามของผู้ใช้เกี่ยวกับผลิตภัณฑ์เครื่องแต่งกายกันเลย

  1. เริ่มต้นโดยเข้าสู่ระบบแพลตฟอร์ม Agent Builder หากระบบแจ้งให้เปิดใช้งาน API ให้คลิกดำเนินการต่อและเปิดใช้งาน API
  2. คลิก "สร้างแอป" และตั้งชื่อเอเจนต์ให้สื่อความหมาย (เช่น "ผู้ช่วยช็อปปิ้งค้าปลีก")
  3. คลิกประเภทแอป "Agent"

462bb48664e9a14e.png

  1. . ตั้งชื่อตัวแทนให้สื่อความหมาย เช่น "ผู้ช่วยช็อปปิ้งค้าปลีก" และตั้งค่าภูมิภาคเป็น us-central1

10eceef44b1600d1.png

  1. ป้อนรายละเอียดของตัวแทน
  2. เปลี่ยนชื่อ Agent เป็น "Retail Shopping Agent"
  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. จากนั้นคลิกเครื่องมือจากเมนูการนำทาง แล้วคลิกสร้าง

2ffae953bbad38e5.png

ป้อนชื่อเครื่องมือ: เครื่องมือ Shopping สำหรับการค้าปลีก

ป้อนคำอธิบายเครื่องมือ:

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 Functions ของคุณ

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. กลับไปที่ Agent ในตอนนี้เนื่องจากเราต้องการเพิ่มการกำหนดค่า "เครื่องมือ" ลงใน "วิธีการ" ของ Agent เพิ่มข้อความด้านล่างลงในตัวยึดตำแหน่งของวิธีการ (โปรดทราบว่าการเยื้องมีความสำคัญในการกำหนดโฟลว์)
- 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.

ตรวจสอบว่าได้เลือกเครื่องมือ "เครื่องมือ Shopping สำหรับผู้ค้าปลีก" ในส่วน "เครื่องมือที่ใช้ได้" แล้ว จากนั้นบันทึกตัวแทนอีกครั้ง

5. ทดสอบ Agent

ในบานหน้าต่างด้านขวา คุณควรเห็นส่วน "แสดงตัวอย่าง Agent" ซึ่งช่วยให้คุณทดสอบ Agent ได้

ดังที่เห็นในภาพหน้าจอด้านล่าง ฉันได้ทักทายในฐานะผู้ใช้และเริ่มแชทด้วยคำขอเสื้อเชิ้ตสีขาวลายพิมพ์สีน้ำเงิน

63ac3ef6d1f0f614.png

นี่คือการตอบกลับ JSON

acf3cb0e2be2ed91.png

นี่คือผลลัพธ์ JSON ดิบจาก Cloud Function ที่ประมวลผลการค้นหาความคล้ายคลึงกันของ AlloyDB เท่านี้ก็เรียบร้อย ตอนนี้เราพร้อมที่จะคุยกับตัวแทนแล้ว

6. ลำดับการสนทนาตัวอย่าง

ในขั้นตอนนี้ คุณสามารถทดสอบและทำซ้ำโฟลว์ของ Agent กล่องโต้ตอบ (การสนทนา) ได้โดยทำดังนี้

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!

พรอมต์แบบ Few-Shot

สมมติว่าคุณต้องการดูผลลัพธ์ในเอเจนต์การสนทนาในรูปแบบกราฟิกที่เฉพาะเจาะจง ซึ่งรวมถึงรูปภาพและลิงก์ เราจะทำเช่นนั้นโดยใช้ตัวอย่างการสนทนาที่เรียกว่าการแจ้งแบบไม่กี่ช็อต

ซึ่งหมายความว่าเราต้องการเพิ่มตัวอย่างบางส่วนลงในเครื่องมือสร้างเอเจนต์เพื่อให้มีรูปแบบผลลัพธ์ที่สอดคล้องกัน

ในภาพหน้าจอหนึ่งก่อนหน้านี้ในส่วน "ทดสอบเอเจนต์" เราเห็นคำตอบจากเอเจนต์เป็น "ฉันเข้าใจแล้ว คุณกำลังมองหาเสื้อสีขาวที่มีลายพิมพ์สีน้ำเงิน..." ไปที่คำตอบนั้นหรือสร้างการสนทนาทดสอบใหม่จากแผงด้านขวาของตัวแทน

  1. พิมพ์ข้อความด้านล่างในส่วน "ป้อนข้อมูลจากผู้ใช้"

dc8c010c36400e64.png

คุณจะเห็นคำตอบดังนี้

e31d9f53bf5564c8.png

และคุณจะเห็นอาร์เรย์ JSON ที่ปลายทาง API ส่งคืนด้วย

  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 คุณสามารถฝังไว้ในเว็บไซต์ ผสานรวมกับแพลตฟอร์มการรับส่งข้อความยอดนิยม หรือแม้แต่สร้างแอปบนอุปกรณ์เคลื่อนที่เฉพาะได้ นอกจากนี้ เรายังใช้ Agent Builder API โดยตรงในแอปพลิเคชันไคลเอ็นต์บนเว็บได้ด้วย ซึ่งเราได้กล่าวถึงในบล็อกนี้

8. ล้างข้อมูล

โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้

  1. ในคอนโซล Google Cloud ให้ไปที่จัดการ
  2. แหล่งข้อมูล
  3. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
  4. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์

9. ขอแสดงความยินดี

ยินดีด้วย การผสานรวมประสิทธิภาพของเครื่องมือวิเคราะห์ที่เราสร้างขึ้นเองกับอินเทอร์เฟซที่ใช้งานง่ายของ Agent Builder ทำให้เราได้ผู้ช่วยช็อปปิ้งอัจฉริยะสำหรับธุรกิจค้าปลีกที่มอบประสบการณ์เฉพาะบุคคล ตอบคำถามได้อย่างถูกต้อง และท้ายที่สุดก็ช่วยเพิ่มความพึงพอใจของลูกค้าและยอดขาย การผสานความสามารถของ AlloyDB, Vertex AI และ Vector Search ทำให้เราก้าวกระโดดไปข้างหน้าในการทำให้การค้นหาตามบริบทและการค้นหาเวกเตอร์เข้าถึงได้ มีประสิทธิภาพ ขับเคลื่อนด้วยความหมายอย่างแท้จริง และเป็น Agentic