วัตถุประสงค์
การค้นหาที่พักในทำเลที่เหมาะ ไม่ว่าจะเป็นโรงแรมสำหรับวันหยุดพักผ่อนหรืออพาร์ตเมนต์ที่เหมาะสำหรับครอบครัว มักเป็นกระบวนการที่ใช้เวลานานและน่าหงุดหงิดในการเปรียบเทียบตัวเลือกต่างๆ จะเกิดอะไรขึ้นหากคุณช่วยให้ผู้ใช้ดำเนินการนี้ได้ง่ายขึ้นด้วยเมตริกที่ปรับแต่งเองซึ่งแสดงระดับความเหมาะสมของโรงแรมสำหรับนักท่องเที่ยว หรือจัดอันดับข้อมูลอพาร์ตเมนต์ตามระดับความเหมาะสำหรับครอบครัว ซึ่งเปลี่ยนงานที่น่าเบื่อให้กลายเป็นการตัดสินใจที่ง่ายดาย
เอกสารนี้อธิบายวิธีใช้ Places Aggregate API เพื่อสร้างคะแนนสถานที่แบบไดนามิกที่กําหนดเอง โดยอิงตามความหนาแน่นของสถานที่ภายในพื้นที่ทางภูมิศาสตร์ที่กําหนด คะแนนซึ่งเป็นการจัดอันดับตัวเลขตามเกณฑ์ที่ระบุจะสื่อสารได้ทันทีว่าสถานที่นั้นเหมาะกับความต้องการของผู้ใช้มากน้อยเพียงใด
ลองพิจารณาสถานการณ์ที่คุณโปรโมตโรงแรมในเมืองหนึ่งและต้องการไฮไลต์โรงแรมในพื้นที่ท่องเที่ยวที่น่าสนใจที่สุดด้วยการสร้างคะแนนความเหมาะสำหรับนักท่องเที่ยว ใช้ Places Aggregate API เพื่อนับจํานวนประเภทสถานที่ที่เกี่ยวข้องซึ่งอยู่ใกล้โรงแรมแต่ละแห่ง ตัวอย่างเช่น คุณทราบว่าลูกค้าให้ความสำคัญกับโรงแรมในสถานที่ตั้งที่อยู่ใกล้กับสถานที่ต่อไปนี้
- ร้านอาหารและร้านกาแฟ
- สวนสาธารณะและพิพิธภัณฑ์
- ร้านเสื้อผ้า
การใช้การถ่วงน้ำหนักความสำคัญกับจํานวนสถานที่ประเภทที่เลือกเหล่านี้จะช่วยให้คุณคํานวณคะแนนโดยรวมสําหรับสถานที่ตั้งโรงแรมแต่ละแห่งได้ คะแนนนี้แสดงถึงความเหมาะสมโดยรวมของสถานที่ โดยอิงตามสถานที่ใกล้เคียง น้ำหนักที่กำหนดให้กับสถานที่แต่ละประเภทควรสอดคล้องกับ Use Case ที่เฉพาะเจาะจงและสิ่งที่มีความสำคัญต่อกลุ่มเป้าหมาย เอกสารนี้จะใช้คะแนนเหมาะสำหรับนักท่องเที่ยวเป็นตัวอย่างหลัก แต่คุณสร้างคะแนนให้สอดคล้องกับข้อมูลประชากรและความต้องการของผู้ใช้ได้
ข้อกำหนดเบื้องต้น
ก่อนอ่านเอกสารนี้ เราขอแนะนำให้คุณทำความคุ้นเคยกับเอกสารประกอบต่อไปนี้
- เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ของ Places Aggregate API เพื่อทําความเข้าใจรายละเอียดทางเทคนิคและพารามิเตอร์ที่ใช้ได้
- [ไม่บังคับ] เอกสารประกอบนักพัฒนาแอป Gemini เกี่ยวกับ API เพื่อทําความเข้าใจวิธีเรียกใช้ Gemini โดยใช้ API และใช้ในเอกสารนี้เพื่อเป็นตัวเลือกในการสร้างคะแนนตําแหน่งที่กำหนดเอง
สาธิต
การสาธิตนี้แสดงตัวอย่างคะแนนสถานที่ที่กำหนดเอง เลือกเมืองจากเมนูแบบเลื่อนลง แล้วคลิกปุ่มคํานวณคะแนนที่กําหนดเองเพื่อแสดงคะแนนสถานที่ตั้งที่กําหนดเองสําหรับสถานที่ตั้ง 5 แห่งที่ป้อนข้อมูลไว้ล่วงหน้า
เลือกประเภทสถานที่ที่เกี่ยวข้อง
ขั้นตอนแรกในการสร้างคะแนนสถานที่ที่กำหนดเองคือเลือกประเภทสถานที่ที่เกี่ยวข้องกับลูกค้าจากตาราง A ขณะกําลังสร้างคะแนนเหมาะสำหรับนักท่องเที่ยว เราได้เลือกสถานที่ประเภทต่อไปนี้ซึ่งนักท่องเที่ยวต้องการอยู่ใกล้ๆ ระหว่างเข้าพัก
- ร้านอาหาร
- สวนสาธารณะ
- clothing_store
- พิพิธภัณฑ์
- coffee_shop
ถัดไป ให้กําหนดน้ำหนักให้กับสถานที่แต่ละประเภทเหล่านี้ ซึ่งแสดงถึงความสําคัญแบบสัมพัทธ์ในคะแนนสุดท้าย คุณควรกําหนดน้ำหนักโดยพิจารณาจากสิ่งที่สําคัญที่สุดสําหรับ Use Case และความต้องการของผู้ใช้ ในตัวอย่างนี้ รูปแบบการให้น้ำหนักจะอยู่ระหว่าง 0 ถึง 1 ดังนี้
ประเภทสถานที่ |
การถ่วงน้ำหนัก |
ร้านอาหาร |
0.8 |
สวนสาธารณะ |
0.6 |
clothing_store |
0.3 |
พิพิธภัณฑ์ |
0.2 |
coffee_shop |
0.5 |
Call Places Aggregate API
เมื่อคุณมีรายการประเภทสถานที่ที่สนใจแล้ว ขั้นตอนถัดไปคือการเรียกใช้ Places Aggregate API
Places Aggregate API ต้องใช้ตัวกรองสถานที่ตั้ง ในตัวอย่างนี้ ให้ใช้ circle
โดยที่ latLng
ตรงกลางคือตำแหน่งของโรงแรม และ radius
เท่ากับ 500 เมตร นอกจากนี้ ให้ตั้งค่า ratingFilter
ให้แสดงสถานที่ที่มีคะแนนระหว่าง 3.8 ถึง 5 โดยยกเว้นสถานที่ที่มีคะแนนต่ำกว่าจากการนับ
ลองเปลี่ยนการตั้งค่าตัวกรองสถานที่สําหรับ Use Case ที่เฉพาะเจาะจง เช่น คุณอาจต้องการจับภาพสถานที่ภายในรัศมีที่กว้างขึ้นจากละติจูดและลองจิจูดของศูนย์กลางโดยเพิ่มค่าของรัศมี หรือคุณอาจต้องการใช้วิธีอื่นในการตั้งค่าพื้นที่การค้นหา เช่น ภูมิภาค หรือพื้นที่ที่กําหนดเอง
ทำความคุ้นเคยกับส่วนตัวกรองสถานที่ของเอกสารประกอบเกี่ยวกับ Places Aggregate API เพื่อดูข้อมูลเกี่ยวกับตัวเลือกที่มีให้คุณ
เรียกใช้ Places Aggregate API สําหรับสถานที่แต่ละประเภทและสถานที่ตั้งที่ต้องการสร้างคะแนนที่กําหนดเอง ตัวอย่างเช่น เรียกใช้ประเภทสถานที่ร้านอาหารสำหรับโรงแรมแห่งหนึ่งของคุณ
curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY \
--header 'Content-Type: application/json' \
--data '{
"insights": [
"INSIGHT_COUNT"
],
"filter": {
"locationFilter": {
"circle": {
"latLng": {
"latitude": 51.51611,
"longitude": -0.12726
},
"radius": 500
}
},
"typeFilter": {
"includedTypes": [
"restaurant"
]
},
"ratingFilter": {
"minRating": 3.8,
"maxRating": 5
}
}
}'
หลังจากการเรียก API ทั้งหมดเสร็จสมบูรณ์แล้ว คุณจะมีข้อมูลสำหรับแต่ละสถานที่ดังต่อไปนี้
ประเภทสถานที่ |
การถ่วงน้ำหนัก |
จำนวน |
ร้านอาหาร |
0.8 |
56 |
สวนสาธารณะ |
0.6 |
3 |
clothing_store |
0.3 |
32 |
พิพิธภัณฑ์ |
0.2 |
8 |
coffee_shop |
0.5 |
41 |
สร้างคะแนนสถานที่ตั้งที่กําหนดเอง
ตอนนี้คุณมีจํานวนสถานที่และน้ำหนักของสถานที่แต่ละประเภทสําหรับแต่ละสถานที่แล้ว คุณจึงสร้างคะแนนสถานที่ที่กําหนดเองได้ เราจะพูดถึง 2 ตัวเลือกในส่วนนี้ ได้แก่ การใช้อัลกอริทึมในเครื่องหรือใช้ Gemini Developer API
ตัวเลือกที่ 1: ใช้อัลกอริทึม
ตัวเลือกแรกที่เราจะพูดถึงคือการใช้อัลกอริทึมในพื้นที่เพื่อสร้างคะแนนโดยใช้น้ำหนักและจำนวนของสถานที่แต่ละประเภท ปรับคะแนนนี้เป็นรูปแบบ 0 ถึง 5 โดยค่าที่สูงกว่าบ่งบอกถึงพื้นที่ที่น่าสนใจกว่าตามเกณฑ์ของคุณ สําหรับตัวอย่างนี้ ให้สร้างออบเจ็กต์ JavaScript 2 รายการจากข้อมูลด้านบน
itemCounts |
typeWeights |
{ "restaurant": 56, "park": 3, "clothing_store": 32, "museum": 8, "coffee_shop": 41 } |
{ "restaurant": 0.8, "park": 0.6, "clothing_store": 0.3, "museum": 0.2, "coffee_shop": 0.5 } |
สร้างคะแนนจากจํานวนและการถ่วงน้ำหนักโดยการคูณ itemCounts
ด้วย typeWeights
แล้วเพิ่มผลลัพธ์ลงใน weightedCount
โดยรวม
let weightedCount = 0;
for (const itemType in itemCounts) {
weightedCount += itemCounts[itemType] * typeWeights[itemType];
}
weightedCount = weightedCount.toFixed(2);
ในตัวอย่างนี้ เอาต์พุตของขั้นตอนนี้คือ 78.3
ตอนนี้คุณใช้การทำให้มาตรฐานแบบลอการิทึมเพื่อสร้างคะแนนสุดท้ายของสถานที่นี้ในสเกล 0 ถึง 5 ได้แล้ว
if (weightedCount === 0) {
normalizedScore = 0;
} else {
normalizedScore = Math.log(weightedCount + 1);
}
// Clamp between 0 and 5
normalizedScore = Math.max(0, Math.min(5, normalizedScore));
ในตัวอย่างนี้ เอาต์พุตคะแนนสุดท้ายคือ 4.36 (ปัดเศษทศนิยม 2 ตำแหน่ง)
ตัวเลือกที่ 2: ใช้ Gemini Developer API
Gemini Developer API เป็นทางเลือกที่มีประสิทธิภาพในการคํานวณคะแนนสถานที่ตั้งที่กําหนดเองสําหรับสถานที่ตั้งทั้งหมด แทนการใช้อัลกอริทึมในพื้นที่ เพียงระบุจํานวนข้อมูลและน้ำหนักพร้อมกับวิธีการของระบบสําหรับสถานที่ตั้งโรงแรมทั้งหมด
วิธีนี้มีประโยชน์อย่างยิ่งหากคุณมีข้อมูลที่ละเอียดอ่อนซึ่งคุณต้องการรวมไว้ในการคํานวณ เช่น
- คำอธิบายแบบข้อความสำหรับสถานที่ตั้งของโรงแรมแต่ละแห่ง เช่น "สถานที่นี้เหมาะสำหรับครอบครัวและพื้นที่เงียบสงบในตอนกลางคืน"
- ข้อมูลเกี่ยวกับผู้ใช้ เช่น "ผู้ใช้รายนี้จองที่พักให้ครอบครัวและต้องการที่พักที่เงียบสงบในใจกลางเมือง"
Gemini Developer API สามารถเข้าใจและพิจารณาข้อมูลเชิงคุณภาพนี้ ซึ่งส่งผลให้ได้คะแนนที่มีความซับซ้อนและมีความเกี่ยวข้องมากกว่าแนวทางทางคณิตศาสตร์ล้วนๆ
เมื่อใช้ Gemini Developer API นอกเหนือจากประเภทสถานที่และตารางการให้น้ำหนักข้างต้น คุณจะมีข้อมูลรายละเอียดสำหรับสถานที่แต่ละแห่งดังต่อไปนี้
ตำแหน่ง |
คำอธิบาย |
ตั้งอยู่ใจกลางเมืองใกล้กับพิพิธภัณฑ์ เงียบสงบในตอนกลางคืน และเหมาะสำหรับครอบครัว |
|
ตั้งอยู่ใจกลางเมืองใกล้กับบาร์และร้านอาหาร เสียงดังและวุ่นวายในตอนกลางคืน เหมาะสำหรับมาเป็นกลุ่ม |
|
ที่พักอาศัยที่อยู่ไกลจากใจกลางเมือง |
|
ที่พักตั้งอยู่ใจกลางเมืองใกล้กับแม่น้ำ เงียบสงบในตอนกลางคืน และเหมาะสำหรับครอบครัว |
|
ที่พักอาศัยที่อยู่ไกลจากใจกลางเมือง |
คุณใส่คำอธิบายเชิงคุณภาพเหล่านี้พร้อมกับข้อมูลหรือค่ากําหนดของผู้ใช้ไว้ในพรอมต์ที่ส่งไปยัง Gemini ได้
วิธีการของระบบ
Gemini ต้องใช้วิธีการพร้อมกับข้อมูลดิบเพื่อให้ทราบว่าต้องสร้างคะแนนสำหรับสถานที่แต่ละแห่งตามจุดข้อมูลที่ให้ไว้ ตัวอย่างวิธีการของระบบเพื่อให้บรรลุเป้าหมายนี้อาจเป็นดังนี้
You will be given a json file containing details about a number of locations grouped by their latitude and longitudes. Within the location details is information about the count of places nearby the location that match a specific category, and the weighting of importance of that category, between 0 - 1. You will also be given information about the user's preference, and a description of each location. Take this into consideration when generating scores. Generate a location suitability score taking these into account for each location. The score should be between 1 - 5 inclusive, to two decimal places. The minimum score a location can receive is 1. Output in JSON
คำสั่งของระบบข้างต้นช่วยให้ Gemini ทราบว่าควรคาดหวังข้อมูลใดและผลลัพธ์ที่คาดหวังจากโมเดล AI เป็นอย่างไร รวมถึงขอผลลัพธ์ในรูปแบบ JSON ด้วย
เอาต์พุตที่มีโครงสร้าง
แม้ว่าเราจะขอให้ Gemini แสดงผลลัพธ์เป็น JSON แต่เราจำเป็นต้องระบุโครงสร้างของเอาต์พุตให้ชัดเจนยิ่งขึ้น เพื่อให้ทราบสิ่งที่จะเกิดขึ้นเมื่อเราค้นหาด้วยโค้ด ในกรณีนี้ เราสามารถเพิ่มคำสั่ง structured output เพิ่มเติมลงในคําขอได้โดยใช้ช่อง responseSchema ใน Gemini API ซึ่งจะใช้ออบเจ็กต์สคีมา OpenAPI เพื่อจำกัดเอาต์พุตของโมเดล
เช่น
{
"type": "array",
"description": "Array of location data with score",
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"description": "Geographical coordinates of the location",
"properties": {
"latitude": {
"type": "number",
"format": "float",
"description": "Latitude of the location"
},
"longitude": {
"type": "number",
"format": "float",
"description": "Longitude of the location"
}
},
"required": [
"latitude",
"longitude"
]
},
"score": {
"type": "string",
"description": "A score associated with the location"
}
},
"required": [
"location",
"score"
]
}
}
ตัวอย่างนี้ขอให้ Gemini แสดงผลอาร์เรย์ JavaScript ด้วยข้อมูลต่อไปนี้
- ละติจูดและลองจิจูดของสถานที่
- คะแนนสถานที่ตั้งที่กำหนดเอง
เมื่อใช้คำสั่งของระบบและเอาต์พุตที่มีโครงสร้างข้างต้น คำตอบจาก Gemini สำหรับสถานที่ตั้งหนึ่งๆ จะมีลักษณะดังนี้ โดย score
คือคะแนนสถานที่ตั้งที่กำหนดเอง
[
{
"location": {
"latitude": 51.51611,
"longitude": -0.12726
},
"score": "4.13"
}
]
แสดงคะแนน
เมื่อสร้างคะแนนสถานที่ตั้งที่กำหนดเองสำหรับสถานที่แต่ละแห่งโดยใช้วิธีการใดวิธีหนึ่งที่อธิบายไว้แล้ว คะแนนดังกล่าวจะแสดงพร้อมกับรายละเอียดของโรงแรม หรือใช้เป็นตัวเลือกการกรองการค้นหาได้ เช่น "แสดงสถานที่ที่มีคะแนนเหมาะสำหรับนักท่องเที่ยวสูง" ซึ่งจะช่วยให้ลูกค้าตัดสินใจได้อย่างมีข้อมูลเมื่อทำการจอง
บทสรุป
การใช้คะแนนสถานที่ตั้งที่กำหนดเองอาจเป็นเครื่องมือที่มีประสิทธิภาพในการช่วยให้ผู้ใช้เห็นภาพรวมความเหมาะสมของพื้นที่ได้อย่างรวดเร็ว เอกสารนี้แสดงการสร้างคะแนนสถานที่ตั้งที่กำหนดเองสำหรับสถานที่ต่างๆ โดยใช้สถานที่ 5 ประเภทแยกกัน การติดตั้งใช้งานนี้สามารถแก้ไขให้เหมาะกับความต้องการของคุณ และสามารถรวมประเภทสถานที่ที่คล้ายกันไว้ในคําขอเดียวเพื่อแสดงผลจํานวนรวมของประเภทเหล่านั้นเพื่อส่งไปยังโซลูชันการให้คะแนนสถานที่ที่กำหนดเอง
ลองใช้ Places Aggregate API เลยเพื่อสร้างคะแนนสถานที่ที่มีประโยชน์เพื่อช่วยให้ลูกค้ามีข้อมูลในการตัดสินใจตามสถานที่
ผู้ร่วมให้ข้อมูล
Henrik Valve | DevX วิศวกร