1. ภาพรวม
ในวงการการค้าปลีกที่ดำเนินไปอย่างรวดเร็วในปัจจุบัน การมอบบริการลูกค้าที่ยอดเยี่ยมในขณะที่มอบประสบการณ์การช็อปปิ้งที่ปรับเปลี่ยนให้เหมาะกับลูกค้าเป็นสิ่งสำคัญที่สุด เราจะพาคุณสำรวจเส้นทางด้านเทคนิคผ่านการสร้างแอปพลิเคชันแชทที่อาศัยความรู้ ซึ่งออกแบบมาเพื่อตอบคำถามของลูกค้า แนะนำการค้นพบผลิตภัณฑ์ และปรับแต่งผลการค้นหา โซลูชันล้ำสมัยนี้ได้ผสานรวมความสามารถของ AlloyDB สำหรับการจัดเก็บข้อมูล, เครื่องมือวิเคราะห์ข้อมูลภายในสำหรับการทำความเข้าใจตามบริบท, Gemini (โมเดลภาษาขนาดใหญ่) เพื่อการตรวจสอบความเกี่ยวข้อง และ Agent Builder ของ Google สำหรับการเปิดเครื่องผู้ช่วยแบบสนทนาอัจฉริยะได้อย่างรวดเร็ว
ความท้าทาย: ลูกค้าด้านธุรกิจค้าปลีกสมัยใหม่คาดหวังว่าจะได้เห็นคำตอบทันทีและคำแนะนำเกี่ยวกับผลิตภัณฑ์ซึ่งสอดคล้องกับความต้องการเฉพาะตัวของตน วิธีการค้นหาแบบดั้งเดิมมักจะไม่ตรงตามการปรับเปลี่ยนให้เหมาะกับผู้ใช้ในระดับนี้
โซลูชัน: แอปพลิเคชันแชทที่ให้ความรู้กับเราจะจัดการความท้าทายนี้โดยตรง ใช้ประโยชน์จากฐานความรู้ที่หลากหลายซึ่งได้มาจากข้อมูลการค้าปลีกเพื่อทำความเข้าใจความตั้งใจของลูกค้า ตอบสนองอย่างชาญฉลาด และให้ผลลัพธ์ที่เกี่ยวข้องอย่างมาก
สิ่งที่คุณจะสร้าง
ในฐานะส่วนหนึ่งของห้องทดลองนี้ (ส่วนที่ 2) คุณจะทำสิ่งต่อไปนี้ได้
- สร้าง Agent ของ Vertex AI Agent Builder
- ผสานรวมเครื่องมือ AlloyDB กับ Agent
ข้อกำหนด
2. สถาปัตยกรรม
โฟลว์ข้อมูล: มาดูรายละเอียดการเคลื่อนย้ายข้อมูลผ่านระบบของเรากัน
การส่งผ่านข้อมูล:
ระบบจะโหลดข้อมูลการค้าปลีก (สินค้าคงคลัง คำอธิบายผลิตภัณฑ์ การโต้ตอบกับลูกค้า) ลงใน AlloyDB อย่างต่อเนื่อง
เครื่องมือ Analytics
เราจะใช้ AlloyDB เป็นเครื่องมือวิเคราะห์เพื่อดำเนินการต่อไปนี้
- การดึงข้อมูลบริบท: เครื่องมือจะวิเคราะห์ข้อมูลที่จัดเก็บไว้ใน AlloyDB เพื่อทำความเข้าใจความสัมพันธ์ระหว่างผลิตภัณฑ์ หมวดหมู่ พฤติกรรมของลูกค้า ฯลฯ ตามความเหมาะสม
- การฝังการสร้าง: การฝัง (ข้อความเชิงคณิตศาสตร์) จะสร้างขึ้นสำหรับทั้งข้อความค้นหาของผู้ใช้และข้อมูลที่เก็บไว้ใน AlloyDB
- การค้นหาเวกเตอร์: เครื่องมือค้นหาจะดำเนินการค้นหาความคล้ายคลึงกัน เปรียบเทียบคำค้นหาที่ฝังกับคำอธิบายผลิตภัณฑ์ รีวิว และข้อมูลอื่นๆ ที่เกี่ยวข้อง แอตทริบิวต์นี้จะระบุ "เพื่อนบ้านที่อยู่ใกล้ที่สุด" 25 ตัวที่เกี่ยวข้องมากที่สุด
การตรวจสอบ Gemini:
ระบบจะส่งคำตอบที่เป็นไปได้เหล่านี้ไปให้ Gemini ทำการประเมิน Gemini จะพิจารณาว่ามีความเกี่ยวข้องและปลอดภัยที่จะแชร์กับผู้ใช้อย่างแท้จริงหรือไม่
การสร้างคำตอบ:
การตอบกลับที่ตรวจสอบแล้วจะมีโครงสร้างเป็นอาร์เรย์ JSON และเครื่องมือค้นหาทั้งหมดจะได้รับแพ็กเกจไว้ในฟังก์ชัน Cloud Run แบบ Serverless ที่เรียกใช้จาก Agent Builder
ขั้นตอนเหล่านี้มีอธิบายอยู่ในส่วนที่ 1 ของห้องทดลองแล้ว
เราได้พูดถึงรายละเอียดทางเทคนิคของการสร้างเครื่องมือข้อมูลวิเคราะห์ที่ขับเคลื่อนด้วยความรู้และขับเคลื่อนผู้ช่วยช็อปปิ้งอัจฉริยะของเรา มาดูกันว่าเราจะใช้ประโยชน์จากเวทมนตร์ของ Agent Builder เพื่อทำให้กลไกนี้เป็นจริงในอินเทอร์เฟซแบบสนทนาได้อย่างไร โปรดเตรียม URL ปลายทางไว้ให้พร้อมก่อนเริ่มส่วนที่ 2 ขั้นตอนถัดไปคือสิ่งที่เราจะพูดถึงในห้องทดลองนี้
การโต้ตอบแบบสนทนา:
Agent Builder แสดงคำตอบให้แก่ผู้ใช้ในรูปแบบภาษาธรรมชาติ ซึ่งอำนวยความสะดวกในการโต้ตอบกลับไปกลับมา
3. ก่อนเริ่มต้น
สร้างโปรเจ็กต์
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าการเรียกเก็บเงินในโปรเจ็กต์เปิดอยู่หรือไม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานใน Google Cloud ที่มาพร้อมกับ bq ล่วงหน้า คลิก "เปิดใช้งาน Cloud Shell" ที่ด้านบนของคอนโซล Google Cloud
- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณต้องตรวจสอบว่าได้ตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
- หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์
gcloud config set project <YOUR_PROJECT_ID>
- เปิดใช้ API ที่จำเป็น อีกทางเลือกหนึ่งแทนคำสั่ง gcloud คือผ่านทางคอนโซลโดยค้นหาผลิตภัณฑ์แต่ละรายการหรือใช้ลิงก์นี้
หากมี API ขาดหายไป คุณก็เปิดใช้ได้ตลอดเวลาในระหว่างที่ติดตั้งใช้งาน
ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
หมายเหตุสำคัญ: นอกจากนี้ โปรดตรวจสอบว่าคุณได้ทำส่วนที่ 1 ของห้องทดลองแล้ว เพื่อดำเนินการให้เสร็จสมบูรณ์
4. การสร้างตัวแทน
ขอแนะนำ Agent Builder
Agent Builder เป็นเครื่องมือที่ทรงพลังและใช้โค้ดน้อย ซึ่งช่วยให้เราสร้างตัวแทนแบบสนทนาได้อย่างรวดเร็วและมีประสิทธิภาพ ปรับปรุงประสิทธิภาพของกระบวนการออกแบบโฟลว์กล่องโต้ตอบ การผสานรวมฐานความรู้ และการเชื่อมต่อกับ API ภายนอก ในกรณีของเรา เราจะใช้ Agent Builder เพื่อเชื่อมต่อกับปลายทาง Cloud Function อย่างไม่มีสะดุดที่เราสร้างขึ้นในส่วนที่ 1 ซึ่งช่วยให้ผู้ช่วยช็อปปิ้งของเราเข้าถึงฐานความรู้ด้านการค้าปลีกและตอบคำถามของลูกค้าได้อย่างชาญฉลาด
การสร้างตัวแทน
เรามาเริ่มต้นด้วยการสร้างตัวแทนใหม่นี้ในการตอบคำถามของผู้ใช้เรื่องผลิตภัณฑ์เครื่องแต่งกายกัน
- เริ่มด้วยการเข้าสู่ระบบแพลตฟอร์ม Agent Builder หากมีข้อความแจ้งให้เปิดใช้งาน API ให้คลิก "ดำเนินการต่อและเปิดใช้งาน API"
- คลิก "สร้างแอป" และตั้งชื่อที่สื่อความหมายให้ตัวแทน (เช่น "Retail Shopping Assistant")
- คลิกประเภทแอป "ตัวแทน"
- ที่ใช้เวลาเพียง 2 นาที ตั้งชื่อที่สื่อความหมายให้ตัวแทน เช่น "ผู้ช่วยช็อปปิ้งสำหรับร้านค้าปลีก" แล้วตั้งค่าภูมิภาคเป็น us-central1
- ป้อนรายละเอียดสำหรับตัวแทน ดังนี้
- เปลี่ยนชื่อตัวแทนเป็น "ตัวแทน Shopping สำหรับค้าปลีก"
- เพิ่ม "เป้าหมาย" ด้านล่าง:
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.
- ให้บันทึกในขั้นตอนนี้และปล่อยคำแนะนำว่างไว้ในขณะนี้
- จากนั้นคลิก "เครื่องมือ" จากเมนูการนำทาง แล้วคลิก "สร้าง"
ป้อนชื่อเครื่องมือ: เครื่องมือ 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 ดังนี้
ส่วนนี้เป็นส่วนที่เราใช้ปลายทางแบ็กเอนด์เพื่อขับเคลื่อน 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.
ปล่อยการกำหนดค่าอื่นๆ ไว้เป็นค่าเริ่มต้น แล้วคลิก "บันทึก"
- ให้กลับไปที่ 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. ทดสอบตัวแทน
ในแผงด้านขวา คุณควรเห็นส่วน "แสดงตัวอย่างตัวแทน" ซึ่งช่วยให้คุณทดสอบตัวแทนของคุณได้
ดังที่เห็นในภาพหน้าจอด้านล่าง เราได้ทักทายในฐานะผู้ใช้และเริ่มแชทด้วยคำขอเสื้อสีขาวลายสีน้ำเงิน
นี่คือการตอบสนอง JSON:
นี่เป็นผลลัพธ์ JSON ดิบจาก Cloud Function ที่ประมวลผลการค้นหาความคล้ายคลึงกันของ 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!
ใช้ Shot Prompt เพียงเล็กน้อย
คราวนี้สมมติว่าคุณต้องการดูผลลัพธ์ของตัวแทนที่พูดคุยสนทนาในรูปแบบกราฟิกบางรูปแบบ ซึ่งรวมถึงรูปภาพและลิงก์ ซึ่งเราจะดำเนินการโดยใช้ตัวอย่างการสนทนาที่รู้จักกันในชื่อ Few Shot Prompting
ซึ่งหมายความว่าเราต้องการเพิ่มตัวอย่าง 2-3 รายการลงในเครื่องมือสร้างตัวแทนเพื่อให้ได้รูปแบบผลลัพธ์ที่สอดคล้องกัน
ในภาพหน้าจอก่อนหน้าในส่วน "ทดสอบตัวแทน" เราจะเห็นการตอบกลับจากตัวแทนเป็น "ฉันเห็นแล้ว คุณกำลังหาเสื้อเชิ้ตสีขาวพิมพ์ลายสีน้ำเงิน..." ไปที่การตอบกลับนั้นหรือสร้างการสนทนาทดสอบใหม่จากแผงด้านขวาของ Agent
- พิมพ์คำสั่งด้านล่างใน "ป้อนข้อมูลจากผู้ใช้" ส่วน:
คุณจะเห็นคำตอบดังนี้
และจะเห็นอาร์เรย์ JSON ที่ปลายทาง API แสดงด้วย
- จากนั้นคลิก "ชื่อตัวแทน" (ดังที่แสดงในรูปภาพด้านล่างที่ไฮไลต์ด้วยเครื่องหมายถูกสีแดง) จากขอบของส่วนแสดงตัวอย่าง และแท็บทั้งหมดในส่วนแสดงตัวอย่างแชทจะถูกไฮไลต์ไว้ จากนั้นคลิก "บันทึกตัวอย่าง" ที่มุมขวาบนในส่วนแสดงตัวอย่าง ซึ่งมีลักษณะดังนี้
- บันทึกการสนทนาด้วยชื่อที่แสดง "ตอบกลับพร้อมรูปภาพ" หรือชื่ออื่นที่คล้ายกัน แล้วคลิก "สร้าง"
- ต่อไปให้ไปที่แท็บคำตอบที่ไฮไลต์ด้วยเครื่องหมายถูกสีดำในรูปภาพด้านบน และแทนที่ข้อความ "ฉันเห็นแล้ว คุณกำลังมองหารองเท้าแตะสีเหลือง ถูกต้องไหม" ดังต่อไปนี้
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>
- คลิก "บันทึก" ด้านบน
ทำซ้ำขั้นตอนสำหรับตัวอย่างกี่รายการก็ได้เท่าที่ต้องการสำหรับรูปแบบและขั้นตอนของการสนทนาที่แตกต่างกัน
จากนั้นให้ลองทดสอบโดยใช้ข้อมูลจากผู้ใช้ดังนี้
คําตอบประเภทอื่นๆ มีดังนี้
เท่านี้เอง เราสร้างและทดสอบ Conversational Agent สำหรับแอปค้าปลีกของเราสำเร็จแล้ว
7. การติดตั้งใช้งานและการผสานรวม
เมื่อพอใจกับตัวแทนแล้ว คุณก็ทำให้ตัวแทนใช้งานได้ในหลากหลายช่องทางได้อย่างง่ายดายโดยใช้การผสานรวมของ Agent Builder ไม่ว่าจะเป็นการฝังในเว็บไซต์ ผสานรวมกับแพลตฟอร์มการรับส่งข้อความยอดนิยม หรือแม้แต่สร้างแอปสำหรับอุปกรณ์เคลื่อนที่โดยเฉพาะ นอกจากนี้ เรายังใช้ Agent Builder API ได้โดยตรงในแอปพลิเคชันเว็บไคลเอ็นต์ของเรา ซึ่งเราได้อธิบายไว้ในบล็อกนี้
8. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้
- ในคอนโซล Google Cloud ให้ไปที่จัดการ
- แหล่งข้อมูล
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์
9. ขอแสดงความยินดี
ยินดีด้วย เราได้ผสานรวมประสิทธิภาพของเครื่องมือการวิเคราะห์ที่สร้างแบบกำหนดเองเข้ากับอินเทอร์เฟซที่ใช้งานง่ายของ Agent Builder เพื่อสร้างผู้ช่วยการช็อปปิ้งอัจฉริยะที่มอบประสบการณ์ที่ปรับเปลี่ยนให้เข้ากับบุคคล ตอบคำถามอย่างถูกต้อง และนำไปสู่ความพึงพอใจของลูกค้าและยอดขายในที่สุด เมื่อรวมความสามารถของ AlloyDB, Vertex AI และ Vector Search เข้าด้วยกันแล้ว เราได้ก้าวกระโดดครั้งยิ่งใหญ่ในการทำให้การค้นหาตามบริบทและการค้นหาเวกเตอร์เข้าถึงได้ มีประสิทธิภาพ ขับเคลื่อนความหมาย และสมจริงอย่างแท้จริง