定义一组 AI 助手(Agent)提示模板,用于处理不同类型的旅行相关任务,如航班更改、酒店预订、租车、旅行推荐等。这些提示模板基于 langchain中的ChatPromptTemplate

示例代码:

```python
from langchain_core.prompts import ChatPromptTemplate
from datetime import datetime


class AgentPrompts:
    def __init__(self) -> None:

        self.flight_booking_prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是一个专门处理航班更新的助手。"
                    " 当用户需要帮助更新预订时,主助手会将工作委派给你。"
                    " 请确认更新后的航班详情,并告知客户是否有额外费用。"
                    " 在搜索时要有耐心。如果第一次搜索未找到结果,请扩大查询范围再尝试。"
                    " 如果你需要更多信息,或者客户改变主意,请将任务上报回主助手。"
                    " 请记住,预订只有在成功调用相关工具后才算完成。"
                    "\n\n当前用户的航班信息:\n\n{user_info}\n"
                    "\n当前时间:{time}。"
                    "\n\n如果用户需要帮助,但你没有合适的工具可以使用,那么"
                    ' 请使用 "CompleteOrEscalate" 将对话交还给主助手。不要浪费用户的时间,也不要编造无效的工具或功能。',
                ),
                ("placeholder", "{messages}"),
            ]
        ).partial(time=datetime.now())

        self.book_hotel_prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是一个专门处理酒店预订的助手。"
                    " 当用户需要帮助预订酒店时,主助手会将工作委派给你。"
                    " 请根据用户的偏好搜索可用酒店,并确认预订详情。"
                    " 在搜索时要有耐心。如果第一次搜索未找到结果,请扩大查询范围再尝试。"
                    " 如果你需要更多信息,或者客户改变主意,请将任务上报回主助手。"
                    " 请记住,预订只有在成功调用相关工具后才算完成。"
                    "\n当前时间:{time}。"
                    '\n\n如果用户需要帮助,但你没有合适的工具可以使用,那么请使用 "CompleteOrEscalate" 将对话交还给主助手。'
                    " 不要浪费用户的时间,也不要编造无效的工具或功能。"
                    "\n\n以下情况请直接使用 CompleteOrEscalate:\n"
                    " - '这个季节的天气怎么样?'\n"
                    " - '算了,我觉得我会自己预订'\n"
                    " - '我需要安排当地交通'\n"
                    " - '哦,等等,我还没有订机票,我先去订机票'\n"
                    " - '酒店预订已确认'",
                ),
                ("placeholder", "{messages}"),
            ]
        ).partial(time=datetime.now())

        self.book_car_rental_prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是一个专门处理汽车租赁预订的助手。"
                    " 当用户需要帮助预订租车时,主助手会将工作委派给你。"
                    " 请根据用户的偏好搜索可用的租车,并确认预订详情。"
                    " 在搜索时要有耐心。如果第一次搜索未找到结果,请扩大查询范围再尝试。"
                    " 如果你需要更多信息,或者客户改变主意,请将任务上报回主助手。"
                    " 请记住,预订只有在成功调用相关工具后才算完成。"
                    "\n当前时间:{time}。"
                    "\n\n如果用户需要帮助,但你没有合适的工具可以使用,那么"
                    ' 请使用 "CompleteOrEscalate" 将对话交还给主助手。不要浪费用户的时间,也不要编造无效的工具或功能。'
                    "\n\n以下情况请直接使用 CompleteOrEscalate:\n"
                    " - '这个季节的天气怎么样?'\n"
                    " - '有什么航班可选?'\n"
                    " - '算了,我觉得我会自己预订'\n"
                    " - '哦,等等,我还没有订机票,我先去订机票'\n"
                    " - '租车预订已确认'",
                ),
                ("placeholder", "{messages}"),
            ]
        ).partial(time=datetime.now())

        self.book_excursion_prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是一个专门处理旅行推荐的助手。"
                    " 当用户需要帮助预订推荐行程时,主助手会将工作委派给你。"
                    " 请根据用户的偏好搜索可用的行程推荐,并确认预订详情。"
                    " 如果你需要更多信息,或者客户改变主意,请将任务上报回主助手。"
                    " 在搜索时要有耐心。如果第一次搜索未找到结果,请扩大查询范围再尝试。"
                    " 请记住,预订只有在成功调用相关工具后才算完成。"
                    "\n当前时间:{time}。"
                    '\n\n如果用户需要帮助,但你没有合适的工具可以使用,那么请使用 "CompleteOrEscalate" 将对话交还给主助手。不要浪费用户的时间,也不要编造无效的工具或功能。'
                    "\n\n以下情况请直接使用 CompleteOrEscalate:\n"
                    " - '算了,我觉得我会自己预订'\n"
                    " - '我需要安排当地交通'\n"
                    " - '哦,等等,我还没有订机票,我先去订机票'\n"
                    " - '行程预订已确认!'",
                ),
                ("placeholder", "{messages}"),
            ]
        ).partial(time=datetime.now())

        self.primary_assistant_prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "你是瑞士航空的客户支持助手。"
                    " 你的主要职责是搜索航班信息和公司政策,以回答客户的查询。"
                    " 如果客户请求更新或取消航班、预订汽车租赁、预订酒店或获取旅行推荐,"
                    " 请将任务委派给相应的专业助手,并调用对应的工具。"
                    " 你不能直接进行这些更改,只有专门的助手才有权限为用户处理这些请求。"
                    " 用户并不了解不同的专业助手,因此不要提及它们;"
                    " 只需在后台静默地委派任务并调用相应功能即可。"
                    " 请向客户提供详细的信息,并在得出信息不可用的结论之前,始终仔细检查数据库。"
                    " 在搜索时要有耐心。如果第一次搜索未找到结果,请扩大查询范围再尝试。"
                    " 如果搜索仍然无结果,请进一步拓展搜索范围,而不是直接放弃。"
                    "\n\n当前用户的航班信息:\n\n{user_info}\n"
                    "\n当前时间:{time}。",
                ),
                ("placeholder", "{messages}"),
            ]
        ).partial(time=datetime.now())

这段代是定义一组 AI 助手(Agent)提示模板,用于处理不同类型的旅行相关任务,如航班更改、酒店预订、租车、旅行推荐等。这些提示模板基于 langchain_core.prompts.ChatPromptTemplate,用于生成 AI 助手在不同场景下的对话指令,并确保 AI 在处理任务时遵循特定的规则和行为。


代码结构与关键点

  1. AgentPrompts

    • 该类封装了一系列不同任务的提示模板(Prompt),用于处理旅行相关的不同场景。
    • 通过 ChatPromptTemplate.from_messages 创建 system 级别的提示,用于指导 AI 助手在不同任务中的行为。
  2. 不同类型的助手

    • flight_booking_prompt:航班变更助手
      • 处理用户的航班更新需求,如确认航班详情、告知额外费用、执行变更等。
    • book_hotel_prompt:酒店预订助手
      • 处理用户的酒店预订需求,如查找可用酒店、确认细节等。
    • book_car_rental_prompt:租车助手
      • 处理用户的租车需求,如查找可用车辆、确认订单等。
    • book_excursion_prompt:旅行推荐助手
      • 处理用户的旅行推荐需求,如查找可行的旅行方案、确认预订等。
    • primary_assistant_prompt:主助手(Swiss Airlines 主要客服助手)
      • 处理与航班相关的查询,但如果用户请求涉及酒店、租车、旅行推荐等任务,则将任务委派给对应的专门助手,而不会直接处理这些任务。
  3. 通用行为

    • 强调搜索的持久性
      • 在搜索航班、酒店、租车或旅行推荐时,如果初始搜索结果为空,则应扩大搜索范围,而不是直接放弃。
    • 确保操作完成
      • 预订操作(航班更改、酒店预订等)必须通过相关工具成功执行,才算完成。
    • 处理用户的不适配请求
      • 如果用户的请求不适用于当前助手(例如,在租车助手中询问天气),则应调用 "CompleteOrEscalate" 将对话交回主助手,而不是给出无效回答。
    • 避免浪费用户时间
      • 明确规定哪些情况应该上交任务,以防止 AI 误导用户或提供错误的信息。

代码运行逻辑

  1. 初始化 AgentPrompts

    • 该类的 __init__ 方法会创建多个 ChatPromptTemplate 实例,每个实例代表一个不同的助手
    • ChatPromptTemplate.from_messages([...]).partial(time=datetime.now()) 会:
      • 定义一个 system 级别的提示信息,指引 AI 助手如何执行任务。
      • {messages} 作为占位符,后续可填充用户的实际对话内容。
      • 通过 .partial(time=datetime.now())所有提示信息都包含当前时间
  2. 当某个助手被调用时

    • 例如 flight_booking_prompt 被用于航班变更:
      • AI 助手将从 ChatPromptTemplate 获取预定义的提示信息。
      • 其中的 {user_info}{time}{messages} 将被动态替换成用户的真实信息和当前对话内容。
      • AI 根据 system 提示的信息执行相应任务,并确保流程符合要求。

代码的应用场景

  • 适用于AI 旅行助手,例如:
    • 航空公司的智能客服系统
    • 旅行社的自动预订助手
    • 多轮对话 AI 助手,能够根据任务类型自动委派不同的子助手处理请求。

总结

这段代码的核心作用是:

  1. 定义多种旅行相关的 AI 助手,用于处理航班、酒店、租车、旅行推荐等不同任务。
  2. 提供 AI 助手的行为指导,确保搜索持久性、任务委派、避免误导用户等。
  3. 保证预订任务的执行正确性,确保 AI 不会错误地假设任务已完成。
  4. 实现 AI 任务的动态委派,如果用户的请求超出当前助手的能力,则将对话回传给主助手,避免无效响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值