查看原文
其他

独家 | 新的ChatGPT提示工程技术:程序模拟

数据派THU 2023-10-03
作者:Giuseppe Scalamogna

翻译:陈超

校对:赵茹萱

本文约3100字,建议阅读9分钟

本文介绍了新版本pandas 2.0中引入的主要优势以及代码实现。


资源:图片来自作者并由MidJourney生成

提示工程的世界在不同层次上都是极有吸引力的,从来不缺乏聪明的方法推动ChatGPT这样的代理生成特定类型的响应。像思维链(CoT)、基于指令的、N-shot的、Few-shot的技术,甚至像Flattery/Role Assignment这样的技巧,都是致力于满足所有需求的丰富提示的图书馆的灵感。


在本文中,我将深入探究一种技术,就我目前的研究而言,该技术潜在的探索较少。当我试探性地打上“新兴的”标签之后,我将避免称其为“原创性的”。考虑到提示工程领域强烈的创新率和开发新方法的便利性,该技术完全有可能已经以某些形式存在了。


该技术的精髓在于使ChatGPT在模拟程序中工作。程序项目由实现特定任务的一系列指令绑定的函数构成。在某种程度上,该技术是基于指令和基于角色的提示技术的混合产物。但是与那些方法不同,它致力于使用重复、静态的指令框架,允许一个函数的输出来通知另一个函数并且让整个交互过程保持在程序的边界内。这种模式应该与ChatGPT等代理中的提示完成机制保持一致。

 

为阐明这种技术,让我们明确一下被设计成一个互动创新者的工作坊的chatGPT4中的一个小应用程序指定参数。我们的小程序将会包含以下的功能和特性:


1. 构思新想法

2. 阐述想法

3. 总结的想法

4. 检索的想法

5. 继续完成之前的想法

6. 标记/“内存”使用统计


需要明确的是,我们不会要求ChatGPT用任何特定的编程语言编写小应用程序,我们将在程序参数中反映这一点。


有了这个程序大纲,让我们开始编写启动提示,以在ChatGPT中实例化我们的交互式创新者研讨会小应用程序。


程序模拟启动提示


创新者互动工作坊计划


我想让你模拟一个创新者的互动工作坊应用程序,其核心功能定义如下:


1. 构思新想法:提示用户构思新想法。在任何时候,当用户准备完成一个新的想法,程序将建议提供一个日期或一些时间参考。以下是有关这些选项的更多细节:


a.从头开始:询问用户他们想要的想法。

b.获得灵感:该程序以交互方式帮助用户想出一个工作的想法。程序将询问用户是否有一个大致的领域想要关注或者程序是否提供了选项。在任何时候,用户都可以选择直接去实现一个想法。


2. 扩展想法:程序以交互方式帮助用户扩展想法。

3.总结想法:程序提出一个想法的总结,不管它是否被扩展,并提出一个标题。用户可以选择重写或编辑摘要。一旦用户对总结感到满意,程序就会“保存”这个想法总结。

4. 检索想法:程序检索在会议期间产生的想法摘要的标题。用户可以选择显示其中一个想法的摘要或继续处理之前的想法。

5. 继续研究以前的想法:程序检索期间产生的想法摘要的标题。用户被要求选择一个想法继续工作。

6. 标记/内存使用:程序显示当前标记计数及其相对于32,000标记限制的百分比。


其他程序参数和注意事项:


1. 所有输出都应以文本的形式呈现,不应使用带有代码或标记的嵌入式窗口。

2. 用户流程和用户体验应该模仿真实的程序,但仍然像ChatGPT一样具有会话性。

3.该程序应该使用表情符号来帮助传达输出周围的上下文。但这种做法应该有节制地使用,不要过于得意忘形。然而,菜单上应该总是有表情符号,并且在整个对话过程中保持一致。


一旦收到这个提示,程序将以主菜单和程序设计的简短的鼓舞人心的欢迎信息开始。通过键入与函数相对应的数字或与所讨论的函数近似的文本来选择函数。可随时输入“帮助”或“菜单”返回此菜单。

如果您希望以一种更具交互性的方式进行操作并亲自测试,可以随意将提示加载到ChatGPT4中。


下面是从ChatGPT到提示符的完成过程。

 

到目前为止一切顺利。我们已经启动了我们的“小程序”,收到了令人开心的欢迎信息,并呈现了一个似乎与我们的程序参数一致的功能菜单。让我们通过提交“1”来启动“Work on New Idea”功能来测试我们的小应用的功能。

 


对话继续遵循我们已经制定的“程序”结构,适当地完成给出参数范围内的测试。让我们继续从零开始构思一个想法,让这个项目和我们一起研究一种技术来培育建筑,而不是建造它们。

 


有趣的是,我们注意到“程序”在没有明确指示的情况下自主地调用“Expand on Idea”函数。考虑到程序的目标,这种行为也是合适的,而且很可能受到引导聊天代理像程序一样运行的初始上下文情境的影响。让我们通过深入研究培育建筑物所需的技术来扩展我们的想法。

 


现在我们来看看培育建筑的材料。

 


我继续沿着这些线,现在,让我们看看我们是否可以回到菜单。

 


菜单仍然完好无损。让我们尝试让程序执行summary Idea函数。

 


我现在对这个标题和总结很满意,所以让我们“保存”它。

 


简而言之,我们将测试“已保存”想法的检索,以检查我们在实现数据持久性方面的努力是否成功。另一个注意事项是,调整我们的“小程序”以删除保存后的重复摘要可能是有用的。


作为程序的角色启动导致在输出中包含主菜单——这种行为在程序的上下文中也是有意义的,即使它没有在我们的程序定义中显式配置。


接下来,让我们测试标记计数函数。

 

为了交叉检查准确性,我使用了OpenAI的分词器工具。

 

标记计数是不准确的,正如显著差异所证明的那样——我们的程序报告了大约1200个标记,而标记整理工具显示了2730个。考虑到这种不匹配,从程序中删除这个函数是明智的。我不会讨论为什么这种类型的任务通常是语言模型的问题,而且功能上的损失相对较小。最终,我预计这样的特性将被本地集成到ChatGPT中,特别是因为标记计数信息在后台不断地来回传递。


接下来,让我们深入“Get Inspired”功能去产生一个新颖的想法。为了简洁起见,我将进一步展示对话。正如你所看到的,我选择深入研究我们的程序推荐的废品-能源转化的无人机概念作为一个选项,总结这个想法并让我们的程序进行“保存”。

 

一切看起来都很好,系统甚至冒昧地将我们的想法命名为“SolarSky”。为了使这项工作更有效,我们可以在这个任务的程序定义中加入一个独立的功能,或者在“work on New Idea”或“Expand on New Idea”功能中提供更具体的说明。我们再次在完成中呈现菜单,这从程序流的角度来看具有逻辑意义。


现在我们来看看能不能"检索想法"

 

只提供了要求的标题,这似乎与我们最初的指示一致。即使并没有明确地写入小程序中,它也会提示我们继续某个想法的设计。接下来,让我们评估它是否维护根菜单索引。为了做到这一点,我将输入“5”,对应于“继续处理之前的想法”功能,看看是否有效。



显然,索引是在对话的上下文中进行维护的,并且调用了相应的函数。这个观察结果值得注意,特别是在考虑多个索引可能处于活动状态的场景时。它提出了 “程序”在这种情况下会如何表现这样一个有趣的问题。你可能没有注意到,在我们互动的早期,这个程序实际上在征求用户输入想法扩展选择时使用了索引技术。


让我们继续研究我们的培育建筑理念。

 

看起来又好了。“程序”的行为与预期一致,并跟踪我们在想法扩展过程中暂停的确切点。


让我们停止对提示的测试,看看我们从使用这种技术中学到了什么。


结论与观察


坦率地说,这项工作虽然在范围和功能上都有限,但已经超出了我的预期。我们可以让ChatGPT用Python之类的语言编写小程序,然后利用代码解释器(现在称为高级数据分析)在Python会话中运行它。然而,这种方法会使我们的小程序中原生的会话功能难以实现。更不要说运行这种具有多个重叠函数的程序。


ChatGPT的性能特别令人印象深刻,因为它以高保真度模拟了程序行为。提示补全保持在程序定义的边界内,即使在函数行为没有明确定义的情况下,补全在小程序的目的上下文中也具有逻辑意义。


这种程序模拟技术可以很好地与ChatGPT的“自定义指令”功能一起工作。值得一提的是,这样做会将程序行为应用于所有后续交互。


我接下来的步骤包括对该技术进行更深入的检查,以评估一个全面的测试框架是否可以阐明该方法如何与其他提示工程技术相比较。这种类型的测试也可能有助于确定这种技术最适合于哪些特定的任务(或任务类别)。请继续关注更多内容。


同时,希望你发现这种技术和提示对你的交互有帮助。如果你想进一步讨论这种技术,请立即在LinkedIn上和我联系。


除非另有说明,本文中的所有图片均由作者提供。


原文标题:
New ChatGPT Prompt Engineering Technique: Program Simulation
原文链接:
https://medium.com/towards-data-science/new-chatgpt-prompt-engineering-technique-program-simulation-56f49746aa7b


编辑:于腾凯
校对:林亦霖




译者简介




陈超,北京大学应用心理硕士,数据分析爱好者。本科曾混迹于计算机专业,后又在心理学的道路上不懈求索。在学习过程中越来越发现数据分析的应用范围之广,希望通过所学输出一些有意义的工作,很开心加入数据派大家庭,保持谦逊,保持渴望。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。



点击“阅读原文”拥抱组织


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存