章节导航:

第二章:Language Models, the Chat Format and Tokens(语言模型,提问范式与 Token)

👉第三章:Classification(评估输入-分类 )

第四章:Moderation(检查输入-监督)

第五章:Chain of Thought Reasoning(处理输入-思维链推理 )

第六章:Prompt Chaining Prompts(处理输入-Prompt 链提示)

第七章: Check Outputs(检查结果)

第八章:Evaluation(搭建一个带评估的端到端问答系统)

3.评估输入-分类 Classification

个人理解:其实这个案例完美的阐述了课程《ChatGPT Prompt Engineering for Developers》的两个核心原则。1.编写清晰、具体的指令 2.给模型时间去思考

可以去看推文:《ChatGPT Prompt Engineering for Developers》面向开发者的提示工程 (学习笔记及总结)-CSDN博客

在处理不同情况下的多个独立指令集的任务时,首先对查询类型进行分类,并以此为基础确定要使用哪些指令,具有诸多优势。这可以通过定义固定类别和硬编码与处理特定类别任务相关的指令来实现。

例如,在构建客户服务助手时,对查询类型进行分类并根据分类确定要使用的指令可能非常关键。具体来说,如果用户要求关闭其账户,那么二级指令可能是添加有关如何关闭账户的额外说明;如果用户询问特定产品信息,则二级指令可能会提供更多的产品信息。

在这个例子中,我们使用系统消息(system_message)作为整个系统的全局指导,并选择使用 “#” 作为分隔符。分隔符是用来区分指令或输出中不同部分的工具,它可以帮助模型更好地识别各个部分,从而提高系统在执行特定任务时的准确性和效率。 “#” 也是一个理想的分隔符,因为它可以被视为一个单独的 token 。

delimiter = "####"

system_message = f"""
你将获得客户服务查询。
每个客户服务查询都将用{delimiter}字符分隔。
将每个查询分类到一个主要类别和一个次要类别中。
以 JSON 格式提供你的输出,包含以下键:primary 和 secondary。

主要类别:计费(Billing)、技术支持(Technical Support)、账户管理(Account Management)或一般咨询(General Inquiry)。

计费次要类别:
取消订阅或升级(Unsubscribe or upgrade)
添加付款方式(Add a payment method)
收费解释(Explanation for charge)
争议费用(Dispute a charge)

技术支持次要类别:
常规故障排除(General troubleshooting)
设备兼容性(Device compatibility)
软件更新(Software updates)

账户管理次要类别:
重置密码(Password reset)
更新个人信息(Update personal information)
关闭账户(Close account)
账户安全(Account security)

一般咨询次要类别:
产品信息(Product information)
定价(Pricing)
反馈(Feedback)
与人工对话(Speak to a human)

"""

user_message = f"""\ 
我希望你删除我的个人资料和所有用户数据。"""


messages =  [  
{'role':'system', 
 'content': system_message},    
{'role':'user', 
 'content': f"{delimiter}{user_message}{delimiter}"},  
]

输出结果为:

{
  "primary": "账户管理",
  "secondary": "关闭账户"
}

更多推荐