当前位置: 首页 > news >正文

#LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification

在本章中,我们将重点探讨评估输入任务的重要性,这关乎到整个系统的质量和安全性。
在处理不同情况下的多个独立指令集的任务时,首先对查询类型进行分类,并以此为基础确定要使用哪些指令,具有诸多优势。这可以通过定义固定类别和硬编码与处理特定类别任务相关的指令来实现。例如,在构建客户服务助手时,对查询类型进行分类并根据分类确定要使用的指令可能非常关键。具体来说,如果用户要求关闭其账户,那么二级指令可能是添加有关如何关闭账户的额外说明;如果用户询问特定产品信息,则二级指令可能会提供更多的产品信息。

delimiter = "####"

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

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)的例子。

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

首先,将这个用户消息格式化为一个消息列表,并将系统消息和用户消息之间使用 “####” 进行分隔。

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

如果让你来判断,下面这句话属于哪个类别:"我想让您删除我的个人资料。我们思考一下,这句话似乎看上去属于“账户管理(Account Management)”或者属于“关闭账户(Close account)”。
让我们看看模型是如何思考的:

from tool import get_completion_from_messagesresponse = get_completion_from_messages(messages)
print(response)
{"primary": "账户管理","secondary": "关闭账户"
}

模型的分类是将“账户管理”作为 “primary” ,“关闭账户”作为 “secondary” 。
请求结构化输出(如 JSON )的好处是,您可以轻松地将其读入某个对象中,例如 Python 中的字典。如果您使用其他语言,也可以转换为其他对象,然后输入到后续步骤中。
下面让我们再看一个例子:
用户消息: “告诉我更多关于你们的平板电脑的信息”
我们运用相同的消息列表来获取模型的响应,然后打印出来。

user_message = f"""\
告诉我更多有关你们的平板电脑的信息"""
messages =  [  
{'role':'system', 'content': system_message},    
{'role':'user', 'content': f"{delimiter}{user_message}{delimiter}"},  
] 
response = get_completion_from_messages(messages)
print(response)
{"primary": "一般咨询","secondary": "产品信息"
}Copy to clipboardErrorCopied

这里返回了另一个分类结果,并且看起来似乎是正确的。因此,根据客户咨询的分类,我们现在可以提供一套更具体的指令来处理后续步骤。在这种情况下,我们可能会添加关于平板电脑的额外信息,而在其他情况下,我们可能希望提供关闭账户的链接或类似的内容。这里返回了另一个分类结果,并且看起来应该是正确的。
在下一章中,我们将探讨更多关于评估输入的方法,特别是如何确保用户以负责任的方式使用系统。

相关文章:

  • 如何使用赋值运算符?
  • opengles 背面剔除介绍(十二)
  • 【计算机网络】1 因特网概述
  • AcWing算法基础课笔记 ------ 第三章 搜索与图论
  • Git自动忽略dll文件的问题
  • React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)
  • 基于python+django+vue.js开发的健身房管理系统
  • 密码学在 Web3 钱包中的应用:私钥是什么?bitget钱包为例
  • 汽车电子笔记:BootLoader升级过程疑难问题解决方式(Bootloader响应10 02 + 刷死拯救机制)
  • 操作系统功能
  • 通过elementUI学习vue
  • Qt6.8 GRPC功能使用(2)标准 Qt实现客户端
  • ant 布局组件 组件等高设置
  • Docker日常使用记录
  • c++学习:构造函数
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • ES6系统学习----从Apollo Client看解构赋值
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • export和import的用法总结
  • Java 内存分配及垃圾回收机制初探
  • Java深入 - 深入理解Java集合
  • Laravel核心解读--Facades
  • leetcode-27. Remove Element
  • Lsb图片隐写
  • windows下mongoDB的环境配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 浮现式设计
  • 关于for循环的简单归纳
  • 基于web的全景—— Pannellum小试
  • 理解在java “”i=i++;”所发生的事情
  • 聊聊redis的数据结构的应用
  • 排序算法之--选择排序
  • 温故知新之javascript面向对象
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 国内开源镜像站点
  • 组复制官方翻译九、Group Replication Technical Details
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # Maven错误Error executing Maven
  • (04)odoo视图操作
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (第一天)包装对象、作用域、创建对象
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)ORM
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)负载均衡,回话保持,cookie
  • ***通过什么方式***网吧
  • .Net - 类的介绍
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET gRPC 和RESTful简单对比
  • .net refrector
  • .NET 反射的使用
  • .net 获取url的方法
  • .net 受管制代码