请教一个关于 GPT prompt 的问题

2023-06-07 10:00:54 +08:00
 superbai

背景:

调用 GPT 的 API 接口,想让 GPT 能够从自然语言的输入里分析抽取出指定的字段,然后以 JSON 格式返回结果。这部分做的没有问题。

问题点:

想在返回 JSON 结果之前加一个确认环节,就是让 GPT 把它抽取的信息再以自然语言或者表格的形式列出来,让用户确认。如果用户确认没有问题再返回 JSON ,否则就修改后再让用户确认。这一步不管怎么调 prompt 感觉 GPT 的效果总是差一点,不知道有没有大佬有相关的经验解法?

2708 次点击
所在节点    程序员
21 条回复
whyiyhw
2023-06-07 10:52:38 +08:00
你要不问问 gpt 你的问题?
turan12
2023-06-07 10:54:10 +08:00
让 gpt 归纳 json 的内容
Alias4ck
2023-06-07 11:16:13 +08:00
MyComputer
2023-06-07 11:38:36 +08:00
@Alias4ck 我最近也在看,我建议他,分步骤 setp1 setp2 ,官方文档有写。
JG
2023-06-07 13:10:03 +08:00
用两个对话 prompt 来协作,第一个 prompt 用于生成 json ,第二个 prompt 用于基于 Json 生成自然语言让用户确认
aijam
2023-06-07 15:39:56 +08:00
通常给他几个例子,他就老实了
maolon
2023-06-07 15:51:51 +08:00
其实硬要一个 prompt 也可以 就是{summary: your extract info, json: your extract info fields json}这种形式然后返回前端确认,错误的情况下把修改结果 post 上来重新生成,正确的情况下就直接输出结果了
maolon
2023-06-07 15:57:06 +08:00
@maolon 哦 对了记得把你的 temperature 调到 0 以及用 output exactly 这样的关键词限制他的输出
makefei
2023-06-07 16:02:34 +08:00
公司摸鱼,练手写了一个,为了占用更少的 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"
}



如果你听懂了我的上述指令,请回复:“请提供文字信息:”

——
superbai
2023-06-07 19:05:33 +08:00
@whyiyhw #1 问了,GPT 说他擅长文本类任务的处理,不擅长这种多轮对话式的任务,让我结合程序逻辑自己处理😂
superbai
2023-06-07 19:06:29 +08:00
@turan12 #2 归纳没问题的,现在就是想让他加一个确认操作
superbai
2023-06-07 19:07:10 +08:00
@Alias4ck #3 感谢,我看看。之前看过吴恩达出的那个 prompt engineering 的视频教程
superbai
2023-06-07 19:07:46 +08:00
@MyComputer #4 分步骤,举例子之类的方式都用过了,但是效果都不是很好。也可能是我的 prompt 哪里出了问题 GPT 没理解
superbai
2023-06-07 19:09:03 +08:00
@JG #5 对,我现在能想到的方法也是类似这样分离开来控制。我是把 GPT 生成的 JSON 中的 key 对应的中文名预先在程序里定义好,然后编写代码来输出确认信息
superbai
2023-06-07 19:09:17 +08:00
@aijam #6 😂老实了哈哈哈哈
superbai
2023-06-07 19:10:15 +08:00
@maolon #8 感谢,我再调试调试
superbai
2023-06-07 19:11:08 +08:00
@makefei #9 感谢!!我试试
turan12
2023-06-07 23:48:58 +08:00
@superbai 我的意思是反过来,先生成 json ,再通过归纳 json 让用户确认,如果没问题就直接返回 json ,如果有问题就再重新生成 json 重新归纳确认。这样应该会更精确?
Deplay
2023-06-08 11:24:09 +08:00
@makefei 你的这个在“如果用户询问其他无关信息,告知用户你是自动化机器人,无法处理其他问题,并继续询问用户如何修改,直至满足要求;”似乎需要进一步强调
https://chat.openai.com/share/c2a18f63-c606-4680-8cfc-a3b028bee7d6
Deplay
2023-06-08 11:34:00 +08:00
@turan12 不好意思,我没有看到“直至满足要求”这一限制条件
但是如果在中途使用“你是一个助手,尽可能回答问题”这种 prompt ,可以跳出限制,不知道这种有没有好的办法解决?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/946513

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX