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

1. ภาพรวม

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

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

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

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

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

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

ข้อกำหนด

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

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

โฟลว์ข้อมูล: มาดูรายละเอียดการเคลื่อนย้ายข้อมูลผ่านระบบของเรากัน

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

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

เครื่องมือ Analytics

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

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

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

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

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

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

ขั้นตอนข้างต้นมีอยู่ในส่วนที่ 1 ของห้องทดลองอยู่แล้ว

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

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

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

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

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

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

หากมี API ใดขาดหายไป คุณจะเปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน

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

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

4. การสร้างตัวแทน

ขอแนะนำ Agent Builder

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

การสร้างตัวแทน

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

  1. เริ่มต้นด้วยการเข้าสู่ระบบแพลตฟอร์มเครื่องมือสร้างตัวแทน หากระบบแจ้งให้เปิดใช้งาน API ให้คลิก "ดำเนินการต่อและเปิดใช้งาน API"
  2. คลิก "สร้างแอป" และตั้งชื่อที่สื่อความหมายให้ตัวแทน (เช่น "Retail Shopping Assistant")
  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. จากนั้นคลิก "เครื่องมือ" จากเมนูการนำทาง แล้วคลิก "สร้าง"

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 ดังนี้

ส่วนนี้เป็นส่วนที่เราใช้ปลายทางแบ็กเอนด์เพื่อขับเคลื่อน Agent คัดลอกข้อกำหนด 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. ให้กลับไปที่ 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.

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

5. ทดสอบตัวแทน

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

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

63ac3ef6d1f0f614.png

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

acf3cb0e2be2ed91.png

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

6. ตัวอย่างขั้นตอนการสนทนา

เมื่อถึงขั้นตอนนี้ คุณสามารถทดสอบและปรับปรุงขั้นตอนของตัวแทนการสนทนา (Dialog) ได้โดยทำดังนี้

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 Prompting

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

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

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

dc8c010c36400e64.png

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

e31d9f53bf5564c8.png

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