首页 > 其他分享 >搭建基于 ChatGPT 的问答系统第三章-评估输入分类

搭建基于 ChatGPT 的问答系统第三章-评估输入分类

时间:2024-07-24 11:57:16浏览次数:8  
标签:第三章 messages system delimiter user ChatGPT 问答 message secondary

需要学习提示词工程的同学请看面向开发者的提示词工程

这是搭建ChatGP问答系统第二章,第一章内容请查看
搭建基于 ChatGPT 的问答系统第一章-综述
搭建基于 ChatGPT 的问答系统第二章-提问范式与Token

第三章 评估输入——分类

在本章中,我们将重点探讨评估输入任务的重要性,这关乎到整个系统的质量和安全性。

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

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_messages

response = 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": "产品信息"
}

这里返回了另一个分类结果,并且看起来似乎是正确的。因此,根据客户咨询的分类,我们现在可以提供一套更具体的指令来处理后续步骤。在这种情况下,我们可能会添加关于平板电脑的额外信息,而在其他情况下,我们可能希望提供关闭账户的链接或类似的内容。这里返回了另一个分类结果,并且看起来应该是正确的。

在下一章中,我们将探讨更多关于评估输入的方法,特别是如何确保用户以负责任的方式使用系统。

英文版

system_message = f"""
You will be provided with customer service queries. \
The customer service query will be delimited with \
{delimiter} characters.
Classify each query into a primary category \
and a secondary category. 
Provide your output in json format with the \
keys: primary and secondary.

Primary categories: Billing, Technical Support, \
Account Management, or General Inquiry.

Billing secondary categories:
Unsubscribe or upgrade
Add a payment method
Explanation for charge
Dispute a charge

Technical Support secondary categories:
General troubleshooting
Device compatibility
Software updates

Account Management secondary categories:
Password reset
Update personal information
Close account
Account security

General Inquiry secondary categories:
Product information
Pricing
Feedback
Speak to a human

"""
user_message = f"""\ 
I want you to delete my profile and all of my user data"""
messages =  [  
{'role':'system', 
 'content': system_message},    
{'role':'user', 
 'content': f"{delimiter}{user_message}{delimiter}"},  
]
response = get_completion_from_messages(messages)
print(response)
{
  "primary": "Account Management",
  "secondary": "Close account"
}
user_message = f"""\
Tell me more about your flat screen tvs"""
messages =  [  
{'role':'system', 
 'content': system_message},    
{'role':'user', 
 'content': f"{delimiter}{user_message}{delimiter}"},  
] 
response = get_completion_from_messages(messages)
print(response)
{
  "primary": "General Inquiry",
  "secondary": "Product information"
}

标签:第三章,messages,system,delimiter,user,ChatGPT,问答,message,secondary
From: https://blog.csdn.net/weixin_42553583/article/details/140659360

相关文章

  • 评估 ChatGPT 的数据分析改进:交互式表格和图表
           欢迎来到雲闪世界.2024年5月,随着GPT-4o的激动人心的发布,OpenAI宣布对ChatGPT中的数据分析进行改进,包括提供交互式表格和图表,以及与GoogleDrive和MicrosoftOneDrive的集成。在本文中,我将评估这些新功能并展望使用ChatGPT进行数据分析的未......
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-第三章-垃圾收集器与内存分配策略
    在java内存运行时区域中的各个部分中,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑如何回收的问题,当方法结束或者线程结束时,内存自然就跟随着回收了。但是Java堆和方法区这两个区域具有......
  • 跟着ChatGPT学习设计模式 - 工厂模式
    1.前言在工作过程中,越发觉得设计模式的重要性。经常会有人说工作5年的人,大学生随便培训1-2月也能做同样的工作,没错,大学生的确可以做。但其写的代码,可维护性、可扩展性、添加新功能时方便还是简单。甚至是软实力的表现,如何沟通、如何推进项目进展、如何做项目排期,其实都是应届生......
  • llm大语言模型用于电影问答
    项目:https://github.com/jiangnanboy/movie_llm_agent本项目利用chatglm6b实现一个中文版的简单电影问答功能,目的是探索llmagent与图数据库neo4j进行交互的能力,主要根据用户的意图与neo4j进行交互。Toolsagent使用几个tools与neo4j进行交互:Person_Tool:根据人物(演员)......
  • 初识Flutter问答&学习步骤
    大家好,我是有用就点赞学习Flutter=Flutter(UI库)+Dart(语言)编写Flutter应用的语言是?Dart语言Flutter里的组件叫?Widget组件Flutter是哪家公司推出的?Google什么是自渲染?(跨端一致性)1)一次编写,四处运行就是跨端的真谛。2)目前的场景:Android、IOS、PC、......
  • 文心一言 VS 讯飞星火 VS chatgpt (307)-- 算法导论22.2 5题
    五、证明:在广度优先搜索算法里,赋给结点u的u.d值与结点在邻接链表里出现的次序无关。使用图22-3作为例子,证明:BFS所计算出的广度优先树可以因邻接链表中的次序不同而不同。如果要写代码,请用go语言。文心一言:首先,我们来证明在广度优先搜索(BFS)算法中,赋给结点$u$的......
  • 利用ChatGPT完成文献综述并高效撰写,全流程实操指南,附50+顶级提示词指令
    大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作指南高级学术科研GPT专业版已全面升级,国际顶级应用满足各种学......
  • ChatGPT如何开启使用gpt-4o mini模型?
    OpenAI发布了新的LLM大模型:gpt-4omini。gpt-3.5现在已经取消掉了,用gpt-4omini代替且gpt-4omini是免费的。根据OpenAI官方介绍,GPT-4omini在学术测试中表现优异,超越了GPT-3.5Turbo等小型模型。它在文本智能、多模态推理和语言支持方面水平与GPT-4o相当。在函数调用方面表现......
  • 2024最新AI创作系统,ChatGPT商业运营系统,AI绘画系统源码,AI视频生成系统,AI智能体、文档
    一、人工智能人工智能技术正在迅速发展,AI语言模型、AI绘画、AI视频在多个领域都有广泛的应用。它们不仅在科技创新方面表现出色,还在艺术创作、内容生产和商业应用中展现出巨大的潜力。AI语言模型可以用于自动化内容生成、智能客服、文本翻译等方面,大大提升了工作效率和用户体......
  • 最新SparkAi创作系统,ChatGPT系统源码,AI绘画/AI视频生成/AI智能体一站式AIGC系统
    一、人工智能人工智能技术正在迅速发展,AI语言模型、AI绘画、AI视频在多个领域都有广泛的应用。它们不仅在科技创新方面表现出色,还在艺术创作、内容生产和商业应用中展现出巨大的潜力。AI语言模型可以用于自动化内容生成、智能客服、文本翻译等方面,大大提升了工作效率和用户体......