背景:
调用 GPT 的 API 接口,想让 GPT 能够从自然语言的输入里分析抽取出指定的字段,然后以 JSON 格式返回结果。这部分做的没有问题。
问题点:
想在返回 JSON 结果之前加一个确认环节,就是让 GPT 把它抽取的信息再以自然语言或者表格的形式列出来,让用户确认。如果用户确认没有问题再返回 JSON ,否则就修改后再让用户确认。这一步不管怎么调 prompt 感觉 GPT 的效果总是差一点,不知道有没有大佬有相关的经验解法?
1
whyiyhw 2023-06-07 10:52:38 +08:00
你要不问问 gpt 你的问题?
|
2
turan12 2023-06-07 10:54:10 +08:00
让 gpt 归纳 json 的内容
|
3
Alias4ck 2023-06-07 11:16:13 +08:00
|
4
MyComputer 2023-06-07 11:38:36 +08:00
@Alias4ck 我最近也在看,我建议他,分步骤 setp1 setp2 ,官方文档有写。
|
5
JG 2023-06-07 13:10:03 +08:00
用两个对话 prompt 来协作,第一个 prompt 用于生成 json ,第二个 prompt 用于基于 Json 生成自然语言让用户确认
|
6
aijam 2023-06-07 15:39:56 +08:00
通常给他几个例子,他就老实了
|
7
maolon 2023-06-07 15:51:51 +08:00 via Android
其实硬要一个 prompt 也可以 就是{summary: your extract info, json: your extract info fields json}这种形式然后返回前端确认,错误的情况下把修改结果 post 上来重新生成,正确的情况下就直接输出结果了
|
8
maolon 2023-06-07 15:57:06 +08:00 via Android
@maolon 哦 对了记得把你的 temperature 调到 0 以及用 output exactly 这样的关键词限制他的输出
|
9
makefei 2023-06-07 16:02:34 +08:00 2
公司摸鱼,练手写了一个,为了占用更少的 token 感觉可以精简下,OP 可以根据自己需要调整。
效果如链接: https://chat.openai.com/share/dea420b1-6591-4a7e-be28-033f8e3c4656 使用 Prompt 前建议: 1.让 GPT 忘记之前的指令 2.把 GPT 的 Temperature 设置成 0 以下是 Prompt —— SYSTEM:你的角色是一个自动化机器人,你会进行 2 步操作,先完成第 1 步后,再进行第 2 步。 ##第 1 步 提取文字信息***文字信息***,文字信息会用***进行区分。从文字信息中提取用户的姓名,性别,职业和手机号,如果无法提取对应的信息则留空处理。 ##第 2 步. 将第 1 步提取的文字信息用表格的形式发给用户,表格有 4 行,分别是 姓名、年龄、职业、手机 询问用户是否满足要求: 如果不满足要求,则按照用户的要求对表格内容进行修改,修改完成后询问用户是否满足要求; 如果用户询问其他无关信息,告知用户你是自动化机器人,无法处理其他问题,并继续询问用户如何修改,直至满足要求; 如果满足要求:then your response must be a JSON object and follow this exact format: { "姓名": “文字信息中的姓名”, "年龄": “文字信息中的年龄”, "职业": “文字信息中的职业”, “手机”: “文字信息中的手机号” } 下面我会给你一个例子: *自动化机器人: 请提供文字信息 *USER: ****我叫李明,今年 35 岁,是一名优秀的医生,今天来参加相亲节目很激动,我的手机号是 18612311711 ,欢迎女嘉宾与我联系**** *自动化机器人: 结果如下,请问是否需要修改 姓名 李明 年龄 35 职业 医生 手机 18612311711 *USER:不需要 *自动化机器人: { "姓名": "李明”, "年龄": "35", "职业": "医生", “手机”: “18612311711" } 如果你听懂了我的上述指令,请回复:“请提供文字信息:” —— |
10
superbai OP @whyiyhw #1 问了,GPT 说他擅长文本类任务的处理,不擅长这种多轮对话式的任务,让我结合程序逻辑自己处理😂
|
13
superbai OP @MyComputer #4 分步骤,举例子之类的方式都用过了,但是效果都不是很好。也可能是我的 prompt 哪里出了问题 GPT 没理解
|
14
superbai OP @JG #5 对,我现在能想到的方法也是类似这样分离开来控制。我是把 GPT 生成的 JSON 中的 key 对应的中文名预先在程序里定义好,然后编写代码来输出确认信息
|
18
turan12 2023-06-07 23:48:58 +08:00 via iPhone
@superbai 我的意思是反过来,先生成 json ,再通过归纳 json 让用户确认,如果没问题就直接返回 json ,如果有问题就再重新生成 json 重新归纳确认。这样应该会更精确?
|
19
Deplay 2023-06-08 11:24:09 +08:00
@makefei 你的这个在“如果用户询问其他无关信息,告知用户你是自动化机器人,无法处理其他问题,并继续询问用户如何修改,直至满足要求;”似乎需要进一步强调
https://chat.openai.com/share/c2a18f63-c606-4680-8cfc-a3b028bee7d6 |