AI个人学习
和实操指南
资源推荐1

微软 AI Agent 入门课程:AI Agent 中的元认知(自我思考)

简介

欢迎阅读关于 AI Agent 中元认知的课程!本章专为对 AI Agent 如何思考自身思维过程感兴趣的初学者设计。在本课程结束时,你将理解关键概念,并掌握在 AI Agent 设计中应用元认知的实际示例。

 

学习目标

完成本课程后,你将能够:

  1. 理解 Agent 定义中推理循环的含义。
  2. 使用规划和评估技术来帮助自校正 Agent。
  3. 创建你自己的能够操纵代码来完成任务的 Agent。

 

元认知简介

元认知是指涉及思考自身思维的高阶认知过程。对于 AI Agent 而言,这意味着能够根据自我意识和过去的经验来评估和调整其行动。元认知,或“思考之思考”,是 Agent 式 AI 系统开发中的一个重要概念。它涉及 AI 系统意识到自己的内部过程,并能够相应地监控、调节和调整其行为。就像我们在察言观色或审视问题时所做的那样。这种自我意识可以帮助 AI 系统做出更好的决策,识别错误,并随着时间的推移提高其性能——再次联系到图灵测试以及关于 AI 是否会取代人类的争论。


在 Agent 式 AI 系统的背景下,元认知可以帮助解决几个挑战,例如:

  • 透明性:确保 AI 系统能够解释其推理和决策。
  • 推理:增强 AI 系统综合信息和做出合理决策的能力。
  • 适应性:允许 AI 系统适应新环境和变化的情况。
  • 感知:提高 AI 系统识别和解释来自其环境的数据的准确性。

什么是元认知?

元认知,或“思考之思考”,是一种涉及自我意识和自我调节认知过程的高阶认知过程。在 AI 领域,元认知使 Agent 能够评估和调整其策略和行动,从而提高解决问题和决策能力。通过理解元认知,你可以设计出不仅更智能,而且更具适应性和效率的 AI Agent。在真正的元认知中,你会看到 AI 明确地对其自身的推理进行推理。

例如:“我优先考虑更便宜的航班,因为……我可能错过了直飞航班,所以让我重新检查。”。跟踪它如何或为什么选择某条路线。

  • 注意到它犯了错误,因为它过度依赖上次的用户偏好,所以它不仅修改了最终建议,还修改了其决策策略。
  • 诊断模式,例如,“每当我看到用户提到‘太拥挤’时,我不仅应该删除某些景点,还应该反思,如果我总是按受欢迎程度排名,我选择‘热门景点’的方法是有缺陷的。”

 

元认知在 AI Agent 中的重要性

元认知在 AI Agent 设计中起着至关重要的作用,原因如下:

微软 AI Agent 入门课程:AI Agent 中的元认知-1

  • 自我反思:Agent 可以评估自己的表现并确定需要改进的领域。
  • 适应性:Agent 可以根据过去的经验和变化的环境修改其策略。
  • 错误纠正:Agent 可以自主检测和纠正错误,从而获得更准确的结果。
  • 资源管理:Agent 可以通过规划和评估其行动来优化资源的使用,例如时间和计算能力。

 

AI Agent 的组成部分

在深入研究元认知过程之前,了解 AI Agent 的基本组成部分至关重要。AI Agent 通常由以下部分组成:

  • 角色 (Persona):Agent 的个性和特征,定义了它与用户交互的方式。
  • 工具 (Tools):Agent 可以执行的功能和能力。
  • 技能 (Skills):Agent 拥有的知识和专业知识。

这些组件协同工作,创建一个可以执行特定任务的“专业单元”。

示例:考虑一个旅行 Agent,Agent 服务不仅可以规划你的假期,还可以根据实时数据和过去的客户旅程经验调整其路径。

示例:旅行 Agent 服务中的元认知

假设你正在设计一个由 AI 驱动的旅行 Agent 服务。这个 Agent,“Travel Agent”,帮助用户规划他们的假期。为了结合元认知,Travel Agent 需要根据自我意识和过去的经验来评估和调整其行动。以下是元认知如何发挥作用:

当前任务

当前任务是帮助用户计划去巴黎的旅行。

完成任务的步骤

  1. 收集用户偏好:询问用户的旅行日期、预算、兴趣(例如,博物馆、美食、购物)以及任何特定要求。
  2. 检索信息:搜索符合用户偏好的航班选项、住宿、景点和餐厅。
  3. 生成建议:提供个性化的行程,包括航班详情、酒店预订和建议活动。
  4. 根据反馈进行调整:向用户询问有关建议的反馈,并进行必要的调整。

所需资源

  • 访问航班和酒店预订数据库。
  • 有关巴黎景点和餐厅的信息。
  • 来自以前交互的用户反馈数据。

经验和自我反思

Travel Agent 使用元认知来评估其性能并从过去的经验中学习。例如:

  1. 分析用户反馈:Travel Agent 审查用户反馈,以确定哪些建议被接受,哪些未被接受。它会相应地调整其未来的建议。
  2. 适应性:如果用户之前提到不喜欢拥挤的地方,Travel Agent 将来会避免在高峰时段推荐热门旅游景点。
  3. 错误纠正:如果 Travel Agent 在过去的预订中犯了错误,例如推荐了一家已满的酒店,它会学到在提出建议之前更严格地检查可用性。

实际开发人员示例

这是一个简化的示例,说明了 Travel Agent 在结合元认知时的代码可能是什么样子:

class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
# Search for flights, hotels, and attractions based on preferences
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)

为什么元认知很重要

  • 自我反思:Agent 可以分析其性能并确定需要改进的领域。
  • 适应性:Agent 可以根据反馈和变化的情况修改策略。
  • 错误纠正:Agent 可以自主检测和纠正错误。
  • 资源管理:Agent 可以优化资源使用,例如时间和计算能力。

通过结合元认知,Travel Agent 可以提供更个性化和准确的旅行建议,从而增强整体用户体验。

 

2. Agent 中的规划

规划是 AI Agent 行为的关键组成部分。它涉及概述实现目标所需的步骤,同时考虑当前状态、资源和可能的障碍。

规划的要素

  • 当前任务:明确定义任务。
  • 完成任务的步骤:将任务分解为可管理的步骤。
  • 所需资源:确定必要的资源。
  • 经验:利用过去的经验来指导规划。

示例:以下是 Travel Agent 为协助用户有效规划行程需要采取的步骤:

Travel Agent 的步骤

  1. 收集用户偏好
    • 询问用户有关其旅行日期、预算、兴趣和任何特定要求的详细信息。
    • 示例:“您计划什么时候旅行?”“您的预算范围是多少?”“您在度假时喜欢什么活动?”
  2. 检索信息
    • 根据用户偏好搜索相关的旅行选项。
    • 航班:查找符合用户预算和首选旅行日期的可用航班。
    • 住宿:查找符合用户对位置、价格和便利设施偏好的酒店或租赁物业。
    • 景点和餐厅:确定符合用户兴趣的热门景点、活动和餐饮选择。
  3. 生成建议
    • 将检索到的信息编译成个性化的行程。
    • 提供航班选项、酒店预订和建议活动等详细信息,确保根据用户的偏好定制建议。
  4. 向用户展示行程
    • 与用户分享建议的行程供其审查。
    • 示例:“这是您巴黎之旅的建议行程。它包括航班详情、酒店预订以及推荐活动和餐厅的列表。请告诉我您的想法!”
  5. 收集反馈
    • 向用户询问有关建议行程的反馈。
    • 示例:“您喜欢航班选项吗?”“酒店是否适合您的需求?”“您想添加或删除任何活动吗?”
  6. 根据反馈进行调整
    • 根据用户的反馈修改行程。
    • 对航班、住宿和活动建议进行必要的更改,以更好地匹配用户的偏好。
  7. 最终确认
    • 向用户展示更新后的行程以进行最终确认。
    • 示例:“我已经根据您的反馈进行了调整。这是更新后的行程。一切看起来都好吗?”
  8. 预订和确认预订
    • 一旦用户批准行程,继续预订航班、住宿和任何预先计划的活动。
    • 向用户发送确认详细信息。
  9. 提供持续支持
    • 在旅行之前和旅行期间,随时可以协助用户进行任何更改或其他请求。
    • 示例:“如果您在旅行期间需要任何进一步的帮助,请随时与我联系!”

交互示例

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)

 

3. 修正型 RAG 系统

首先,让我们了解 RAG 工具和预先上下文加载之间的区别。

微软 AI Agent 入门课程:AI Agent 中的元认知-2

检索增强生成 (RAG)

RAG 将检索系统与生成模型相结合。当提出查询时,检索系统从外部源获取相关文档或数据,并且使用这些检索到的信息来增强生成模型的输入。这有助于模型生成更准确和更符合上下文的回复。

在 RAG 系统中,智能体 (Agent) 从知识库中检索相关信息,并使用它来生成适当的回复或操作。

修正型 RAG 方法

修正型 RAG 方法侧重于使用 RAG 技术来纠正错误并提高 AI 智能体 (Agent) 的准确性。这包括:

  1. 提示技术:使用特定提示来指导智能体 (Agent) 检索相关信息。
  2. 工具:实现算法和机制,使智能体 (Agent) 能够评估检索到的信息的相关性并生成准确的回复。
  3. 评估:持续评估智能体 (Agent) 的性能并进行调整,以提高其准确性和效率。

示例:搜索智能体 (Agent) 中的修正型 RAG

考虑一个搜索智能体 (Agent),它从网络检索信息以回答用户查询。修正型 RAG 方法可能包括:

  1. 提示技术:根据用户的输入制定搜索查询。
  2. 工具:使用自然语言处理和机器学习算法对搜索结果进行排名和过滤。
  3. 评估:分析用户反馈以识别和纠正检索信息中的不准确之处。

旅行智能体 (Agent) 中的修正型 RAG

修正型 RAG (检索增强生成) 增强了 AI 检索和生成信息的能力,同时纠正任何不准确之处。让我们看看 Travel Agent 如何使用修正型 RAG 方法来提供更准确和相关的旅行推荐。

这包括:

  • 提示技术: 使用特定提示来指导智能体 (Agent) 检索相关信息。
  • 工具: 实施算法和机制,使智能体 (Agent) 能够评估检索到的信息的相关性并生成准确的回复。
  • 评估: 持续评估智能体 (Agent) 的性能并进行调整,以提高其准确性和效率。

在 Travel Agent 中实施修正型 RAG 的步骤

  1. 初始用户交互
    • Travel Agent 从用户那里收集初始偏好,例如目的地、旅行日期、预算和兴趣。
    • 例如:
      preferences = {
      "destination": "Paris",
      "dates": "2025-04-01 to 2025-04-10",
      "budget": "moderate",
      "interests": ["museums", "cuisine"]
      }
      
  2. 信息检索
    • Travel Agent 根据用户偏好检索有关航班、住宿、景点和餐厅的信息。
    • 例如:
      flights = search_flights(preferences)
      hotels = search_hotels(preferences)
      attractions = search_attractions(preferences)
      
  3. 生成初始推荐
    • Travel Agent 使用检索到的信息生成个性化行程。
    • 例如:
      itinerary = create_itinerary(flights, hotels, attractions)
      print("Suggested Itinerary:", itinerary)
      
  4. 收集用户反馈
    • Travel Agent 向用户询问有关初始推荐的反馈。
    • 例如:
      feedback = {
      "liked": ["Louvre Museum"],
      "disliked": ["Eiffel Tower (too crowded)"]
      }
      
  5. 修正型 RAG 过程
    • 提示技术:Travel Agent 根据用户反馈制定新的搜索查询。
      • 例如:
        if "disliked" in feedback:
        preferences["avoid"] = feedback["disliked"]
        
    • 工具:Travel Agent 使用算法对新的搜索结果进行排名和过滤,并根据用户反馈强调相关性。
      • 例如:
        new_attractions = search_attractions(preferences)
        new_itinerary = create_itinerary(flights, hotels, new_attractions)
        print("Updated Itinerary:", new_itinerary)
        
    • 评估:Travel Agent 通过分析用户反馈并进行必要的调整,持续评估其推荐的相关性和准确性。
      • 例如:
        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)
        

实际例子

这是一个简化的 Python 代码示例,其中 Travel Agent 采用了修正型 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
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)

预先上下文加载

预先上下文加载涉及在处理查询之前将相关上下文或背景信息加载到模型中。这意味着模型从一开始就可以访问此信息,这可以帮助它生成更明智的回复,而无需在处理过程中检索其他数据。

以下是一个简化的示例,展示了 Travel Agent 应用程序中预先上下文加载的 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"))

说明

  1. 初始化 (__init__ 方法)TravelAgent 类预加载了一个字典,其中包含有关巴黎、东京、纽约和悉尼等热门目的地的信息。该字典包括每个目的地的国家、货币、语言和主要景点等详细信息。
  2. 检索信息 (get_destination_info 方法):当用户查询特定目的地时,get_destination_info 方法从预加载的上下文字典中获取相关信息。

通过预加载上下文,Travel Agent 应用程序可以快速响应用户查询,而无需实时从外部源检索此信息。这使得应用程序更高效、响应更快。

在迭代之前使用目标引导计划

使用目标引导计划涉及从一开始就牢记明确的目标或预期结果。通过预先定义此目标,模型可以在整个迭代过程中将其用作指导原则。这有助于确保每次迭代都更接近实现预期结果,从而使过程更有效率和重点。

以下是一个示例,展示了如何在 Python 中为 Travel Agent 在迭代之前使用目标引导旅行计划:

场景

Travel Agent 希望为客户计划定制的假期。目标是根据客户的偏好和预算创建一个旅行行程,最大限度地提高客户的满意度。

步骤

  1. 定义客户的偏好和预算。
  2. 根据这些偏好引导初始计划。
  3. 迭代以优化计划,以最大程度地提高客户满意度。

Python 代码

class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def bootstrap_plan(self, preferences, budget):
plan = []
total_cost = 0
for destination in self.destinations:
if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
plan.append(destination)
total_cost += destination['cost']
return plan
def match_preferences(self, destination, preferences):
for key, value in preferences.items():
if destination.get(key) != value:
return False
return True
def iterate_plan(self, plan, preferences, budget):
for i in range(len(plan)):
for destination in self.destinations:
if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
plan[i] = destination
break
return plan
def calculate_cost(self, plan, new_destination):
return sum(destination['cost'] for destination in plan) + new_destination['cost']
# Example usage
destinations = [
{"name": "Paris", "cost": 1000, "activity": "sightseeing"},
{"name": "Tokyo", "cost": 1200, "activity": "shopping"},
{"name": "New York", "cost": 900, "activity": "sightseeing"},
{"name": "Sydney", "cost": 1100, "activity": "beach"},
]
preferences = {"activity": "sightseeing"}
budget = 2000
travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)
refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)

代码说明

  1. 初始化 (__init__ 方法)TravelAgent 类使用潜在目的地列表进行初始化,每个目的地都有名称、成本和活动类型等属性。
  2. 引导计划 (bootstrap_plan 方法):此方法根据客户的偏好和预算创建初始旅行计划。它遍历目的地列表,如果它们与客户的偏好匹配并且符合预算,则将它们添加到计划中。
  3. 匹配偏好 (match_preferences 方法):此方法检查目的地是否与客户的偏好匹配。
  4. 迭代计划 (iterate_plan 方法):此方法通过尝试将计划中的每个目的地替换为更好的匹配项来优化初始计划,同时考虑客户的偏好和预算限制。
  5. 计算成本 (calculate_cost 方法):此方法计算当前计划的总成本,包括潜在的新目的地。

示例用法

  • 初始计划:Travel Agent 根据客户对观光的偏好和 2000 美元的预算创建初始计划。
  • 优化计划:Travel Agent 迭代计划,根据客户的偏好和预算进行优化。

通过使用明确的目标 (例如,最大化客户满意度) 引导计划并进行迭代以优化计划,Travel Agent 可以为客户创建定制和优化的旅行行程。这种方法确保旅行计划从一开始就与客户的偏好和预算保持一致,并且每次迭代都会得到改进。

利用大语言模型 (LLM) 进行重排序和评分

大语言模型 (LLMs) 可用于通过评估检索到的文档或生成的回复的相关性和质量来进行重排序和评分。其工作原理如下:

检索: 初始检索步骤根据查询获取一组候选文档或回复。

重排序: LLM 评估这些候选对象,并根据它们的相关性和质量对它们进行重新排序。此步骤可确保首先呈现最相关和最高质量的信息。

评分: LLM 为每个候选对象分配分数,反映它们的相关性和质量。这有助于为用户选择最佳回复或文档。

通过利用 LLM 进行重排序和评分,系统可以提供更准确和上下文相关的信息,从而改善整体用户体验。

以下是旅行社如何使用大语言模型 (LLM) 根据 Python 中的用户偏好对旅游目的地进行重排序和评分的示例:

场景 - 基于偏好的旅行

旅行社希望根据客户的偏好向客户推荐最佳旅游目的地。LLM 将帮助对目的地进行重排序和评分,以确保呈现最相关的选项。

步骤:

  1. 收集用户偏好。
  2. 检索潜在旅游目的地列表。
  3. 使用 LLM 根据用户偏好对目的地进行重排序和评分。

以下是如何更新前面的示例以使用 Azure OpenAI 服务:

要求

  1. 您需要拥有 Azure 订阅。
  2. 创建 Azure OpenAI 资源并获取您的 API 密钥。

示例 Python 代码

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
}
# 调用 Azure OpenAI API 以获取重新排序和评分的目的地
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 = "以下是根据以下用户偏好排名和评分的旅游目的地:\n"
for key, value in preferences.items():
prompt += f"{key}: {value}\n"
prompt += "\n目的地:\n"
for destination in self.destinations:
prompt += f"- {destination['name']}: {destination['description']}\n"
return prompt
# 示例用法
destinations = [
{"name": "Paris", "description": "光之城,以其艺术、时尚和文化而闻名。"},
{"name": "Tokyo", "description": "充满活力的城市,以其现代性和传统寺庙而闻名。"},
{"name": "New York", "description": "不夜城,拥有标志性地标和多元文化。"},
{"name": "Sydney", "description": "美丽的海港城市,以其歌剧院和迷人的海滩而闻名。"},
]
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("推荐目的地:")
for rec in recommendations:
print(rec)

代码解释 - Preference Booker

  1. 初始化TravelAgent 类使用潜在旅游目的地列表进行初始化,每个目的地都有名称和描述等属性。
  2. 获取建议(get_recommendations 方法):此方法根据用户的偏好为 Azure OpenAI 服务生成提示,并向 Azure OpenAI API 发出 HTTP POST 请求,以获取重新排序和评分的目的地。
  3. 生成提示(generate_prompt 方法):此方法为 Azure OpenAI 构建提示,包括用户的偏好和目的地列表。该提示指导模型根据提供的偏好对目的地进行重排序和评分。
  4. API 调用requests 库用于向 Azure OpenAI API 端点发出 HTTP POST 请求。响应包含重新排序和评分的目的地。
  5. 示例用法:旅行社收集用户偏好(例如,对观光和多元文化的兴趣),并使用 Azure OpenAI 服务获取旅游目的地的重新排序和评分建议。

确保将 your_azure_openai_api_key 替换为您的实际 Azure OpenAI API 密钥,并将 https://your-endpoint.com/... 替换为您的 Azure OpenAI 部署的实际端点 URL。

通过利用 LLM 进行重排序和评分,旅行社可以为客户提供更个性化和相关的旅行建议,从而增强他们的整体体验。

{科技领域评论家锐评:以上代码示例清晰地展示了如何利用大语言模型进行内容的重排序和评分。通过构建 TravelAgent 类,并结合 Azure OpenAI 服务,可以有效地根据用户偏好提供个性化的旅行建议。这种方法不仅提高了推荐的准确性,还增强了用户体验。}

RAG:提示技术与工具

检索增强生成 (RAG) 既可以是 AI Agent 开发中的一种提示技术,也可以是一种工具。理解两者之间的区别可以帮助您在项目中更有效地利用 RAG。

RAG 作为一种提示技术

它是什么?

  • 作为一种提示技术,RAG 涉及制定特定的查询或提示,以指导从大型语料库或数据库中检索相关信息。然后,这些信息被用于生成响应或行动。

它是如何工作的:

  1. 制定提示:根据手头的任务或用户的输入,创建结构良好的提示或查询。
  2. 检索信息:使用提示从预先存在的知识库或数据集中搜索相关数据。
  3. 生成响应:将检索到的信息与生成式 AI 模型相结合,以产生全面且连贯的响应。

旅行社示例

  • 用户输入:“我想参观巴黎的博物馆。”
  • 提示:“查找巴黎的顶级博物馆。”
  • 检索到的信息:有关卢浮宫博物馆、奥赛博物馆等的详细信息。
  • 生成的响应:“以下是巴黎的一些顶级博物馆:卢浮宫博物馆、奥赛博物馆和蓬皮杜中心。”

RAG 作为一种工具

它是什么?

  • 作为一种工具,RAG 是一个集成的系统,可自动执行检索和生成过程,使开发人员可以更轻松地实现复杂的 AI 功能,而无需为每个查询手动创建提示。

它是如何工作的:

  1. 集成:将 RAG 嵌入 AI Agent 的架构中,使其能够自动处理检索和生成任务。
  2. 自动化:该工具管理整个过程,从接收用户输入到生成最终响应,无需为每个步骤提供明确的提示。
  3. 效率:通过简化检索和生成过程来增强 Agent 的性能,从而实现更快、更准确的响应。

旅行社示例

  • 用户输入:“我想参观巴黎的博物馆。”
  • RAG 工具:自动检索有关博物馆的信息并生成响应。
  • 生成的响应:“以下是巴黎的一些顶级博物馆:卢浮宫博物馆、奥赛博物馆和蓬皮杜中心。”

{科技领域评论家锐评:将 RAG 描述为一种提示技术和一种工具,这种区分非常重要。作为提示技术,RAG 强调了手动制定查询的重要性;而作为工具,RAG 则强调了自动化和集成。这两种方式各有优势,可以根据具体需求灵活选择。}

比较

方面 提示技术 工具
手动 vs 自动 为每个查询手动制定提示。 自动执行检索和生成过程。
控制 提供对检索过程的更多控制。 简化和自动化检索和生成。
灵活性 允许根据特定需求定制提示。 更高效地进行大规模实施。
复杂性 需要创建和调整提示。 更容易集成到 AI Agent 的架构中。

实际示例

提示技术示例:

def search_museums_in_paris():
prompt = "Find top museums in Paris"
search_results = search_web(prompt)
return search_results
museums = search_museums_in_paris()
print("Top Museums in Paris:", museums)

工具示例:

class Travel_Agent:
def __init__(self):
self.rag_tool = RAGTool()
def get_museums_in_paris(self):
user_input = "I want to visit museums in Paris."
response = self.rag_tool.retrieve_and_generate(user_input)
return response
travel_agent = Travel_Agent()
museums = travel_agent.get_museums_in_paris()
print("Top Museums in Paris:", museums)

评价:通过对比表格和具体代码示例,清晰地展示了提示技术和工具的区别。手动制定提示赋予了更多的灵活性和控制力,而工具则通过自动化提高了效率。这使得开发者可以根据项目需求和资源情况做出更明智的选择。

评估相关性

评估相关性是 AI Agent 性能的一个关键方面。它确保 Agent 检索和生成的信息是适当的、准确的,并且对用户有用。让我们探讨如何在 AI Agent 中评估相关性,包括实际示例和技巧。

评估相关性的关键概念

  1. 情境感知
    • Agent 必须理解用户查询的情境,以检索和生成相关信息。
    • 示例:如果用户询问“巴黎最好的餐馆”,Agent 应该考虑用户的偏好,例如菜系类型和预算。
  2. 准确性
    • Agent 提供的信息应该在事实上是正确的和最新的。
    • 示例:推荐当前营业且评价良好的餐馆,而不是过时的或已关闭的选项。
  3. 用户意图
    • Agent 应该推断用户查询背后的意图,以提供最相关的信息。
    • 示例:如果用户询问“经济型酒店”,Agent 应该优先考虑价格实惠的选项。
  4. 反馈循环
    • 持续收集和分析用户反馈有助于 Agent 改进其相关性评估过程。
    • 示例:结合用户对先前推荐的评分和反馈,以改进未来的响应。

评估相关性的实用技巧

  1. 相关性评分
    • 根据每个检索项与用户查询和偏好的匹配程度,为其分配相关性评分。
    • 示例:
      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
      
  2. 过滤和排序
    • 过滤掉不相关的项目,并根据其相关性评分对其余项目进行排序。
    • 示例:
      def filter_and_rank(items, query):
      ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
      return ranked_items[:10]  # 返回前 10 个相关项目
      
  3. 自然语言处理 (NLP)
    • 使用 NLP 技巧来理解用户的查询并检索相关信息。
    • 示例:
      def process_query(query):
      # 使用 NLP 从用户的查询中提取关键信息
      processed_query = nlp(query)
      return processed_query
      
  4. 用户反馈集成
    • 收集用户对所提供建议的反馈,并使用它来调整未来的相关性评估。
    • 示例:
      def adjust_based_on_feedback(feedback, items):
      for item in items:
      if item['name'] in feedback['liked']:
      item['relevance'] += 1
      if item['name'] in feedback['disliked']:
      item['relevance'] -= 1
      return items
      

示例:评估 Travel Agent 中的相关性

以下是 Travel Agent 如何评估旅行推荐相关性的一个实际示例:

class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
ranked_hotels = self.filter_and_rank(hotels, self.user_preferences)
itinerary = create_itinerary(flights, ranked_hotels, attractions)
return itinerary
def filter_and_rank(self, items, query):
ranked_items = sorted(items, key=lambda item: self.relevance_score(item, query), reverse=True)
return ranked_items[:10]  # 返回前 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)

有意图的搜索

有意图的搜索涉及理解和解释用户查询背后的根本目的或目标,以检索和生成最相关和最有用的信息。这种方法不仅仅是简单地匹配关键词,而是专注于掌握用户的实际需求和情境。

有意图搜索的关键概念

  1. 理解用户意图
    • 用户意图可以分为三种主要类型:信息型、导航型和交易型。
      • 信息型意图:用户寻求关于某个主题的信息 (例如,“巴黎最好的博物馆有哪些?”)。
      • 导航型意图:用户希望导航到特定的网站或页面 (例如,“Louvre Museum official website”)。
      • 交易型意图:用户旨在执行交易,例如预订航班或购物 (例如,“Book a flight to Paris”)。
  2. 情境感知
    • 分析用户查询的情境有助于准确识别其意图。这包括考虑先前的交互、用户偏好以及当前查询的具体细节。
  3. 自然语言处理 (NLP)
    • 采用 NLP 技巧来理解和解释用户提供的自然语言查询。这包括实体识别、情感分析和查询解析等任务。
  4. 个性化
    • 根据用户的历史记录、偏好和反馈对搜索结果进行个性化处理,可以提高检索信息的相关性。

实际示例:Travel Agent 中的有意图搜索

让我们以 Travel Agent 为例,看看如何实现有意图的搜索。

  1. 收集用户偏好
    class Travel_Agent:
    def __init__(self):
    self.user_preferences = {}
    def gather_preferences(self, preferences):
    self.user_preferences = preferences
    
  2. 理解用户意图
    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"
    
  3. 情境感知
    def analyze_context(query, user_history):
    # 将当前查询与用户历史记录相结合以理解情境
    context = {
    "current_query": query,
    "user_history": user_history
    }
    return context
    
  4. 搜索和个性化结果
    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 个个性化结果
    
  5. 示例用法
    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)
    

 

4. 作为工具生成代码

代码生成智能体 (Agents) 使用 AI 模型编写和执行代码,解决复杂问题并自动化任务。

代码生成智能体

代码生成智能体使用生成式 AI 模型编写和执行代码。这些智能体可以通过生成和运行各种编程语言的代码来解决复杂问题、自动化任务并提供有价值的见解。

实际应用

  1. 自动化代码生成:为特定任务生成代码片段,例如数据分析、网络爬虫或机器学习。
  2. SQL 作为 RAG:使用 SQL 查询从数据库中检索和操作数据。
  3. 问题解决:创建并执行代码以解决特定问题,例如优化算法或分析数据。

示例:用于数据分析的代码生成智能体

假设您正在设计一个代码生成智能体。以下是它的可能工作方式:

  1. 任务:分析数据集以识别趋势和模式。
  2. 步骤
    • 将数据集加载到数据分析工具中。
    • 生成 SQL 查询以过滤和聚合数据。
    • 执行查询并检索结果。
    • 使用结果生成可视化和见解。
  3. 所需资源:访问数据集、数据分析工具和 SQL 功能。
  4. 经验:利用过去的分析结果来提高未来分析的准确性和相关性。

示例:用于旅行社的代码生成智能体

在此示例中,我们将设计一个代码生成智能体,Travel Agent,通过生成和执行代码来协助用户规划旅行。该智能体可以处理诸如获取旅行选项、过滤结果以及使用生成式 AI 编译行程等任务。

代码生成智能体概述

  1. 收集用户偏好:收集用户输入,例如目的地、旅行日期、预算和兴趣。
  2. 生成代码以获取数据:生成代码片段以检索有关航班、酒店和景点的数据。
  3. 执行生成的代码:运行生成的代码以获取实时信息。
  4. 生成行程:将获取的数据编译成个性化的旅行计划。
  5. 根据反馈进行调整:接收用户反馈并在必要时重新生成代码以优化结果。

分步实施

  1. 收集用户偏好
    class Travel_Agent:
    def __init__(self):
    self.user_preferences = {}
    def gather_preferences(self, preferences):
    self.user_preferences = preferences
    
  2. 生成代码以获取数据
    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
    
  3. 执行生成的代码
    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)
    
  4. 生成行程
    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)
    
  5. 根据反馈进行调整
    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)
    

利用环境感知和推理

根据表的模式,通过利用环境感知和推理,确实可以增强查询生成过程。

以下是如何实现这一点的示例:

  1. 理解模式:系统将理解表的模式,并使用此信息来确定查询生成的基础。
  2. 根据反馈进行调整:系统将根据反馈调整用户偏好,并推理模式中需要更新的字段。
  3. 生成和执行查询:系统将生成和执行查询,以根据新的偏好获取更新的航班和酒店数据。

以下是结合了这些概念的更新 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)

说明 - 基于反馈的预订

  1. 模式感知schema 字典定义了应如何根据反馈调整偏好。它包括 favorites 和 avoid 等字段,以及相应的调整。
  2. 调整偏好 (adjust_based_on_feedback 方法):此方法根据用户反馈和模式调整偏好。
  3. 基于环境的调整 (adjust_based_on_environment 方法):此方法根据模式和反馈自定义调整。
  4. 生成和执行查询:系统生成代码以根据调整后的偏好获取更新的航班和酒店数据,并模拟这些查询的执行。
  5. 生成行程:系统根据新的航班、酒店和景点数据创建更新的行程。

通过使系统具有环境感知能力并根据模式进行推理,它可以生成更准确和相关的查询,从而提供更好的旅行建议和更个性化的用户体验。

使用 SQL 作为检索增强生成 (RAG) 技术

SQL (结构化查询语言) 是一种与数据库交互的强大工具。当用作检索增强生成 (RAG) 方法的一部分时,SQL 可以从数据库中检索相关数据,为 AI 智能体中的响应或操作提供信息并生成响应或操作。让我们探讨如何在 Travel Agent 的上下文中使用 SQL 作为 RAG 技术。

关键概念

  1. 数据库交互
    • SQL 用于查询数据库、检索相关信息和操作数据。
    • 示例:从旅行数据库中获取航班详情、酒店信息和景点。
  2. 与 RAG 集成
    • 根据用户输入和偏好生成 SQL 查询。
    • 然后使用检索到的数据生成个性化的推荐或操作。
  3. 动态查询生成
    • AI 智能体根据上下文和用户需求生成动态 SQL 查询。
    • 示例:自定义 SQL 查询以根据预算、日期和兴趣过滤结果。

应用

  • 自动化代码生成:为特定任务生成代码片段。
  • SQL 作为 RAG:使用 SQL 查询来操作数据。
  • 问题解决:创建并执行代码以解决问题。

示例:数据分析智能体:

  1. 任务:分析数据集以查找趋势。
  2. 步骤
    • 加载数据集。
    • 生成 SQL 查询以过滤数据。
    • 执行查询并检索结果。
    • 生成可视化和见解。
  3. 资源:数据集访问、SQL 功能。
  4. 经验:使用过去的结果来改进未来的分析。

实际示例:在 Travel Agent 中使用 SQL

  1. 收集用户偏好
    class Travel_Agent:
    def __init__(self):
    self.user_preferences = {}
    def gather_preferences(self, preferences):
    self.user_preferences = preferences
    
  2. 生成 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
    
  3. 执行 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
    
  4. 生成建议
    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)
    

示例 SQL 查询

  1. 航班查询
    SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-04-10' AND budget='moderate';
    
  2. 酒店查询
    SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
    
  3. 景点查询
    SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
    

通过利用 SQL 作为检索增强生成 (RAG) 技术的一部分,像 Travel Agent 这样的 AI 智能体可以动态检索和利用相关数据,以提供准确和个性化的推荐。

元认知示例

为了演示元认知的实现,让我们创建一个简单的智能体,它在解决问题时反思其决策过程。在此示例中,我们将构建一个系统,其中智能体尝试优化酒店的选择,然后在出错或做出次优选择时评估自己的推理并调整策略。

我们将使用一个基本示例来模拟这一点,其中智能体根据价格和质量的组合选择酒店,但它会“反思”其决策并进行相应调整。

这如何说明元认知:

  1. 初始决策:智能体将选择最便宜的酒店,而不考虑质量影响。
  2. 反思和评估:在做出初步选择后,智能体将使用用户反馈检查酒店是否为“糟糕”选择。如果它发现酒店的质量太低,它会反思其推理。
  3. 调整策略:智能体根据其反思调整策略,从“最便宜”切换到“最高质量”,从而改进其在未来迭代中的决策过程。

示例如下:

class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = []  # 存储之前选择的酒店
self.corrected_choices = []  # 存储更正后的选择
self.recommendation_strategies = ['cheapest', 'highest_quality']  # 可用策略
def recommend_hotel(self, hotels, strategy):
"""
根据所选策略推荐酒店。
策略可以是“最便宜”或“最高质量”。
"""
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):
"""
反思上次做出的选择,并决定智能体是否应调整其策略。
智能体会考虑之前的选择是否导致了较差的结果。
"""
if not self.previous_choices:
return "尚未做出选择。"
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"反思选择。将策略调整为 {new_strategy}。"
else:
return "选择很好。无需调整。"
def get_user_feedback(self, hotel):
"""
模拟基于酒店属性的用户反馈。
为简单起见,假设如果酒店太便宜,则反馈为“差”。
如果酒店质量低于 7,则反馈为“差”。
"""
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['name']}")
# 第 2 步:智能体反思选择并在必要时调整策略
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# 第 3 步:智能体再次推荐,这次使用调整后的策略
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"调整后的酒店推荐(最高质量):{adjusted_recommendation['name']}")

智能体元认知能力

这里的关键是智能体的能力:

  • 评估其先前的选择和决策过程。
  • 根据该反思调整其策略,即元认知的实际应用。

这是一种简单的元认知形式,系统能够根据内部反馈调整其推理过程。

 

结论

元认知是一个强大的工具,可以显著增强 AI 智能体的能力。通过结合元认知过程,您可以设计出更智能、更具适应性和更高效的智能体。使用其他资源进一步探索 AI 智能体中元认知的迷人世界。

内容2
未经允许不得转载:首席AI分享圈 » 微软 AI Agent 入门课程:AI Agent 中的元认知(自我思考)

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文