草庐IT

如何写出有效的 Prompt,获得更好的 ChatGPT 回复

微酒肆 2023-11-29 原文

有朋友试用 ChatGPT 后,觉得他总是给不出自己期望的回复;这是因为 AI 依旧距离我们的生活很遥远,还是因为没有掌握到使用要领呢?

今天这篇文章会先带你了解「Prompt」是什么,并用简单的范例让你了解如何善用他、避开陷阱,以此获得更好的 ChatGPT 回复。

                                               

大纲

Prompt 是什么?

如果 Prompt 不完善会发生什么事?

好的 Prompt 有哪些元素

让 ChatGPT 担任某个领域的「专家」

一些额外的建议

总结:对工具理解越深,越能发挥他的实力

Prompt 是什么?

如果你需要别人帮忙做事,就需要给他具体的「指令」或「提示」;把角色换成 ChatGPT,Prompt 就是你问问题或提出请求的文字提示。

而决定 ChatGPT 回答品质的重要因素,就在于你提供的「Prompt」是否足够完善。

如果 Prompt 不完善会发生什么事?

如果你已经出社会,让我们回想一下,老板、客户在跟你沟通时,你是不是常常觉得要通灵?

很多人会抱怨老板、客户交代事情总是话说一半;但角色对换后,我们抛问题给 ChatGPT 时,是不是也常常问得很「模糊」?

这种模糊就会导致对话偏离轨道、缺乏重点,无论是现实中的人类,还是 ChatGPT 都无法给你合适的答案。

Ok,在了解「Prompt」的重要性后,接下来就来学习如何写出有品质的 Prompt 吧!

读者可以将「好的 Prompt」理解为「好的提问技巧」,这些知识学习后对现实的生活、工作也是很有帮助的!

好的 Prompt 有哪些元素

清晰:越「具体」越好,避免给出太过复杂或模棱两可的文字。

重点:要有明确「目的」,避免太过广泛或是开放式的问题。

相关性:在对话中,建议内容都是相同「主题」,多主题会分散讨论焦点。

下面是 ChatGPT 认为「好」的 Prompt 案例:                   

2022年冬季奥运会在哪里举行? —— 明确地提出了问题并且特别指出了「时间」。

请给我一些台北的知名美食 —— 明确地提出了请求并且特别指出了需要「当地」的资讯。

下面是 ChatGPT 认为「不好」的 Prompt 案例:

给我讲讲 —— 没有明确地表达问题或请求,不知道到底想要 ChatGPT 讲什么。

请给我美食资料 —— 因为没有指定地区或美食种类,所以无法提供具体的美食资料。

不管对象是 ChatGPT 还是真人,遵循这些原则,都能让对方更好地理解你的意图,使对话维持在正轨上,是一种高效率的对话方式。

让 ChatGPT 担任某个领域的「专家」

这是我觉得很实用的「技巧」,你可以告诉 ChatGPT 在接下来对话中要担任的「角色」,比如说:

你遇到了一些法律问题,告诉 ChatGPT 要充当一个「资深法律顾问」,根据你的「具体事项」给出相关法律条例。

连假要出去旅游,告诉 ChatGPT 要充当一个「旅行社服务人员」,根据你的「目的地、时间长度、人员组成、特殊偏好」给出建议。

下面就用一个具体案例给大家:「我希望你担任一个优秀的旅行社服务人员。我会输入“地点”的资讯,你只需要告诉我当地的“美食”、“景点”、“注意事项”。回答的字数不要超过 400 字,用“摘要”就好。我要询问的第一个地点是“宜兰”。」

不过大溪老街应该是在桃园! ?

我这边将刚刚抛出的问题做一下说明:

我希望你担任一个优秀的旅行社服务人员:我希望 ChatGPT 担任的角色。

我会输入“地点”的资讯:告诉 ChatGPT 我会输入的关键字。

你只需要告诉我当地的“美食”、“景点”、“注意事项”:限制 ChatGPT 回答的范围。

回答的字数不要超过 400 字,用“摘要”就好:用两句话强调回答的限制。

我要询问的第一个地点是“宜兰”:让 ChatGPT 执行的第一项任务。

结构越严谨,越能得到期待的资讯;不过大家实际使用时,也能透过后续的对话来修正结果。

如果你想将 ChatGPT 的专业度升华到另一个境界,可以参考 GitHub 上面大神们提供的 prompt。

笔者在「ChatGPT 的翻译有比 Google 翻译更优秀吗?、ChatGPT 的中文跟英文能力一样好吗?」的文章中,也有比较中文专家跟英文专家的差异,大家可以参考一下。

一些额外的建议

鼓励 ChatGPT 多给你一点建议:你可以在 ChatGPT 回应的基础上,再做更多延伸询问(ex:在知道台北有哪些知名美食后,你可能对卤肉饭更感兴趣,此时就能延伸询问:「请推荐几间在台北评分高的卤肉饭餐厅」)。

不要带有辱骂、轻蔑的口气:在得不到预期的答案时,你可以纠正他,让他回到轨道上;但如果用不良的态度就会导致沟通破裂。

多练习、多尝试:千万不要看完这篇文章就觉得自己会了,一定要自己去实践才会知道怎么样的 prompt 是更合适的(欢迎跟笔者分享你的心得)。

找志同道合的人一起研究:这是一个新诞生的工具,对大多数人来说是陌生的,如果有人可以一起讨论、给予回馈,那大家可以共同进步(可以加入 ChatGPT 的社群)。

这边特别提醒读者:

有些问题 ChatGPT 会给出错误的答案,就像是「请推荐几间在台北评分高的卤肉饭」这个问题,他推荐的三间卤肉饭分别是「老记卤肉饭、阜杭卤肉饭、高雄卤肉饭」。

如果你发现这三间都没听过不是你孤陋寡闻,而是笔者用 Google Map 搜寻,发现真的找不到 QQ

总结:对工具理解越深,越能发挥他的实力

好的 Prompt 能让 ChatGPT 有更好的回应,下面是笔者整理的基础结构(原则):

让 ChatGPT 了解自己要担任的「角色」:比如法律专家、职涯顾问、导游…

清晰、有重点的提出「问题」:避免提出模棱两可、开放式的问题,比如:「你对 xxx 策略有什么看法」可以调整为「xxx 策略主要有哪些好处」。

明确定义你期待的「结果」:你希望 ChatGPT 提供资讯、回答问题还是随意聊天。

相比于其他市场上的聊天机器人,相信用过的人会觉得他的回应更加「自然」,而且可以完成「连续」有逻辑的对话,即使是刁难的问题也能给出有一定「深度」的回复。

目前市场主流是用「英文」跟 ChatGPT 沟通,后续笔者也会尝试用「英文」跟「中文」询问一样的问题,以此比对 ChatGPT 的回应会有什么样的差异。

有关如何写出有效的 Prompt,获得更好的 ChatGPT 回复的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐