(คลิกที่ภาพด้านบนเพื่อดูวิดีโอของบทเรียนนี้)
การคิดเกี่ยวกับการคิดในตัวแทน AI
ยินดีต้อนรับสู่บทเรียนเกี่ยวกับการคิดเกี่ยวกับการคิดในตัวแทน AI! บทนี้ออกแบบมาสำหรับผู้เริ่มต้นที่อยากรู้ว่าตัวแทน AI สามารถคิดเกี่ยวกับกระบวนการคิดของตัวเองได้อย่างไร เมื่อจบบทเรียนนี้ คุณจะเข้าใจแนวคิดสำคัญและมีตัวอย่างการใช้งานจริงเพื่อประยุกต์ใช้การคิดเกี่ยวกับการคิดในการออกแบบตัวแทน AI
หลังจากจบบทเรียนนี้ คุณจะสามารถ:
การคิดเกี่ยวกับการคิดหมายถึงกระบวนการทางปัญญาระดับสูงที่เกี่ยวข้องกับการคิดเกี่ยวกับการคิดของตัวเอง สำหรับตัวแทน AI หมายถึงความสามารถในการประเมินและปรับเปลี่ยนการกระทำของตัวเองโดยอิงจากการรับรู้ตัวเองและประสบการณ์ที่ผ่านมา การคิดเกี่ยวกับการคิด หรือ “การคิดเกี่ยวกับการคิด” เป็นแนวคิดสำคัญในการพัฒนาระบบ AI ที่มีความเป็นตัวแทน ซึ่งเกี่ยวข้องกับการที่ระบบ AI มีความตระหนักรู้ในกระบวนการภายในของตัวเอง และสามารถตรวจสอบ ควบคุม และปรับเปลี่ยนพฤติกรรมของตัวเองได้ เช่นเดียวกับที่เราทำเมื่อเราประเมินสถานการณ์หรือแก้ปัญหา ความตระหนักรู้ในตัวเองนี้สามารถช่วยให้ระบบ AI ตัดสินใจได้ดีขึ้น ระบุข้อผิดพลาด และปรับปรุงประสิทธิภาพของตัวเองเมื่อเวลาผ่านไป ซึ่งเชื่อมโยงกลับไปยังการทดสอบของทัวริงและการถกเถียงว่า AI จะเข้ามาแทนที่มนุษย์หรือไม่
ในบริบทของระบบ AI ที่มีความเป็นตัวแทน การคิดเกี่ยวกับการคิดสามารถช่วยแก้ไขความท้าทายหลายประการ เช่น:
การคิดเกี่ยวกับการคิด หรือ “การคิดเกี่ยวกับการคิด” เป็นกระบวนการทางปัญญาระดับสูงที่เกี่ยวข้องกับการรับรู้ตัวเองและการควบคุมกระบวนการทางปัญญาของตัวเอง ในโลกของ AI การคิดเกี่ยวกับการคิดช่วยให้ตัวแทนสามารถประเมินและปรับเปลี่ยนกลยุทธ์และการกระทำของตัวเอง ซึ่งนำไปสู่ความสามารถในการแก้ปัญหาและการตัดสินใจที่ดีขึ้น โดยการเข้าใจการคิดเกี่ยวกับการคิด คุณสามารถออกแบบตัวแทน AI ที่ไม่เพียงแต่ฉลาดขึ้น แต่ยังปรับตัวและมีประสิทธิภาพมากขึ้น ในการคิดเกี่ยวกับการคิดที่แท้จริง คุณจะเห็น AI ให้เหตุผลอย่างชัดเจนเกี่ยวกับการให้เหตุผลของตัวเอง
ตัวอย่าง: “ฉันให้ความสำคัญกับเที่ยวบินราคาถูกเพราะ… ฉันอาจพลาดเที่ยวบินตรง ดังนั้นให้ฉันตรวจสอบอีกครั้ง” การติดตามว่าเหตุใดหรืออย่างไรที่มันเลือกเส้นทางหนึ่ง
การคิดเกี่ยวกับการคิดมีบทบาทสำคัญในการออกแบบตัวแทน AI ด้วยเหตุผลหลายประการ:
ก่อนที่จะเจาะลึกกระบวนการคิดเกี่ยวกับการคิด สิ่งสำคัญคือต้องเข้าใจองค์ประกอบพื้นฐานของตัวแทน AI ตัวแทน AI โดยทั่วไปประกอบด้วย:
องค์ประกอบเหล่านี้ทำงานร่วมกันเพื่อสร้าง “หน่วยความเชี่ยวชาญ” ที่สามารถทำงานเฉพาะได้
ตัวอย่าง: ลองนึกถึงตัวแทนการท่องเที่ยว บริการตัวแทนที่ไม่เพียงแต่วางแผนวันหยุดของคุณ แต่ยังปรับเปลี่ยนเส้นทางของมันโดยอิงจากข้อมูลเรียลไทม์และประสบการณ์การเดินทางของลูกค้าในอดีต
ลองจินตนาการว่าคุณกำลังออกแบบบริการตัวแทนการท่องเที่ยวที่ขับเคลื่อนด้วย AI ตัวแทนนี้ “Travel Agent” ช่วยผู้ใช้วางแผนวันหยุดของพวกเขา เพื่อรวมการคิดเกี่ยวกับการคิด Travel Agent จำเป็นต้องประเมินและปรับเปลี่ยนการกระทำของตัวเองโดยอิงจากการรับรู้ตัวเองและประสบการณ์ที่ผ่านมา นี่คือวิธีที่การคิดเกี่ยวกับการคิดสามารถมีบทบาท:
งานปัจจุบันคือช่วยผู้ใช้วางแผนการเดินทางไปปารีส
Travel Agent ใช้การคิดเกี่ยวกับการคิดเพื่อประเมินประสิทธิภาพของตัวเองและเรียนรู้จากประสบการณ์ที่ผ่านมา เช่น:
นี่คือตัวอย่างโค้ดที่เรียบง่ายของ Travel Agent ที่รวมการคิดเกี่ยวกับการคิด:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
# Search for flights, hotels, and attractions based on preferences
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
โดยการรวมการคิดเกี่ยวกับการคิด Travel Agent สามารถให้คำแนะนำการเดินทางที่เป็นส่วนตัวและแม่นยำมากขึ้น ซึ่งช่วยเพิ่มประสบการณ์ของผู้ใช้โดยรวม
การวางแผนเป็นองค์ประกอบสำคัญของพฤติกรรมตัวแทน AI มันเกี่ยวข้องกับการกำหนดขั้นตอนที่จำเป็นเพื่อบรรลุเป้าหมาย โดยพิจารณาจากสถานะปัจจุบัน ทรัพยากร และอุปสรรคที่อาจเกิดขึ้น
ตัวอย่าง: นี่คือขั้นตอนที่ Travel Agent ต้องดำเนินการเพื่อช่วยผู้ใช้วางแผนการเดินทางอย่างมีประสิทธิภาพ:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage within a booing request
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
ก่อนอื่นเรามาเริ่มต้นด้วยการทำความเข้าใจความแตกต่างระหว่างเครื่องมือ RAG และการโหลดบริบทแบบคาดการณ์ล่วงหน้า
RAG รวมระบบการดึงข้อมูลเข้ากับโมเดลการสร้าง เมื่อมีการตั้งคำถาม ระบบการดึงข้อมูลจะดึงเอกสารหรือข้อมูลที่เกี่ยวข้องจากแหล่งข้อมูลภายนอก และข้อมูลที่ดึงมานี้จะถูกใช้เพื่อเสริมอินพุตให้กับโมเดลการสร้าง สิ่งนี้ช่วยให้โมเดลสร้างคำตอบที่แม่นยำและเกี่ยวข้องกับบริบทมากขึ้น
ในระบบ RAG ตัวแทนจะดึงข้อมูลที่เกี่ยวข้องจากฐานความรู้และใช้ข้อมูลนั้นเพื่อสร้างคำตอบหรือการกระทำที่เหมาะสม
วิธีการ RAG แบบแก้ไขมุ่งเน้นไปที่การใช้เทคนิค RAG เพื่อแก้ไขข้อผิดพลาดและปรับปรุงความแม่นยำของตัวแทน AI สิ่งนี้เกี่ยวข้องกับ:
ลองนึกถึงตัวแทนค้นหาที่ดึงข้อมูลจากเว็บเพื่อตอบคำถามของผู้ใช้ วิธีการ RAG แบบแก้ไขอาจเกี่ยวข้องกับ:
RAG แบบแก้ไข (Retrieval-Augmented Generation) ช่วยเพิ่มความสามารถของ
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
new_itinerary = self.generate_recommendations()
return new_itinerary
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)
การโหลดบริบทล่วงหน้าเกี่ยวข้องกับการโหลดข้อมูลพื้นฐานหรือบริบทที่เกี่ยวข้องเข้าสู่โมเดลก่อนที่จะประมวลผลคำถาม ซึ่งหมายความว่าโมเดลจะมีข้อมูลนี้ตั้งแต่เริ่มต้น ซึ่งช่วยให้สามารถสร้างคำตอบที่มีข้อมูลครบถ้วนได้โดยไม่จำเป็นต้องดึงข้อมูลเพิ่มเติมในระหว่างกระบวนการ
ตัวอย่างง่าย ๆ ของการโหลดบริบทล่วงหน้าสำหรับแอปพลิเคชันตัวแทนท่องเที่ยวใน Python:
class TravelAgent:
def __init__(self):
# Pre-load popular destinations and their information
self.context = {
"Paris": {"country": "France", "currency": "Euro", "language": "French", "attractions": ["Eiffel Tower", "Louvre Museum"]},
"Tokyo": {"country": "Japan", "currency": "Yen", "language": "Japanese", "attractions": ["Tokyo Tower", "Shibuya Crossing"]},
"New York": {"country": "USA", "currency": "Dollar", "language": "English", "attractions": ["Statue of Liberty", "Times Square"]},
"Sydney": {"country": "Australia", "currency": "Dollar", "language": "English", "attractions": ["Sydney Opera House", "Bondi Beach"]}
}
def get_destination_info(self, destination):
# Fetch destination information from pre-loaded context
info = self.context.get(destination)
if info:
return f"{destination}:\nCountry: {info['country']}\nCurrency: {info['currency']}\nLanguage: {info['language']}\nAttractions: {', '.join(info['attractions'])}"
else:
return f"Sorry, we don't have information on {destination}."
# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
การเริ่มต้น (__init__
method): คลาส TravelAgent
โหลดพจนานุกรมที่มีข้อมูลเกี่ยวกับสถานที่ยอดนิยม เช่น ปารีส โตเกียว นิวยอร์ก และซิดนีย์ พจนานุกรมนี้รวมถึงรายละเอียดต่าง ๆ เช่น ประเทศ สกุลเงิน ภาษา และสถานที่ท่องเที่ยวสำคัญของแต่ละจุดหมายปลายทาง
การดึงข้อมูล (get_destination_info
method): เมื่อผู้ใช้สอบถามเกี่ยวกับจุดหมายปลายทางเฉพาะ get_destination_info
จะดึงข้อมูลที่เกี่ยวข้องจากพจนานุกรมบริบทที่โหลดไว้ล่วงหน้า
ด้วยการโหลดบริบทล่วงหน้า แอปพลิเคชันตัวแทนท่องเที่ยวสามารถตอบคำถามของผู้ใช้ได้อย่างรวดเร็วโดยไม่ต้องดึงข้อมูลนี้จากแหล่งภายนอกแบบเรียลไทม์ ทำให้แอปพลิเคชันมีประสิทธิภาพและตอบสนองได้ดีขึ้น
การเริ่มต้นแผนด้วยเป้าหมายเกี่ยวข้องกับการเริ่มต้นด้วยวัตถุประสงค์หรือผลลัพธ์ที่ชัดเจนตั้งแต่ต้น โดยการกำหนดเป้าหมายนี้ล่วงหน้า โมเดลสามารถใช้เป็นหลักการนำทางตลอดกระบวนการวนซ้ำ ซึ่งช่วยให้มั่นใจได้ว่าการวนซ้ำแต่ละครั้งจะเข้าใกล้การบรรลุผลลัพธ์ที่ต้องการมากขึ้น ทำให้กระบวนการมีประสิทธิภาพและมุ่งเน้นมากขึ้น
ตัวอย่างของการเริ่มต้นแผนการเดินทางด้วยเป้าหมายก่อนการวนซ้ำสำหรับตัวแทนท่องเที่ยวใน Python:
ตัวแทนท่องเที่ยวต้องการวางแผนวันหยุดที่ปรับแต่งได้สำหรับลูกค้า เป้าหมายคือการสร้างแผนการเดินทางที่เพิ่มความพึงพอใจของลูกค้าให้สูงสุดตามความชอบและงบประมาณของพวกเขา
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def bootstrap_plan(self, preferences, budget):
plan = []
total_cost = 0
for destination in self.destinations:
if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
plan.append(destination)
total_cost += destination['cost']
return plan
def match_preferences(self, destination, preferences):
for key, value in preferences.items():
if destination.get(key) != value:
return False
return True
def iterate_plan(self, plan, preferences, budget):
for i in range(len(plan)):
for destination in self.destinations:
if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
plan[i] = destination
break
return plan
def calculate_cost(self, plan, new_destination):
return sum(destination['cost'] for destination in plan) + new_destination['cost']
# Example usage
destinations = [
{"name": "Paris", "cost": 1000, "activity": "sightseeing"},
{"name": "Tokyo", "cost": 1200, "activity": "shopping"},
{"name": "New York", "cost": 900, "activity": "sightseeing"},
{"name": "Sydney", "cost": 1100, "activity": "beach"},
]
preferences = {"activity": "sightseeing"}
budget = 2000
travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)
refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)
การเริ่มต้น (__init__
method): คลาส TravelAgent
ถูกเริ่มต้นด้วยรายการจุดหมายปลายทางที่มีคุณสมบัติเช่น ชื่อ ค่าใช้จ่าย และประเภทกิจกรรม
การเริ่มต้นแผน (bootstrap_plan
method): เมธอดนี้สร้างแผนการเดินทางเบื้องต้นตามความชอบและงบประมาณของลูกค้า โดยวนซ้ำผ่านรายการจุดหมายปลายทางและเพิ่มเข้าไปในแผนหากตรงกับความชอบของลูกค้าและอยู่ในงบประมาณ
การจับคู่ความชอบ (match_preferences
method): เมธอดนี้ตรวจสอบว่าจุดหมายปลายทางตรงกับความชอบของลูกค้าหรือไม่
การวนซ้ำแผน (iterate_plan
method): เมธอดนี้ปรับปรุงแผนเบื้องต้นโดยพยายามแทนที่จุดหมายปลายทางแต่ละแห่งในแผนด้วยตัวเลือกที่ดีกว่า โดยพิจารณาความชอบและข้อจำกัดด้านงบประมาณของลูกค้า
การคำนวณค่าใช้จ่าย (calculate_cost
method): เมธอดนี้คำนวณค่าใช้จ่ายรวมของแผนปัจจุบัน รวมถึงจุดหมายปลายทางใหม่ที่อาจเพิ่มเข้ามา
ด้วยการเริ่มต้นแผนด้วยเป้าหมายที่ชัดเจน (เช่น การเพิ่มความพึงพอใจของลูกค้าให้สูงสุด) และการวนซ้ำเพื่อปรับปรุงแผน ตัวแทนท่องเที่ยวสามารถสร้างแผนการเดินทางที่ปรับแต่งและเพิ่มประสิทธิภาพสำหรับลูกค้าได้ วิธีการนี้ช่วยให้มั่นใจว่าแผนการเดินทางสอดคล้องกับความชอบและงบประมาณของลูกค้าตั้งแต่เริ่มต้นและปรับปรุงในแต่ละขั้นตอน
Large Language Models (LLMs) สามารถใช้เพื่อการจัดอันดับใหม่และการให้คะแนนโดยการประเมินความเกี่ยวข้องและคุณภาพของเอกสารที่ดึงมา หรือคำตอบที่สร้างขึ้น นี่คือวิธีการทำงาน:
การดึงข้อมูล: ขั้นตอนการดึงข้อมูลเริ่มต้นจะดึงชุดเอกสารหรือคำตอบที่เป็นไปได้ตามคำถาม
การจัดอันดับใหม่: LLM ประเมินตัวเลือกเหล่านี้และจัดอันดับใหม่ตามความเกี่ยวข้องและคุณภาพ ขั้นตอนนี้ช่วยให้ข้อมูลที่เกี่ยวข้องและมีคุณภาพสูงสุดถูกนำเสนอเป็นอันดับแรก
การให้คะแนน: LLM ให้คะแนนแต่ละตัวเลือก ซึ่งสะท้อนถึงความเกี่ยวข้องและคุณภาพของตัวเลือกนั้น ๆ สิ่งนี้ช่วยในการเลือกคำตอบหรือเอกสารที่ดีที่สุดสำหรับผู้ใช้
ด้วยการใช้ LLM เพื่อการจัดอันดับใหม่และการให้คะแนน ระบบสามารถให้ข้อมูลที่แม่นยำและเกี่ยวข้องกับบริบทมากขึ้น ซึ่งช่วยปรับปรุงประสบการณ์ของผู้ใช้โดยรวม
ตัวอย่างของการใช้ LLM เพื่อการจัดอันดับใหม่และการให้คะแนนจุดหมายปลายทางการเดินทางตามความชอบของผู้ใช้ใน Python:
ตัวแทนท่องเที่ยวต้องการแนะนำจุดหมายปลายทางที่ดีที่สุดให้กับลูกค้าตามความชอบของพวกเขา LLM จะช่วยจัดอันดับใหม่และให้คะแนนจุดหมายปลายทางเพื่อให้แน่ใจว่าตัวเลือกที่เกี่ยวข้องที่สุดถูกนำเสนอ
นี่คือวิธีการอัปเดตตัวอย่างก่อนหน้าเพื่อใช้ Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generate a prompt for the Azure OpenAI
prompt = self.generate_prompt(preferences)
# Define headers and payload for the request
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Call the Azure OpenAI API to get the re-ranked and scored destinations
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extract and return the recommendations
recommendations = response_data['choices'][0]['text'].strip().split('\n')
return recommendations
def generate_prompt(self, preferences):
prompt = "Here are the travel destinations ranked and scored based on the following user preferences:\n"
for key, value in preferences.items():
prompt += f"{key}: {value}\n"
prompt += "\nDestinations:\n"
for destination in self.destinations:
prompt += f"- {destination['name']}: {destination['description']}\n"
return prompt
# Example usage
destinations = [
{"name": "Paris", "description": "City of lights, known for its art, fashion, and culture."},
{"name": "Tokyo", "description": "Vibrant city, famous for its modernity and traditional temples."},
{"name": "New York", "description": "The city that never sleeps, with iconic landmarks and diverse culture."},
{"name": "Sydney", "description": "Beautiful harbour city, known for its opera house and stunning beaches."},
]
preferences = {"activity": "sightseeing", "culture": "diverse"}
api_key = 'your_azure_openai_api_key'
endpoint = 'https://your-endpoint.com/openai/deployments/your-deployment-name/completions?api-version=2022-12-01'
travel_agent = TravelAgent(destinations)
recommendations = travel_agent.get_recommendations(preferences, api_key, endpoint)
print("Recommended Destinations:")
for rec in recommendations:
print(rec)
การเริ่มต้น: คลาส TravelAgent
ถูกเริ่มต้นด้วยรายการจุดหมายปลายทางที่เป็นไปได้ ซึ่งแต่ละรายการมีคุณสมบัติเช่น ชื่อและคำอธิบาย
การรับคำแนะนำ (get_recommendations
method): เมธอดนี้สร้าง prompt สำหรับบริการ Azure OpenAI ตามความชอบของผู้ใช้ และทำการ HTTP POST request ไปยัง API ของ Azure OpenAI เพื่อรับจุดหมายปลายทางที่จัดอันดับใหม่และให้คะแนน
การสร้าง Prompt (generate_prompt
method): เมธอดนี้สร้าง prompt สำหรับ Azure OpenAI รวมถึงความชอบของผู้ใช้และรายการจุดหมายปลายทาง Prompt นี้นำทางโมเดลให้จัดอันดับใหม่และให้คะแนนจุดหมายปลายทางตามความชอบที่ให้ไว้
การเรียก API: ไลบรารี requests
ถูกใช้เพื่อทำ HTTP POST request ไปยัง endpoint API ของ Azure OpenAI คำตอบประกอบด้วยจุดหมายปลายทางที่จัดอันดับใหม่และให้คะแนน
ตัวอย่างการใช้งาน: ตัวแทนท่องเที่ยวรวบรวมความชอบของผู้ใช้ (เช่น ความสนใจในการเที่ยวชมสถานที่และวัฒนธรรมที่หลากหลาย) และใช้บริการ Azure OpenAI เพื่อรับคำแนะนำที่จัดอันดับใหม่และให้คะแนนสำหรับจุดหมายปลายทางการเดินทาง
อย่าลืมแทนที่ your_azure_openai_api_key
ด้วย API key จริงของ Azure OpenAI และ https://your-endpoint.com/...
ด้วย URL endpoint จริงของการใช้งาน Azure OpenAI ของคุณ
ด้วยการใช้ LLM เพื่อการจัดอันดับใหม่และการให้คะแนน ตัวแทนท่องเที่ยวสามารถให้คำแนะนำการเดินทางที่ปรับแต่งและเกี่ยวข้องมากขึ้นแก่ลูกค้า ซึ่งช่วยเพิ่มประสบการณ์โดยรวมของพวกเขา
การสร้างและการดึงข้อมูล (Retrieval-Augmented Generation หรือ RAG) สามารถเป็นได้ทั้งเทคนิคการสร้าง Prompt และเครื่องมือในกระบวนการพัฒนา AI การเข้าใจความแตกต่างระหว่างสองสิ่งนี้สามารถช่วยให้คุณใช้ RAG ได้อย่างมีประสิทธิภาพในโครงการของคุณ
คืออะไร?
วิธีการทำงาน:
ตัวอย่างในตัวแทนท่องเที่ยว:
คืออะไร?
วิธีการทำงาน:
ตัวอย่างในตัวแทนท่องเที่ยว:
ด้าน | เทคนิคการสร้าง Prompt | เครื่องมือ |
---|---|---|
การทำงานด้วยตนเอง vs อัตโนมัติ | การสร้าง Prompt ด้วยตนเองสำหรับแต่ละคำถาม | กระบวนการดึงข้อมูลและการสร้างคำตอบอัตโนมัติ |
การควบคุม | ให้การควบคุมกระบวนการดึงข้อมูลมากขึ้น | ทำให้กระบวนการดึงข้อมูลและการสร้างคำตอบง่ายขึ้น |
ความยืดหยุ่น | อนุญาตให้ปรับแต่ง Prompt ตามความต้องการเฉพาะ | มีประสิทธิภาพมากขึ้นสำหรับการใช้งานขนาดใหญ่ |
ความซับซ้อน | ต้องสร้างและปรับแต่ง Prompt | ง่ายต่อการรวมเข้ากับสถาปัตยกรรมของ AI agent |
ตัวอย่างเทคนิคการสร้าง Prompt:
def search_museums_in_paris():
prompt = "Find top museums in Paris"
search_results = search_web(prompt)
return search_results
museums = search_museums_in_paris()
print("Top Museums in Paris:", museums)
ตัวอย่างเครื่องมือ:
class Travel_Agent:
def __init__(self):
self.rag_tool = RAGTool()
def get_museums_in_paris(self):
user_input = "I want to visit museums in Paris."
response = self.rag_tool.retrieve_and_generate(user_input)
return response
travel_agent = Travel_Agent()
museums = travel_agent.get_museums_in_paris()
print("Top Museums in Paris:", museums)
การประเมินความเกี่ยวข้องเป็นส่วนสำคัญของประสิทธิภาพ AI agent ซึ่งช่วยให้มั่นใจได้ว่าข้อมูลที่ดึงมาและสร้างขึ้นโดย agent นั้นเหมาะสม ถูกต้อง และเป็นประโยชน์ต่อผู้ใช้ มาดูกันว่าการประเมินความเกี่ยวข้องใน AI agent ทำงานอย่างไร รวมถึงตัวอย่างและเทคนิคการใช้งานจริง
ตัวอย่าง:
def relevance_score(item, query):
score = 0
if item['category'] in query['interests']:
score += 1
if item['price'] <= query['budget']:
score += 1
if item['location'] == query['destination']:
score += 1
return score
ตัวอย่าง:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Return top 10 relevant items
ตัวอย่าง:
def process_query(query):
# Use NLP to extract key information from the user's query
processed_query = nlp(query)
return processed_query
ตัวอย่าง:
def adjust_based_on_feedback(feedback, items):
for item in items:
if item['name'] in feedback['liked']:
item['relevance'] += 1
if item['name'] in feedback['disliked']:
item['relevance'] -= 1
return items
นี่คือตัวอย่างการใช้งานจริงของ Travel Agent ในการประเมินความเกี่ยวข้องของคำแนะนำการเดินทาง:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
ranked_hotels = self.filter_and_rank(hotels, self.user_preferences)
itinerary = create_itinerary(flights, ranked_hotels, attractions)
return itinerary
def filter_and_rank(self, items, query):
ranked_items = sorted(items, key=lambda item: self.relevance_score(item, query), reverse=True)
return ranked_items[:10] # Return top 10 relevant items
def relevance_score(self, item, query):
score = 0
if item['category'] in query['interests']:
score += 1
if item['price'] <= query['budget']:
score += 1
if item['location'] == query['destination']:
score += 1
return score
def adjust_based_on_feedback(self, feedback, items):
for item in items:
if item['name'] in feedback['liked']:
item['relevance'] += 1
if item['name'] in feedback['disliked']:
item['relevance'] -= 1
return items
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_items = travel_agent.adjust_based_on_feedback(feedback, itinerary['hotels'])
print("Updated Itinerary with Feedback:", updated_items)
การค้นหาด้วยเจตนาเกี่ยวข้องกับการทำความเข้าใจและตีความวัตถุประสงค์หรือเป้าหมายเบื้องหลังคำถามของผู้ใช้เพื่อดึงและสร้างข้อมูลที่เกี่ยวข้องและเป็นประโยชน์มากที่สุด วิธีการนี้ไปไกลกว่าการจับคู่คำสำคัญและมุ่งเน้นไปที่การเข้าใจความต้องการและบริบทที่แท้จริงของผู้ใช้
มาดูตัวอย่าง Travel Agent เพื่อดูว่าการค้นหาด้วยเจตนาสามารถนำไปใช้ได้อย่างไร
รวบรวมความต้องการของผู้ใช้
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
ทำความเข้าใจเจตนาของผู้ใช้
def identify_intent(query):
if "book" in query or "purchase" in query:
return "transactional"
elif "website" in query or "official" in query:
return "navigational"
else:
return "informational"
การรับรู้บริบท
def analyze_context(query, user_history):
# Combine current query with user history to understand context
context = {
"current_query": query,
"user_history": user_history
}
return context
ค้นหาและปรับแต่งผลลัพธ์
def search_with_intent(query, preferences, user_history):
intent = identify_intent(query)
context = analyze_context(query, user_history)
if intent == "informational":
search_results = search_information(query, preferences)
elif intent == "navigational":
search_results = search_navigation(query)
elif intent == "transactional":
search_results = search_transaction(query, preferences)
personalized_results = personalize_results(search_results, user_history)
return personalized_results
def search_information(query, preferences):
# Example search logic for informational intent
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Example search logic for navigational intent
results = search_web(query)
return results
def search_transaction(query, preferences):
# Example search logic for transactional intent
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Example personalization logic
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Return top 10 personalized results
ตัวอย่างการใช้งาน
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
user_history = ["Louvre Museum website", "Book flight to Paris"]
query = "best museums in Paris"
results = search_with_intent(query, preferences, user_history)
print("Search Results:", results)
ตัวแทนที่สร้างโค้ดใช้โมเดล AI ในการเขียนและรันโค้ด เพื่อแก้ปัญหาที่ซับซ้อนและทำงานอัตโนมัติ
ตัวแทนที่สร้างโค้ดใช้โมเดล AI เชิงสร้างสรรค์ในการเขียนและรันโค้ด ตัวแทนเหล่านี้สามารถแก้ปัญหาที่ซับซ้อน ทำงานอัตโนมัติ และให้ข้อมูลเชิงลึกที่มีคุณค่าโดยการสร้างและรันโค้ดในภาษาการเขียนโปรแกรมต่าง ๆ
ลองจินตนาการว่าคุณกำลังออกแบบตัวแทนที่สร้างโค้ด นี่คือวิธีการทำงาน:
ในตัวอย่างนี้ เราจะออกแบบตัวแทนที่สร้างโค้ด Travel Agent เพื่อช่วยผู้ใช้วางแผนการเดินทางโดยการสร้างและรันโค้ด ตัวแทนนี้สามารถจัดการงาน เช่น การดึงตัวเลือกการเดินทาง การกรองผลลัพธ์ และการจัดทำแผนการเดินทางโดยใช้ AI เชิงสร้างสรรค์
รวบรวมความต้องการของผู้ใช้
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
สร้างโค้ดเพื่อดึงข้อมูล
def generate_code_to_fetch_data(preferences):
# Example: Generate code to search for flights based on user preferences
code = f"""
def search_flights():
import requests
response = requests.get('https://api.example.com/flights', params={preferences})
return response.json()
"""
return code
def generate_code_to_fetch_hotels(preferences):
# Example: Generate code to search for hotels
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
รันโค้ดที่สร้างขึ้น
def execute_code(code):
# Execute the generated code using exec
exec(code)
result = locals()
return result
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
flight_code = generate_code_to_fetch_data(preferences)
hotel_code = generate_code_to_fetch_hotels(preferences)
flights = execute_code(flight_code)
hotels = execute_code(hotel_code)
print("Flight Options:", flights)
print("Hotel Options:", hotels)
สร้างแผนการเดินทาง
def generate_itinerary(flights, hotels, attractions):
itinerary = {
"flights": flights,
"hotels": hotels,
"attractions": attractions
}
return itinerary
attractions = search_attractions(preferences)
itinerary = generate_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
ปรับเปลี่ยนตามความคิดเห็น
def adjust_based_on_feedback(feedback, preferences):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
return preferences
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences)
# Regenerate and execute code with updated preferences
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, attractions)
print("Updated Itinerary:", updated_itinerary)
การใช้โครงสร้างของตารางสามารถปรับปรุงกระบวนการสร้างคำสั่งได้โดยการใช้การรับรู้สิ่งแวดล้อมและการให้เหตุผล
นี่คือตัวอย่างวิธีการทำ:
นี่คือตัวอย่างโค้ด Python ที่ปรับปรุงแนวคิดเหล่านี้:
def adjust_based_on_feedback(feedback, preferences, schema):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Reasoning based on schema to adjust other related preferences
for field in schema:
if field in preferences:
preferences[field] = adjust_based_on_environment(feedback, field, schema)
return preferences
def adjust_based_on_environment(feedback, field, schema):
# Custom logic to adjust preferences based on schema and feedback
if field in feedback["liked"]:
return schema[field]["positive_adjustment"]
elif field in feedback["disliked"]:
return schema[field]["negative_adjustment"]
return schema[field]["default"]
def generate_code_to_fetch_data(preferences):
# Generate code to fetch flight data based on updated preferences
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generate code to fetch hotel data based on updated preferences
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulate execution of code and return mock data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generate itinerary based on flights, hotels, and attractions
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Example schema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Example usage
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerate and execute code with updated preferences
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)
schema
กำหนดวิธีการปรับเปลี่ยนความต้องการตามความคิดเห็น รวมถึงฟิลด์ เช่น favorites
และ avoid
พร้อมการปรับเปลี่ยนที่เกี่ยวข้องadjust_based_on_feedback
method): เมธอดนี้ปรับเปลี่ยนความต้องการตามความคิดเห็นของผู้ใช้และโครงสร้างadjust_based_on_environment
method): เมธอดนี้ปรับเปลี่ยนตามโครงสร้างและความคิดเห็นโดยการทำให้ระบบรับรู้สิ่งแวดล้อมและให้เหตุผลตามโครงสร้าง ระบบสามารถสร้างคำสั่งที่แม่นยำและเกี่ยวข้องมากขึ้น ซึ่งนำไปสู่คำแนะนำการเดินทางที่ดียิ่งขึ้นและประสบการณ์ผู้ใช้ที่ปรับแต่งเฉพาะบุคคล
SQL (Structured Query Language) เป็นเครื่องมือที่ทรงพลังสำหรับการโต้ตอบกับฐานข้อมูล เมื่อใช้เป็นส่วนหนึ่งของแนวทาง Retrieval-Augmented Generation (RAG) SQL สามารถดึงข้อมูลที่เกี่ยวข้องจากฐานข้อมูลเพื่อแจ้งและสร้างการตอบสนองหรือการกระทำในตัวแทน AI มาดูกันว่า SQL สามารถใช้เป็นเทคนิค RAG ในบริบทของ Travel Agent ได้อย่างไร
ตัวอย่าง: ตัวแทนวิเคราะห์ข้อมูล:
รวบรวมความต้องการของผู้ใช้
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
สร้างคำสั่ง SQL
def generate_sql_query(table, preferences):
query = f"SELECT * FROM {table} WHERE "
conditions = []
for key, value in preferences.items():
conditions.append(f"{key}='{value}'")
query += " AND ".join(conditions)
return query
รันคำสั่ง SQL
import sqlite3
def execute_sql_query(query, database="travel.db"):
connection = sqlite3.connect(database)
cursor = connection.cursor()
cursor.execute(query)
results = cursor.fetchall()
connection.close()
return results
สร้างคำแนะนำ
def generate_recommendations(preferences):
flight_query = generate_sql_query("flights", preferences)
hotel_query = generate_sql_query("hotels", preferences)
attraction_query = generate_sql_query("attractions", preferences)
flights = execute_sql_query(flight_query)
hotels = execute_sql_query(hotel_query)
attractions = execute_sql_query(attraction_query)
itinerary = {
"flights": flights,
"hotels": hotels,
"attractions": attractions
}
return itinerary
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = generate_recommendations(preferences)
print("Suggested Itinerary:", itinerary)
คำสั่งเที่ยวบิน
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
คำสั่งโรงแรม
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
คำสั่งสถานที่ท่องเที่ยว
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
โดยการใช้ SQL เป็นส่วนหนึ่งของเทคนิค Retrieval-Augmented Generation (RAG) ตัวแทน AI เช่น Travel Agent สามารถดึงและใช้ข้อมูลที่เกี่ยวข้องเพื่อให้คำแนะนำที่แม่นยำและปรับแต่งเฉพาะบุคคล
เพื่อแสดงการใช้งาน metacognition เรามาสร้างตัวแทนง่าย ๆ ที่ สะท้อนกระบวนการตัดสินใจของตัวเอง ขณะกำลังแก้ปัญหา ในตัวอย่างนี้ เราจะสร้างระบบที่ตัวแทนพยายามปรับปรุงการเลือกโรงแรม แต่จะประเมินเหตุผลของตัวเองและปรับกลยุทธ์เมื่อพบข้อผิดพลาดหรือการเลือกที่ไม่เหมาะสม
เราจะจำลองสิ่งนี้โดยใช้ตัวอย่างพื้นฐานที่ตัวแทนเลือกโรงแรมตามราคาถูกที่สุดและคุณภาพ แต่จะ “สะท้อน” การตัดสินใจของตัวเองและปรับเปลี่ยนตามนั้น
นี่คือตัวอย่าง:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Stores the hotels chosen previously
self.corrected_choices = [] # Stores the corrected choices
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Available strategies
def recommend_hotel(self, hotels, strategy):
"""
Recommend a hotel based on the chosen strategy.
The strategy can either be 'cheapest' or 'highest_quality'.
"""
if strategy == 'cheapest':
recommended = min(hotels, key=lambda x: x['price'])
elif strategy == 'highest_quality':
recommended = max(hotels, key=lambda x: x['quality'])
else:
recommended = None
self.previous_choices.append((strategy, recommended))
return recommended
def reflect_on_choice(self):
"""
Reflect on the last choice made and decide if the agent should adjust its strategy.
The agent considers if the previous choice led to a poor outcome.
"""
if not self.previous_choices:
return "No choices made yet."
last_choice_strategy, last_choice = self.previous_choices[-1]
# Let's assume we have some user feedback that tells us whether the last choice was good or not
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Adjust strategy if the previous choice was unsatisfactory
new_strategy = 'highest_quality' if last_choice_strategy == 'cheapest' else 'cheapest'
self.corrected_choices.append((new_strategy, last_choice))
return f"Reflecting on choice. Adjusting strategy to {new_strategy}."
else:
return "The choice was good. No need to adjust."
def get_user_feedback(self, hotel):
"""
Simulate user feedback based on hotel attributes.
For simplicity, assume if the hotel is too cheap, the feedback is "bad".
If the hotel has quality less than 7, feedback is "bad".
"""
if hotel['price'] < 100 or hotel['quality'] < 7:
return "bad"
return "good"
# Simulate a list of hotels (price and quality)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Create an agent
agent = HotelRecommendationAgent()
# Step 1: The agent recommends a hotel using the "cheapest" strategy
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Step 2: The agent reflects on the choice and adjusts strategy if necessary
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Step 3: The agent recommends again, this time using the adjusted strategy
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
จุดสำคัญคือความสามารถของตัวแทนในการ:
นี่เป็นรูปแบบพื้นฐานของ metacognition ที่ระบบสามารถปรับกระบวนการให้เหตุผลของตัวเองตามความคิดเห็นภายใน
Metacognition เป็นเครื่องมือที่ทรงพลังที่สามารถเพิ่มความสามารถของตัวแทน AI ได้อย่างมาก โดยการรวมกระบวนการ metacognitive คุณสามารถออกแบบตัวแทนที่ฉลาด ปรับตัวได้ และมีประสิทธิภาพมากขึ้น ใช้ทรัพยากรเพิ่มเติมเพื่อสำรวจโลกที่น่าสนใจของ metacognition ในตัวแทน AI
เข้าร่วม Azure AI Foundry Discord เพื่อพบกับผู้เรียนคนอื่น ๆ เข้าร่วมชั่วโมงให้คำปรึกษา และรับคำตอบสำหรับคำถามเกี่ยวกับตัวแทน AI ของคุณ
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้