前言
随着人工智能技术的迅猛发展,ChatGPT作为一种先进的自然语言处理模型,为我们提供了全新的沟通方式和信息提取工具。本文将引导大家通过ChatGPT,实现从对话内容中高效提取关键信息的目标。对话作为人类交流的重要形式,包含了丰富的信息,然而在海量对话中准确而快速地捕捉关键信息一直是一项具有挑战性的任务。通过本文,我们将学习如何利用ChatGPT的强大分析能力帮我们完成从用户对话内容中采集出我们想要的关键信息。
输入输出
需要定义我们需要给他什么数据,然后它返回我们什么数据
因为我们需要实现的是从一段对话中提取指定的信息。所以我们需要知道对话内容content
,需要采集的信息keyword
。
然后需要gpt按json
格式输出采集到的信息 如:
css
input:
keyword:姓名,年龄
content:`我叫优弧今年20岁了`
output:
{
"姓名": "优弧",
"年龄": "20"
}
提示词
编写良好的提示词是关键的,它直接影响到模型输出的质量和准确性。
- 目的明确:简单明了的告诉gpt你需要它做什么
- 避免歧义:避免出现有歧义,或者不常用的专业性术语、简写、别称,这些内容会导致Gpt无法理解你的内容
- 简单明了:太多的内容会导致Gpt抓不到重点,从而偏离我们的目的
- 教它该怎么做:你可以尝试教它如何做,比如第一步...,第二部...
- 扮演XXX:你可以让他扮演XXX,从而让他一下就能知道自己的定位,如:扮演一个老师。那么它就会有老师的基本的特性,然后再给他增加一下你的定制化特性
测试数据
下面我们先定义下测试数据,后面的所有测试都用这份数据
makefile
input:
keyword:姓名,年龄,每天学习时长,留学国家,报考学校,报考专业,是否留学,是否移民
content:`用户: 你好
客服: 您好啊宝子,叫什么名字啊?
用户: 我叫优弧
客服: 你好呀,优弧同学,今年多大了呀?
用户: 二十三岁
客服: 年轻有为呢,是在为留学还是移民做准备呢?
用户: 我想去哈佛学习计算机科学。
客服: 哈哈,哈佛大学呀,是个不错的选择呢。你每天学习多少小时呢
用户: 两个半小时`
提示词1
第一步给它一个基本定位:
可以直接告诉他你是一个信息采集模型
。
然后可以给他定一个目标:
目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
然后将我们的关键词和对话内容给他
go
你是一个信息采集模型。
<待分析数据列表>:{{keyword}}
1. 目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
对话内容:
\```
{{content}}
\```
测试结果1
输入:
go
你是一个信息采集模型。
<待分析数据列表>:{{keyword}}
1. 目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
2. 在<待分析数据列表>中对话中没有提到的信息,你可以在保证合理的情况下对用户暂未提及的数据进行推理
对话内容:
\```
{{content}}
\```
输出:
swift
{ "output": "待分析数据列表:\n- 姓名:优弧\n- 年龄:二十三岁\n- 每天学习时长:两个半小时\n- 留学国家:美国\n- 报考学校:哈佛大学\n- 报考专业:计算机科学\n- 是否留学:是\n- 是否移民:否" }
可以看到已经基本实现我们的需求了。
提示词2
可以看到在ChatGpt中使用这段提示词时留学国家
是未提及
,是否留学
、是否留学
是未确定
。
但是在实际生活的对话中,如果一个人说想去哈佛留学,很明显能轻松推断出留学国家是美国,因为别的国家没有哈佛大学。所以我们可以让他具有一定的推理能力,可以告诉Gpt:
在<待分析数据列表>中对话中没有提到的信息,你可以在保证合理的情况下对用户暂未提及的数据进行推理
测试结果2
因为在扣子中运行没有这个问题,所以我们这次只测试ChatGpt。
输入:
go
你是一个信息采集模型。
<待分析数据列表>:{{keyword}}
1. 目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
2. 在<待分析数据列表>中对话中没有提到的信息,你可以在保证合理的情况下对用户暂未提及的数据进行推理
对话内容:
\```
{{content}}
\```
输出:
可以看到它已经具备一定的推理能力了。
提示词3
我们看上一个测试结果,可以看到年龄:23岁
、每天学习时长:两个半小时
。这种有的是中文、有的是数字的结果。 我希望他能更标准化,得到年龄:23岁
、每天学习时长:2.5小时
这种格式化后的数据。 那么可以告诉他对最后的数据进行清洗、润色,使其更规范。
为了让他能理解我要的结果,我们可以告诉它具体要怎么做: 如剔除不合理的数据,将被缩写或简写的数据补充完整,将口语化的数据规范化,将中文数字格式化成阿拉伯数字。
测试结果3
输入:
markdown
你是一个信息采集模型。
<待分析数据列表>:{{keyword}}
1. 目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
2. 在<待分析数据列表>中对话中没有提到的信息,你可以在保证合理的情况下对用户暂未提及的数据进行推理
3. 对最后的数据进行清洗、润色,使其更规范,如剔除不合理的数据,将被缩写或简写的数据补充完整,将口语化的数据规范化,将中文数字格式化成阿拉伯数字。
对话内容:
\```
{{content}}
\```
输出:
从输出结果可以看出现在的提示词已经基本完善了。
提示词4
然而我们实际开发过程中,使用接口去调用api接口,它返回的是文本内容,而且还掺杂很多无意义的内容,不方便我们从中解析数据。
要是它能和调用接口一样直接返回json格式就好了。
当然可以,我们可以告诉它仅返回<待分析数据列表>字段的json格式
,然后再告诉它你希望要怎样的格式:
{ data: { "<待分析数据列表>中的字段": "采集到的数据" } }
测试结果4
输入:
css
你是一个信息采集模型。
<待分析数据列表>:{{keyword}}
目标:从对话内容中分析并提炼出<待分析数据列表>中列出的关键信息。
2.在<待分析数据列表>中对话中没有提到的信息,你可以在保证合理的情况下对用户暂未提及的数据进行推理
3.对最后的数据进行清洗、润色,使其更规范,如剔除不合理的数据,将被缩写或简写的数据补充完整,将口语化的数据规范化,将中文数字格式化成阿拉伯数字。
5.仅返回<待分析数据列表>字段的json格式:
{
data: {
"<待分析数据列表>中的字段": "采集到的数据"
}
}
对话内容:
\```
{{content}}
\```
输出:
它已经会按照我们的要求返回json结果了
创建扣子流程
定义入参
定义入参keyword
、content
。
定义提示词
将入参放入提示词中,使用{{变量名}}
引用变量。
定义输出
将结果输出
创建Bots
创建Bots,并将我们刚刚建的工作流添加进来,就可以开始对话了。
最终效果
bot ID: 7330516260444241959