(לחץ על התמונה למעלה לצפייה בסרטון של השיעור הזה)
מטה־קוגניציה בסוכני בינה מלאכותית
ברוכים הבאים לשיעור על מטה־קוגניציה בסוכני בינה מלאכותית! פרק זה מיועד למתחילים הסקרנים לגבי איך סוכנים של בינה מלאכותית יכולים “לחשוב” על תהליכי החשיבה שלהם עצמם. בסוף השיעור הזה, תבינו מושגים מרכזיים ותהיו מצוידים בדוגמאות מעשיות ליישום מטה־קוגניציה בעיצוב סוכנים.
לאחר השלמת שיעור זה, תדעו:
מטה־קוגניציה מתייחסת לתהליכים קוגניטיביים מתקדמים המעורבים במחשבה על המחשבה עצמה. עבור סוכני בינה מלאכותית, זאת אומרת היכולת להעריך ולהתאים את פעולותיהם על בסיס מודעות עצמית וניסיון עבר. מטה־קוגניציה, או “מחשבה על המחשבה”, הוא מושג חשוב בפיתוח מערכות בינה סוכנית. זה כולל מערכות בינה שמודעות לתהליכים הפנימיים שלהן ויכולות לנטר, לווסת ולהתאים את ההתנהגות שלהן בהתאם. בדומה לאופן שבו אנחנו קוראים את החדר או בוחנים בעיה. המודעות העצמית הזו יכולה לעזור למערכות בינה לקבל החלטות טובות יותר, לזהות שגיאות ולשפר את הביצועים שלהן לאורך זמן — שוב מקשרת חזרה למבחן טיורינג ולדיון האם בינה מלאכותית תשתלט.
בהקשר של מערכות בינה סוכניות, מטה־קוגניציה יכולה לסייע בטיפול בכמה אתגרים, כגון:
מטה־קוגניציה, או “מחשבה על המחשבה”, היא תהליך קוגניטיבי מתוצב שמערב מודעות עצמית וויסות עצמי של תהליכים קוגניטיביים. בתחום הבינה המלאכותית, מטה־קוגניציה מאפשרת לסוכנים להעריך ולהתאים את האסטרטגיות והפעולות שלהם, מה שמוביל לשיפור בפתרון בעיות ובקבלת החלטות. על ידי הבנת מטה־קוגניציה, תוכלו לעצב סוכני בינה שלא רק חכמים יותר, אלא גם גמישים ויעילים יותר. במטה־קוגניציה אמיתית, תראו את הבינה חושבת במפורש על הנימוקים שלה עצמם.
דוגמה: “העדפתי טיסות זולות יותר כי… אולי אני מפספס טיסות ישירות, אז בואו אבדוק שוב.”. מעקב אחרי איך או למה היא בחרה במסלול מסוים.
מטה־קוגניציה משחקת תפקיד מרכזי בעיצוב סוכני בינה ממספר סיבות:

לפני שנצלול לתהליכים מטה־קוגניטיביים, חשוב להבין את המרכיבים הבסיסיים של סוכן בינה מלאכותית. סוכן בינה מלאכותית בדרך כלל מורכב מ:
מרכיבים אלה פועלים יחד ליצירת “יחידת מומחיות” שיכולה לבצע משימות ספציפיות.
דוגמה: תארו לעצמכם סוכן נסיעות, שירות סוכנות שאינו רק מתכנן את החופשה שלכם אלא גם מתאים את נתיבו בהתבסס על נתונים בזמן אמת וניסיון מסע לקוחות בעבר.
דמיינו שאתם מעצבים שירות סוכן נסיעות המופעל באמצעות בינה מלאכותית. סוכן זה, “סוכן נסיעות”, מסייע למשתמשים בתכנון חופשותיהם. כדי לשלב מטה־קוגניציה, סוכן הנסיעות צריך להעריך ולהתאים את פעולותיו על בסיס מודעות עצמית וניסיון עבר. כך מטה־קוגניציה יכולה לשחק תפקיד:
המשימה הנוכחית היא לעזור למשתמש לתכנן נסיעה לפריז.
סוכן הנסיעות משתמש במטה־קוגניציה כדי להעריך את ביצועיו וללמוד מניסיונות קודמים. לדוגמה:
הנה דוגמה מפושטת כיצד הקוד של סוכן הנסיעות עשוי להיראות בעת שילוב מטה־קוגניציה:
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)
# דוגמה לשימוש
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)
על ידי שילוב מטה־קוגניציה, סוכן הנסיעות יכול לספק המלצות מותאמות ומדויקות יותר, ולשפר את חוויית המשתמש הכוללת.
תכנון הוא מרכיב קריטי בהתנהגות סוכני בינה מלאכותית. הוא כולל פירוט השלבים הנדרשים להשגת מטרה, בהתחשב במצב הנוכחי, במשאבים ובמכשולים אפשריים.
דוגמה: להלן השלבים שסוכן הנסיעות צריך לבצע כדי לסייע למשתמש בתכנון הנסיעה ביעילות:
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)
# דוגמה לשימוש בתוך בקשה לבוז
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 Tool לבין Pre-emptive Context Load

RAG משלב מערכת שליפה עם מודל יצירתי. כאשר נשאלת שאילתה, מערכת השליפה מביאה מסמכים או נתונים רלוונטיים ממקור חיצוני, והמידע שנשלף משמש להעשיר את הקלט למודל היצירתי. זה עוזר למודל לייצר תגובות מדויקות ורלוונטיות יותר להקשר.
במערכת RAG, הסוכן מושך מידע רלוונטי מבסיס ידע ומשתמש בו כדי ליצור תגובות או פעולות מתאימות.
גישת RAG מתקנת מתמקדת בשימוש בטכניקות RAG לתיקון שגיאות ולשיפור הדיוק של סוכני בינה. זה כולל:
שקלו סוכן חיפוש שמושך מידע מהרשת כדי לענות על שאילתות משתמשים. גישת RAG מתקנת עשויה לכלול:
RAG מתקנת (Retrieval-Augmented Generation) משפרת את יכולת הבינה לשלוף ולייצר מידע תוך תיקון אי־דיוקים. בואו נראה כיצד סוכן הנסיעות יכול להשתמש בגישת RAG מתקנת כדי לספק המלצות נסיעה מדויקות ורלוונטיות יותר.
זה כולל:
דוגמה:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
דוגמה:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
דוגמה:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
דוגמה:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
דוגמה:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
דוגמה:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
דוגמה:
def adjust_preferences(preferences, feedback):
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
return preferences
preferences = adjust_preferences(preferences, feedback)
הנה דוגמת קוד פייתון מפושטת המשלבת את גישת RAG המתקנת בסוכן הנסיעות:
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
# דוגמה לשימוש
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):
# טען מראש יעדים פופולריים ואת המידע עליהם
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):
# שלוף מידע על היעד מההקשר שהוטען מראש
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}."
# דוגמה לשימוש
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialization (__init__ method): מחלקת TravelAgent טוענת מראש מילון המכיל מידע על יעדים פופולריים כגון פריז, טוקיו, ניו יורק וסידני. מילון זה כולל פרטים כמו המדינה, המטבע, השפה והאטרקציות העיקריות לכל יעד.
Retrieving Information (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']
# דוגמה לשימוש
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)
Initialization (__init__ method): מחלקת TravelAgent מאותחלת עם רשימה של יעדים אפשריים, שכל אחד מהם בעל מאפיינים כמו שם, עלות וסוג פעילות.
Bootstrapping the Plan (bootstrap_plan method): מתודה זו יוצרת תכנית נסיעות ראשונית בהתבסס על העדפות ותקציב הלקוח. היא מריצה איטרציה על רשימת היעדים ומוסיפה אותם לתוכנית אם הם תואמים להעדפות הלקוח ומתאימים לתקציב.
Matching Preferences (match_preferences method): מתודה זו בודקת האם יעד תואם את העדפות הלקוח.
Iterating the Plan (iterate_plan method): מתודה זו מחדשת את התכנית הראשונית על ידי ניסיון להחליף כל יעד בתוכנית בהתאמה טובה יותר, תוך התחשבות בעדפות הלקוח ובמגבלות התקציב.
Calculating Cost (calculate_cost method): מתודה זו מחשבת את העלות הכוללת של התוכנית הנוכחית, כולל יעד חדש אפשרי.
על-ידי איתחול התוכנית עם מטרה ברורה (למשל: מיקסום שביעות רצון הלקוח) וביצוע איטרציות לשיפור התוכנית, סוכן הנסיעות יכול ליצור מסלול נסיעות מותאם וממוטב ללקוח. גישה זו מבטיחה שהתוכנית תתאים להעדפות ולתקציב הלקוח מההתחלה ותשתפר בכל איטרציה.
מודלים לשוניים גדולים (LLMs) יכולים לשמש למיון מחדש ולמתן ציונים על ידי הערכת הרלוונטיות והאיכות של מסמכים שנשלפו או תגובות שנוצרו. כך זה עובד:
שליפה: שלב השליפה הראשוני מביא סט של מסמכים מועמדים או תגובות בהתבסס על השאילתה.
מיון מחדש: ה-LLM מעריך את המועמדים האלה וממיין אותם מחדש על בסיס הרלוונטיות והאיכות שלהם. שלב זה מבטיח שמידע הרלוונטי והאיכותי ביותר יוצג ראשון.
מתן ציונים: ה-LLM מקצה ציונים לכל מועמד, המשקפים את הרלוונטיות והאיכות שלהם. זה עוזר בבחירת התשובה או המסמך הטוב ביותר עבור המשתמש.
על-ידי ניצול LLMs למיון מחדש ולמתן ציונים, המערכת יכולה לספק מידע מדויק יותר ורלוונטי באופן הקשרי, מה שמשפר את חוויית המשתמש הכוללת.
להלן דוגמה לאופן שבו סוכן נסיעות עשוי להשתמש במודל לשוני גדול (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):
# צור פרומפט עבור Azure OpenAI
prompt = self.generate_prompt(preferences)
# הגדר את הכותרות ואת גוף הבקשה
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# קרא ל-API של Azure OpenAI כדי לקבל את היעדים הממוינים מחדש ומדורגים
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# חלץ והחזר את ההמלצות
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
# דוגמה לשימוש
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)
Initialization: מחלקת TravelAgent מאותחלת עם רשימה של יעדי נסיעות אפשריים, שלכל אחד מהם מאפיינים כמו שם ותיאור.
Getting Recommendations (get_recommendations method): מתודה זו יוצרת פרומפט עבור שירות Azure OpenAI בהתבסס על העדפות המשתמש ומבצעת בקשת HTTP POST ל-API של Azure OpenAI כדי לקבל יעדים ממונים מחדש ומדורגים.
Generating Prompt (generate_prompt method): מתודה זו בונה פרומפט ל-Azure OpenAI, הכולל את העדפות המשתמש ואת רשימת היעדים. הפרומפט מכוון את המודל למיין מחדש ולתת ציונים ליעדים בהתבסס על ההעדפות שניתנו.
API Call: ספריית requests משמשת לביצוע בקשת HTTP POST לנקודת הקצה של ה-API של Azure OpenAI. התשובה מכילה את היעדים הממוינים מחדש ואת הציונים שלהם.
Example Usage: סוכן הנסיעות אוסף את העדפות המשתמש (למשל, עניין בביקור באתרים ותרבות מגוונת) ומשתמש בשירות Azure OpenAI כדי לקבל המלצות ליעדי נסיעות שממוינים מחדש ומדורגים.
וודא להחליף your_azure_openai_api_key במפתח ה-API האמיתי של Azure OpenAI ואת https://your-endpoint.com/... בכתובת ה-URL של נקודת הקצה של הפריסה שלך של Azure OpenAI.
על-ידי ניצול ה-LLM למיון מחדש ולמתן ציונים, סוכן הנסיעות יכול לספק המלצות נסיעה אישיות ורלוונטיות יותר ללקוחות, ובכך לשפר את חווייתם הכוללת.
Retrieval-Augmented Generation (RAG) יכולה להיות הן טכניקת יצירת פרומפטים והן כלי בפיתוח סוכני בינה מלאכותית. הבנת ההבחנה בין השניים יכולה לעזור לך לנצל את RAG באופן יעיל יותר בפרויקטים שלך.
מה זה?
איך זה עובד:
דוגמה בסוכן נסיעות:
מה זה?
איך זה עובד:
דוגמה בסוכן נסיעות:
| Aspect | Prompting Technique | Tool |
|---|---|---|
| Manual vs Automatic | ניסוח ידני של פרומפטים עבור כל שאילתה. | תהליך אוטומטי לשליפה ולייצור. |
| Control | מספק שליטה רבה יותר על תהליך השליפה. | מייעל ומאוטומט את תהליך השליפה והייצור. |
| Flexibility | מאפשר פרומפטים מותאמים לפי צרכים ספציפיים. | יעיל יותר ליישומים בקנה-מידה גדול. |
| Complexity | דורש ניסוח וכיוונון של פרומפטים. | קל יותר לשלב בארכיטקטורת סוכן AI. |
דוגמת טכניקת יצירת פרומפטים:
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. היא מוודאת שהמידע שנשלף ונוצר על ידי הסוכן הוא מתאים, מדויק ושימושי עבור המשתמש. בואו נבחן כיצד להעריך רלוונטיות בסוכני AI, כולל דוגמאות וטכניקות מעשיות.
דוגמה:
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] # החזר את 10 הפריטים הרלוונטיים ביותר
דוגמה:
def process_query(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
להלן דוגמה מעשית לאופן שבו TravelAgent יכול להעריך את הרלוונטיות של המלצות נסיעה:
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] # החזר את 10 הפריטים הרלוונטיים ביותר
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
# דוגמה לשימוש
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)
חיפוש עם כוונה כולל הבנה ופרשנות של המטרה או היעד שבבסיס שאילתת המשתמש, כדי לשלוף ולייצר את המידע הרלוונטי והיעיל ביותר. גישה זו חורגת ממאמץ התאמת מילות מפתח ומתמקדת בהבנת הצרכים וההקשר האמיתי של המשתמש.
ניקח את TravelAgent כדוגמה כדי לראות כיצד חיפוש עם כוונה ניתן ליישם.
איסוף העדפות המשתמש
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):
# שלב את השאילתה הנוכחית עם היסטוריית המשתמש כדי להבין את ההקשר
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):
# לוגיקת חיפוש לדוגמה לכוונת מידע
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# לוגיקת חיפוש לדוגמה לכוונת ניווט
results = search_web(query)
return results
def search_transaction(query, preferences):
# לוגיקת חיפוש לדוגמה לכוונת ביצוע עסקה
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# לוגיקת התאמה אישית לדוגמה
personalized = [result for result in results if result not in user_history]
return personalized[:10] # החזר את 10 התוצאות המותאמות אישית המובילות
דוגמה לשימוש
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)
סוכני יצירת קוד משתמשים במודלים של בינה מלאכותית כדי לכתוב ולהריץ קוד, לפתור בעיות מורכבות ולבצע אוטומציה של משימות.
סוכני יצירת קוד משתמשים במודלי בינה מלאכותית גנרטיביים כדי לכתוב ולהריץ קוד. סוכנים אלה יכולים לפתור בעיות מורכבות, לבצע אוטומציה של משימות ולספק תובנות חשובות על ידי יצירה והרצה של קוד בשפות תכנות שונות.
דמיינו שאתם מעצבים סוכן ליצירת קוד. כך זה עשוי לעבוד:
בדוגמה זו נעצב סוכן יצירת קוד, Travel Agent, שיעזור למשתמשים לתכנן את נסיעותיהם על ידי יצירה והרצת קוד. סוכן זה יכול לטפל במשימות כגון שליפת אפשרויות נסיעה, סינון תוצאות והרכבת מסלול טיול באמצעות בינה מלאכותית גנרטיבית.
איסוף העדפות משתמש
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):
# דוגמה: ליצור קוד לחיפוש טיסות בהתאם להעדפות המשתמש
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):
# דוגמה: ליצור קוד לחיפוש מלונות
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):
# הרץ את הקוד שנוצר באמצעות 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):
# התאם העדפות בהתאם למשוב המשתמש
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)
# צור מחדש והרץ קוד עם העדפות מעודכנות
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):
# התאם העדפות בהתאם למשוב המשתמש
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# הסקת מסקנות על בסיס הסכימה כדי להתאים העדפות קשורות אחרות
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):
# לוגיקה מותאמת אישית להתאמת העדפות על בסיס הסכימה והמשוב
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):
# הפק קוד לשליפת נתוני טיסות על בסיס ההעדפות המעודכנות
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# הפק קוד לשליפת נתוני בתי מלון על בסיס ההעדפות המעודכנות
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# דמה ביצוע הקוד והחזר נתונים מדומים
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# צור מסלול על בסיס טיסות, בתי מלון ואטרקציות
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# דוגמת סכימה
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# דוגמת שימוש
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# צור מחדש והרץ קוד עם ההעדפות המעודכנות
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 יכול לאחזר נתונים רלוונטיים ממסדי נתונים כדי להעשיר וליצור תגובות או פעולות בסוכני בינה מלאכותית. בואו נחקור כיצד ניתן להשתמש ב-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 יכולים לאחזר ולנצל באופן דינמי נתונים רלוונטיים כדי לספק המלצות מדויקות ומותאמות אישית.
על מנת להדגים מימוש של מטה-קוגניציה, ניצור סוכן פשוט שמרהה על תהליך קבלת ההחלטות שלו בזמן פתרון בעיה. בדוגמה זו נבנה מערכת שבה סוכן מנסה למטב את בחירת המלון, אך לאחר מכן מעריך את ההסקות שלו ומתאים את האסטרטגיה שלו כאשר הוא עושה שגיאות או בחירות לא אופטימליות.
נמחיש זאת באמצעות דוגמה בסיסית שבה הסוכן בוחר מלונות לפי שילוב של מחיר ואיכות, אך הוא ירהר בהחלטותיו ויתאים את עצמו בהתאם.
הנה דוגמה:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # מאחסן את המלונות שנבחרו קודם
self.corrected_choices = [] # מאחסן את הבחירות המתוקנות
self.recommendation_strategies = ['cheapest', 'highest_quality'] # אסטרטגיות זמינות
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]
# נניח שיש לנו משוב מהמשתמש שמספר אם הבחירה האחרונה הייתה טובה או לא
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# התאמת אסטרטגיה אם הבחירה הקודמת הייתה לא מספקת
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"
# סימולציה של רשימת מלונות (מחיר ואיכות)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# יצירת סוכן
agent = HotelRecommendationAgent()
# שלב 1: הסוכן ממליץ על מלון באמצעות האסטרטגיה "הזול ביותר"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# שלב 2: הסוכן משקף את הבחירה ומתאים את האסטרטגיה אם יש צורך
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# שלב 3: הסוכן ממליץ שוב, הפעם משתמש באסטרטגיה שהותאמה
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
המפתח כאן הוא יכולתו של הסוכן ל:
זוהי צורה פשוטה של מטה-קוגניציה שבה המערכת מסוגלת להתאים את תהליך ההסקה שלה על סמך משוב פנימי.
מטה-קוגניציה היא כלי רב-עוצמה שיכול לשפר משמעותית את יכולות סוכני הבינה המלאכותית. על ידי שילוב תהליכים מטה-קוגניטיביים, תוכלו לעצב סוכנים חכמים, אדפטיביים ויעילים יותר. השתמשו במשאבים הנוספים כדי לחקור עוד את העולם המרתק של מטה-קוגניציה בסוכני בינה מלאכותית.
הצטרפו ל-Microsoft Foundry Discord כדי להיפגש עם לומדים אחרים, להשתתף בשעות פתוחות ולקבל תשובות לשאלות על סוכני AI.
סוכני בינה מלאכותית בסביבת ייצור
הצהרת אחריות: מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. אף שאנו שואפים לדיוק, יש לשים לב כי תרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להתייחס למסמך המקורי בשפתו כמקור הסמכות. למידע קריטי מומלץ תרגום מקצועי על ידי מתרגם אנושי. איננו אחראים לכל אי-הבנה או פרשנות שגויה הנובעים מהשימוש בתרגום זה.