(برای مشاهده ویدئوی این درس روی تصویر بالا کلیک کنید)
فراشناخت در عوامل هوش مصنوعی
به درس فراشناخت در عوامل هوش مصنوعی خوش آمدید! این فصل برای مبتدیانی طراحی شده است که کنجکاو هستند بدانند چگونه عوامل هوش مصنوعی میتوانند درباره فرآیندهای فکری خود فکر کنند. در پایان این درس، مفاهیم کلیدی را درک خواهید کرد و با مثالهای عملی برای بهکارگیری فراشناخت در طراحی عوامل هوش مصنوعی مجهز خواهید شد.
پس از اتمام این درس، قادر خواهید بود:
فراشناخت به فرآیندهای شناختی سطح بالاتری اشاره دارد که شامل فکر کردن درباره تفکر خود فرد است. برای عوامل هوش مصنوعی، این به معنای توانایی ارزیابی و تنظیم اقدامات خود بر اساس خودآگاهی و تجربیات گذشته است. فراشناخت، یا “فکر کردن درباره فکر کردن”، یک مفهوم مهم در توسعه سیستمهای هوش مصنوعی عاملی است. این شامل آگاهی سیستمهای هوش مصنوعی از فرآیندهای داخلی خود و توانایی نظارت، تنظیم و تطبیق رفتارشان است. درست مانند زمانی که ما محیط را ارزیابی میکنیم یا به یک مسئله نگاه میکنیم. این خودآگاهی میتواند به سیستمهای هوش مصنوعی کمک کند تصمیمات بهتری بگیرند، خطاها را شناسایی کنند و عملکرد خود را در طول زمان بهبود بخشند - که دوباره به آزمون تورینگ و بحث درباره اینکه آیا هوش مصنوعی قرار است کنترل را به دست بگیرد، مرتبط میشود.
در زمینه سیستمهای هوش مصنوعی عاملی، فراشناخت میتواند به حل چندین چالش کمک کند، از جمله:
فراشناخت، یا “فکر کردن درباره فکر کردن”، یک فرآیند شناختی سطح بالا است که شامل خودآگاهی و خودتنظیمی فرآیندهای شناختی فرد میشود. در حوزه هوش مصنوعی، فراشناخت به عوامل این امکان را میدهد که استراتژیها و اقدامات خود را ارزیابی و تطبیق دهند، که منجر به بهبود تواناییهای حل مسئله و تصمیمگیری میشود. با درک فراشناخت، میتوانید عوامل هوش مصنوعی طراحی کنید که نه تنها هوشمندتر بلکه تطبیقپذیرتر و کارآمدتر باشند. در فراشناخت واقعی، شما شاهد استدلال صریح هوش مصنوعی درباره استدلال خود خواهید بود.
مثال: “من پروازهای ارزانتر را اولویت دادم چون… ممکن است پروازهای مستقیم را از دست داده باشم، پس اجازه دهید دوباره بررسی کنم.” پیگیری اینکه چگونه یا چرا یک مسیر خاص را انتخاب کرده است.
فراشناخت به دلایل متعددی نقش حیاتی در طراحی عوامل هوش مصنوعی ایفا میکند:
قبل از ورود به فرآیندهای فراشناختی، ضروری است که اجزای اساسی یک عامل هوش مصنوعی را درک کنید. یک عامل هوش مصنوعی معمولاً شامل موارد زیر است:
این اجزا با هم کار میکنند تا یک “واحد تخصصی” ایجاد کنند که بتواند وظایف خاصی را انجام دهد.
مثال: یک عامل مسافرتی را در نظر بگیرید که نه تنها تعطیلات شما را برنامهریزی میکند بلکه مسیر خود را بر اساس دادههای لحظهای و تجربیات سفر مشتریان گذشته تنظیم میکند.
تصور کنید که در حال طراحی یک سرویس عامل مسافرتی مبتنی بر هوش مصنوعی هستید. این عامل، “عامل مسافرتی”، به کاربران در برنامهریزی تعطیلاتشان کمک میکند. برای گنجاندن فراشناخت، عامل مسافرتی باید اقدامات خود را بر اساس خودآگاهی و تجربیات گذشته ارزیابی و تنظیم کند. در اینجا نحوه ایفای نقش فراشناخت آورده شده است:
وظیفه فعلی کمک به یک کاربر برای برنامهریزی سفری به پاریس است.
عامل مسافرتی از فراشناخت برای ارزیابی عملکرد خود و یادگیری از تجربیات گذشته استفاده میکند. برای مثال:
در اینجا یک مثال ساده از کد عامل مسافرتی آورده شده است که فراشناخت را در خود جای داده است:
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)
با گنجاندن فراشناخت، عامل مسافرتی میتواند توصیههای مسافرتی شخصیتر و دقیقتری ارائه دهد و تجربه کلی کاربر را بهبود بخشد.
برنامهریزی یک مؤلفه حیاتی از رفتار عوامل هوش مصنوعی است. این شامل ترسیم مراحل لازم برای دستیابی به یک هدف، با در نظر گرفتن وضعیت فعلی، منابع و موانع احتمالی است.
مثال: در اینجا مراحلی که عامل مسافرتی باید برای کمک به کاربر در برنامهریزی سفر خود به طور مؤثر انجام دهد آورده شده است:
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 برای اصلاح خطاها و بهبود دقت عوامل هوش مصنوعی تمرکز دارد. این شامل:
یک عامل جستجو را در نظر بگیرید که اطلاعات را از وب برای پاسخ به پرسشهای کاربر بازیابی میکند. رویکرد RAG اصلاحی ممکن است شامل موارد زیر باشد:
RAG اصلاحی (تولید تقویتشده با بازیابی) توانایی هوش مصنوعی را برای بازیابی و تولید اطلاعات در حالی که نادرستیها را اصلاح میکند، افزایش میدهد. بیایید ببینیم چگونه عامل مسافرتی میتواند از رویکرد 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 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):
# 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__
): کلاس 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']
# 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__
): کلاس TravelAgent
با لیستی از مقصدهای احتمالی که هر کدام دارای ویژگیهایی مانند نام، هزینه و نوع فعالیت هستند، مقداردهی اولیه میشود.
شروع برنامه (متد bootstrap_plan
): این متد یک برنامه سفر اولیه بر اساس ترجیحات و بودجه مشتری ایجاد میکند. این لیست مقصدها را مرور کرده و آنها را به برنامه اضافه میکند اگر با ترجیحات مشتری مطابقت داشته باشند و در بودجه قرار بگیرند.
مطابقت ترجیحات (متد match_preferences
): این متد بررسی میکند که آیا یک مقصد با ترجیحات مشتری مطابقت دارد یا خیر.
تکرار برنامه (متد iterate_plan
): این متد برنامه اولیه را با تلاش برای جایگزینی هر مقصد در برنامه با یک گزینه بهتر، با توجه به ترجیحات و محدودیتهای بودجه مشتری، بهبود میبخشد.
محاسبه هزینه (متد calculate_cost
): این متد هزینه کل برنامه فعلی را، شامل یک مقصد جدید احتمالی، محاسبه میکند.
با شروع برنامه با یک هدف واضح (مثلاً به حداکثر رساندن رضایت مشتری) و تکرار برای بهبود برنامه، آژانس مسافرتی میتواند یک برنامه سفر سفارشی و بهینه برای مشتری ایجاد کند. این روش تضمین میکند که برنامه سفر از ابتدا با ترجیحات و بودجه مشتری هماهنگ باشد و با هر تکرار بهبود یابد.
مدلهای زبانی بزرگ (LLMs) میتوانند برای رتبهبندی مجدد و امتیازدهی با ارزیابی ارتباط و کیفیت اسناد بازیابیشده یا پاسخهای تولیدشده استفاده شوند. در اینجا نحوه عملکرد آن توضیح داده شده است:
بازیابی: مرحله اولیه بازیابی مجموعهای از اسناد یا پاسخهای کاندید را بر اساس پرسش انجام میدهد.
رتبهبندی مجدد: مدل زبانی بزرگ این کاندیدها را ارزیابی کرده و بر اساس ارتباط و کیفیت آنها را مجدداً رتبهبندی میکند. این مرحله تضمین میکند که اطلاعات مرتبط و با کیفیت بالا در اولویت قرار گیرند.
امتیازدهی: مدل زبانی بزرگ به هر کاندید امتیازی اختصاص میدهد که نشاندهنده ارتباط و کیفیت آنها است. این به انتخاب بهترین پاسخ یا سند برای کاربر کمک میکند.
با استفاده از مدلهای زبانی بزرگ برای رتبهبندی مجدد و امتیازدهی، سیستم میتواند اطلاعات دقیقتر و مرتبطتر ارائه دهد و تجربه کلی کاربر را بهبود بخشد.
در اینجا یک مثال از نحوه استفاده یک آژانس مسافرتی از مدل زبانی بزرگ (LLM) برای رتبهبندی مجدد و امتیازدهی مقصدهای سفر بر اساس ترجیحات کاربر در پایتون آورده شده است:
یک آژانس مسافرتی میخواهد بهترین مقصدهای سفر را بر اساس ترجیحات مشتری توصیه کند. مدل زبانی بزرگ به رتبهبندی مجدد و امتیازدهی مقصدها کمک میکند تا مطمئن شود گزینههای مرتبطتر ارائه شوند.
در اینجا نحوه بهروزرسانی مثال قبلی برای استفاده از خدمات Azure OpenAI آورده شده است:
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
): این متد یک پرامپت برای سرویس Azure OpenAI بر اساس ترجیحات کاربر ایجاد میکند و یک درخواست HTTP POST به API Azure OpenAI ارسال میکند تا مقصدهای رتبهبندیشده و امتیازدهیشده دریافت شود.
ایجاد پرامپت (متد generate_prompt
): این متد یک پرامپت برای Azure OpenAI ایجاد میکند که شامل ترجیحات کاربر و لیست مقصدها است. پرامپت مدل را راهنمایی میکند تا مقصدها را بر اساس ترجیحات ارائهشده رتبهبندی مجدد و امتیازدهی کند.
درخواست API: کتابخانه requests
برای ارسال یک درخواست HTTP POST به نقطه پایانی API Azure OpenAI استفاده میشود. پاسخ شامل مقصدهای رتبهبندیشده و امتیازدهیشده است.
مثال استفاده: آژانس مسافرتی ترجیحات کاربر (مثلاً علاقه به بازدید از جاذبههای دیدنی و فرهنگ متنوع) را جمعآوری کرده و از سرویس Azure OpenAI برای دریافت توصیههای رتبهبندیشده و امتیازدهیشده برای مقصدهای سفر استفاده میکند.
اطمینان حاصل کنید که your_azure_openai_api_key
را با کلید API واقعی Azure OpenAI خود و https://your-endpoint.com/...
را با URL واقعی نقطه پایانی Azure OpenAI جایگزین کنید.
با استفاده از مدل زبانی بزرگ برای رتبهبندی مجدد و امتیازدهی، آژانس مسافرتی میتواند توصیههای سفر شخصیسازیشده و مرتبطتر به مشتریان ارائه دهد و تجربه کلی آنها را بهبود بخشد.
تولید مبتنی بر بازیابی (RAG) میتواند هم به عنوان یک تکنیک پرامپت و هم به عنوان یک ابزار در توسعه عوامل هوش مصنوعی استفاده شود. درک تفاوت بین این دو میتواند به شما کمک کند تا RAG را به طور مؤثرتر در پروژههای خود به کار ببرید.
چیست؟
چگونه کار میکند:
مثال در آژانس مسافرتی:
چیست؟
چگونه کار میکند:
مثال در آژانس مسافرتی:
جنبه | تکنیک پرامپت | ابزار |
---|---|---|
دستی در مقابل خودکار | فرموله کردن دستی پرامپتها برای هر پرسش. | فرآیند خودکار برای بازیابی و تولید. |
کنترل | کنترل بیشتری بر فرآیند بازیابی ارائه میدهد. | بازیابی و تولید را ساده و خودکار میکند. |
انعطافپذیری | امکان پرامپتهای سفارشی بر اساس نیازهای خاص. | کارآمدتر برای پیادهسازیهای بزرگمقیاس. |
پیچیدگی | نیاز به ساخت و تنظیم پرامپتها دارد. | آسانتر برای یکپارچهسازی در معماری عامل هوش مصنوعی. |
مثال تکنیک پرامپت:
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)
ارزیابی ارتباط جنبهای حیاتی از عملکرد عامل هوش مصنوعی است. این تضمین میکند که اطلاعات بازیابیشده و تولیدشده توسط عامل مناسب، دقیق و مفید برای کاربر باشد. بیایید بررسی کنیم که چگونه میتوان ارتباط را در عوامل هوش مصنوعی ارزیابی کرد، از جمله مثالهای عملی و تکنیکها.
مثال:
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
در اینجا یک مثال عملی از نحوه ارزیابی ارتباط توصیههای سفر توسط آژانس مسافرتی آورده شده است:
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)
عوامل تولید کد از مدلهای هوش مصنوعی برای نوشتن و اجرای کد استفاده میکنند تا مسائل پیچیده را حل کرده و وظایف را خودکار کنند.
عوامل تولید کد از مدلهای تولیدی هوش مصنوعی برای نوشتن و اجرای کد استفاده میکنند. این عوامل میتوانند مسائل پیچیده را حل کنند، وظایف را خودکار کنند و با تولید و اجرای کد در زبانهای برنامهنویسی مختلف، بینشهای ارزشمندی ارائه دهند.
تصور کنید که در حال طراحی یک عامل تولید کد هستید. این فرآیند میتواند به این شکل باشد:
در این مثال، ما یک عامل تولید کد طراحی میکنیم، 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):
# 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)
استفاده از طرحواره جدول میتواند فرآیند تولید کوئری را با بهرهگیری از آگاهی محیطی و استدلال بهبود بخشد.
در اینجا یک مثال از نحوه انجام این کار آورده شده است:
در اینجا یک مثال کد پایتون بهروز شده که این مفاهیم را در بر میگیرد آورده شده است:
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
): این متد ترجیحات را بر اساس بازخورد کاربر و طرحواره تنظیم میکند.adjust_based_on_environment
): این متد تنظیمات را بر اساس طرحواره و بازخورد شخصیسازی میکند.با آگاه کردن سیستم از محیط و استدلال بر اساس طرحواره، میتوان کوئریهای دقیقتر و مرتبطتری تولید کرد که منجر به توصیههای بهتر سفر و تجربه کاربری شخصیسازی شده میشود.
SQL (زبان پرسوجوی ساختاریافته) ابزاری قدرتمند برای تعامل با پایگاههای داده است. هنگامی که به عنوان بخشی از رویکرد 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)، عوامل هوش مصنوعی مانند Travel Agent میتوانند دادههای مرتبط را به صورت پویا بازیابی کرده و از آن برای ارائه توصیههای دقیق و شخصیسازی شده استفاده کنند.
برای نشان دادن پیادهسازی متاکاگنیشن، بیایید یک عامل ساده ایجاد کنیم که فرآیند تصمیمگیری خود را بازتاب میدهد در حالی که یک مسئله را حل میکند. در این مثال، سیستمی طراحی میکنیم که عامل تلاش میکند انتخاب هتل را بهینه کند، اما فرآیند استدلال خود را ارزیابی کرده و در صورت بروز خطا یا انتخابهای نامطلوب، استراتژی خود را تنظیم میکند.
در اینجا یک مثال آورده شده است:
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']}")
نکته کلیدی در اینجا توانایی عامل برای:
این یک شکل ساده از متاکاگنیشن است که در آن سیستم قادر است فرآیند استدلال خود را بر اساس بازخورد داخلی تنظیم کند.
متاکاگنیشن ابزاری قدرتمند است که میتواند به طور قابل توجهی قابلیتهای عوامل هوش مصنوعی را افزایش دهد. با گنجاندن فرآیندهای متاکاگنیشن، میتوانید عواملی طراحی کنید که هوشمندتر، سازگارتر و کارآمدتر باشند. از منابع اضافی برای کشف بیشتر دنیای جذاب متاکاگنیشن در عوامل هوش مصنوعی استفاده کنید.
به دیسکورد Azure AI Foundry بپیوندید تا با دیگر یادگیرندگان ملاقات کنید، در ساعات اداری شرکت کنید و سوالات خود درباره عوامل هوش مصنوعی را مطرح کنید.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.