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

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

RAG משלב מערכת שליפה עם מודל גנרטיבי. כאשר נשאלת שאלה, מערכת השליפה מחפשת מסמכים או נתונים רלוונטיים ממקור חיצוני, ומידע זה משמש להרחבת הקלט למודל הגנרטיבי. זה עוזר למודל לייצר תגובות מדויקות ורלוונטיות יותר בהקשר.
במערכת RAG, הסוכן שולף מידע רלוונטי מבסיס ידע ומשתמש בו ליצירת תגובות או פעולות מתאימות.
גישת RAG מתקנת מתמקדת בשימוש בטכניקות RAG כדי לתקן שגיאות ולשפר את הדיוק של סוכני בינה מלאכותית. זה כולל:
חשבו על סוכן חיפוש השולף מידע מהאינטרנט כדי לענות על שאילתות משתמשים. גישת RAG מתקנת עשויה לכלול:
RAG מתקנת (Retrieval-Augmented Generation) משפרת את יכולת ה-AI לשלוף וליצור מידע תוך תיקון אי-דיוקים. נבדוק כיצד סוכן הנסיעות יכול להשתמש בגישת 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)
טעינת הקשר מונעת כוללת טעינת הקשר רלוונטי או מידע רקע לתוך המודל לפני עיבוד השאלה. משמעות הדבר שהמודל ניגש למידע זה מההתחלה, מה שיכול לעזור לו לייצר תגובות מושכלות יותר ללא צורך בשליפת נתונים נוספים במהלך התהליך.
הנה דוגמה מפושטת כיצד טעינת הקשר מונעת עשויה להיראות עבור אפליקציית סוכן נסיעות בפייתון:
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"))
אתחול (מתודת __init__): מחלקת TravelAgent טוענת מראש מילון המכיל מידע אודות יעדים פופולריים כמו פריז, טוקיו, ניו יורק וסידני. מילון זה כולל פרטים כמו מדינה, מטבע, שפה ואטרקציות עיקריות עבור כל יעד.
שליפת מידע (מתודת get_destination_info): כאשר משתמש שואל על יעד מסוים, מתודת get_destination_info שולפת את המידע הרלוונטי ממילון ההקשר הטעון מראש.
על ידי טעינת ההקשר מראש, אפליקציית סוכן הנסיעות יכולה להגיב במהירות לשאלות המשתמש ללא צורך לשלוף את המידע ממקור חיצוני בזמן אמת. זה הופך את האפליקציה ליעילה ותגובה יותר.
יצירת בסיס לתוכנית עם מטרה כוללת התחלה עם מטרה ברורה או תוצאה רצויה בראש. על ידי הגדרת מטרה זו מראש, המודל יכול להשתמש בה כהנחיה לאורך כל תהליך האיטרציה. זה עוזר להבטיח שכל איטרציה מקרבת להשגת התוצאה הרצויה, מה שעושה את התהליך יעיל וממוקד יותר.
הנה דוגמה כיצד ניתן ליצור תוכנית נסיעות עם מטרה לפני איטרציה עבור סוכן נסיעות בפייתון:
סוכן נסיעות רוצה לתכנן חופשה מותאמת אישית ללקוח. המטרה היא ליצור מסלול נסיעות שממקסם את שביעות רצון הלקוח על בסיס העדפותיו והתקציב.
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)
אתחול (מתודת __init__): מחלקת TravelAgent מאותחלת עם רשימת יעדים פוטנציאליים, כאשר לכל יעד יש תכונות כמו שם, עלות וסוג פעילות.
יצירת התוכנית (מתודת bootstrap_plan): מתודה זו יוצרת תוכנית נסיעות ראשונית על בסיס העדפות הלקוח והתקציב. היא עוברת על רשימת היעדים ומוסיפה אותם לתכנית אם הם מתאימים להעדפות הלקוח ומתאימים לתקציב.
התאמת העדפות (מתודת match_preferences): מתודה זו בודקת אם יעד תואם להעדפות הלקוח.
איטרציה על התכנית (מתודת iterate_plan): מתודה זו משכללת את התכנית הראשונית על ידי ניסיון להחליף כל יעד בתכנית בהתאמה טובה יותר, בהתחשב בהעדפות הלקוח ובמגבלות התקציב.
חישוב עלות (מתודת calculate_cost): מתודה זו מחשבת את העלות הכוללת של התוכנית הנוכחית, כולל יעד חדש פוטנציאלי.
על ידי יצירת תכנית עם מטרה ברורה מראש (למשל, מקסום שביעות רצון הלקוח) ואיטרציה לשיפור התכנית, סוכן הנסיעות יכול ליצור מסלול מותאם ואופטימלי עבור הלקוח. גישה זו מבטיחה שהתכנית מתאימה להעדפות הלקוח ולתקציב מההתחלה ומשתפרת בכל איטרציה.
מודלי שפה גדולים (LLMs) יכולים לשמש לסידור מחדש ותגמול על ידי הערכת הרלוונטיות והאיכות של המסמכים שנתקבלו או התגובות שנוצרו. כך זה עובד:
שליפת מידע: שלב השליפה הראשוני מביא סט של מסמכים או תגובות מועמדות על בסיס השאלה.
סידור מחדש: ה-LLM מעריך את המועמדים ומסדר אותם מחדש על פי הרלוונטיות והאיכות שלהם. שלב זה מבטיח שהמידע הרלוונטי והאיכותי ביותר יוצג ראשון.
תגמול: ה-LLM מעניק ציונים לכל מועמד, המשקפים את רלוונטיותו ואיכותו. זה עוזר בבחירת התגובה או המסמך הטובים ביותר למשתמש.
על ידי ניצול של LLM לסידור מחדש ותגמול, המערכת יכולה לספק מידע מדויק ורלוונטי יותר בהקשר, ולשפר את חוויית המשתמש הכוללת.
הנה דוגמה כיצד סוכן נסיעות יכול להשתמש במודל שפה גדול (LLM) לסידור מחדש ותגמול של יעדי נסיעות בהתבסס על העדפות המשתמש בפייתון:
סוכן נסיעות רוצה להמליץ על יעדי נסיעות הטובים ביותר ללקוח בהתבסס על העדפותיו. ה-LLM יעזור לסדר מחדש ולתגמל את היעדים כדי להבטיח שיוצגו האפשרויות הרלוונטיות ביותר.
כך תוכלו לעדכן את הדוגמה הקודמת לשימוש בשירותי Azure OpenAI:
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)
אתחול: מחלקת TravelAgent מאותחלת עם רשימת יעדי נסיעות פוטנציאליים, כאשר לכל יעד יש תכונות כמו שם ותיאור.
קבלת המלצות (מתודת get_recommendations): מתודה זו יוצרת פרומפט לשירות Azure OpenAI בהתבסס על העדפות המשתמש ובוחרת קריאת HTTP POST ל-API של Azure OpenAI כדי לקבל יעדים מסודרים מחדש ומדורגים.
יצירת פרומפט (מתודת generate_prompt): מתודה זו בונה פרומפט ל-Azure OpenAI, כולל העדפות המשתמש ורשימת היעדים. הפרומפט מנחה את המודל לסדר מחדש ולתגמל את היעדים בהתאם להעדפות שניתנו.
קריאת API: ספריית requests משמשת לביצוע קריאת HTTP POST לנקודת הקצה של Azure OpenAI API. התגובה מכילה את היעדים המסודרים מחדש ומדורגים.
דוגמה לשימוש: סוכן הנסיעות אוסף את העדפות המשתמש (למשל, עניין בסיורי תרבות מגוונים) ומשתמש בשירות Azure OpenAI כדי לקבל המלצות מסודרות מחדש ומדורגות ליעדי נסיעות.
יש לוודא להחליף את your_azure_openai_api_key במפתח ה-API האמיתי שלך ואת https://your-endpoint.com/... בכתובת הנקודת הקצה האמיתית של הפריסה שלך ב-Azure OpenAI.
על ידי שימוש ב-LLM לסידור מחדש ותגמול, סוכן הנסיעות יכול לספק המלצות נסיעות מותאמות אישית ורלוונטיות יותר ללקוחות, ולשפר את חווייתם הכוללת.
יצירה מוגברת בשליפה (Retrieval-Augmented Generation - RAG) יכולה להיות גם טכניקת פרומפטינג וגם כלי בפיתוח סוכני AI. הבנת ההבדל בין השניים יכולה לעזור לך לנצל את RAG בצורה יעילה יותר בפרויקטים שלך.
מה זה?
איך זה עובד:
דוגמה בסוכן נסיעות:
מה זה?
איך זה עובד:
דוגמה בסוכן נסיעות:
| היבט | טכניקת פרומפטינג | כלי |
|---|---|---|
| ידני מול אוטומטי | ניסוח ידני של פרומפטים לכל שאילתה. | תהליך אוטומטי לשליפה ויצירה. |
| בקרה | מציע שליטה רבה יותר על תהליך השליפה. | ייעול ואוטומציה של תהליך השליפה והיצירה. |
| גמישות | מאפשר פרומפטים מותאמים אישית לפי הצרכים הספציפיים. | יעיל יותר לפריסות בקנה מידה גדול. |
| מורכבות | דורש יצירה וכיול של הפרומפטים. | קל יותר לשלב במבנה של סוכן 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):
# השתמש ב-NLP כדי לחלץ מידע מרכזי מהשאילתא של המשתמש
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
הנה דוגמה מעשית כיצד סוכן הנסיעות יכול להעריך את רלוונטיות ההמלצות לנסיעות:
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)
חיפוש עם כוונה כולל הבנה ופרשנות של המטרה או היעד העומדים מאחורי שאילתת המשתמש כדי לשלוף וליצור את המידע הרלוונטי והמועיל ביותר. גישה זו הולכת מעבר להתאמת מילות מפתח ומתמקדת בהבנת הצרכים וההקשר האמיתיים של המשתמש.
בואו נבחן את סוכן הנסיעות כדוגמה כיצד ניתן ליישם חיפוש עם כוונה.
איסוף העדפות המשתמש
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)
סוכני יצירת קוד משתמשים במודלים של בינה מלאכותית לכתיבה והפעלה של קוד, פותרים בעיות מורכבות ומאוטומטים משימות.
סוכני יצירת קוד משתמשים במודלים גנרטיביים של בינה מלאכותית לכתיבה והפעלה של קוד. סוכנים אלו יכולים לפתור בעיות מורכבות, לאוטומט משימות, ולספק תובנות חשובות על ידי יצירה והרצה של קוד בשפות תכנות שונות.
דמיין שאתה מפתח סוכן יצירת קוד. כך זה יכול לעבוד:
בדוגמה זו, נפתח סוכן יצירת קוד בשם סוכן נסיעות, שיעזור למשתמשים בתכנון נסיעות על ידי יצירה והרצה של קוד. סוכן זה יכול לטפל במשימות כמו אחזור אפשרויות נסיעה, סינון תוצאות, והרכבת מסלול נסיעה באמצעות בינה מלאכותית גנרטיבית.
איסוף העדפות משתמש
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)
שימוש במבנה של הטבלה אכן יכול לשפר את תהליך יצירת השאילתות על ידי ניצול מודעות סביבתית והסקת מסקנות.
הנה דוגמה כיצד ניתן לעשות זאת:
הנה דוגמה מעודכנת בקוד פייתון שמשלבת את הקונספטים האלה:
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 (שפת שאילתות מובנית) היא כלי עוצמתי לאינטראקציה עם בסיסי נתונים. כאשר משתמשים בה כחלק מגישת Retrieval-Augmented Generation (RAG), SQL יכולה לשלוף נתונים רלוונטיים מבסיסי נתונים כדי ליידע וליצור תגובות או פעולות בסוכני בינה מלאכותית. נבדוק כיצד SQL יכולה לשמש כטכניקת RAG בהקשר של סוכן נסיעות.
דוגמה: סוכן לניתוח נתונים:
איסוף העדפות משתמש
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), סוכני בינה מלאכותית כמו סוכן נסיעות יכולים לאחזר באופן דינמי ולהשתמש בנתונים רלוונטיים כדי לספק המלצות מדויקות ומותאמות אישית.
על מנת להדגים יישום של מטה-קוגניציה, ניצור סוכן פשוט שמשקף על תהליך קבלת ההחלטות שלו תוך פתרון בעיה. בדוגמה זו, נבנה מערכת שבה סוכן מנסה לאופטם את בחירת המלון, אך לאחר מכן מעריך את ההסקה שלו ומותאם את האסטרטגיה שלו כאשר הוא עושה טעויות או בחירות לא אופטימליות.
נחקה זאת בעזרת דוגמה בסיסית שבה הסוכן בוחר בתי מלון על סמך שילוב של מחיר ואיכות, אך הוא “משקף” על ההחלטות שלו ומתאים את עצמו בהתאם.
הנה דוגמה:
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 כדי להיפגש עם לומדים אחרים, להשתתף בשעות קבלה ולקבל מענה לשאלות על סוכני בינה מלאכותית.
כתב ויתור: מסמך זה תורגם באמצעות שירות תרגום אוטומטי Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.