Prompt对于大部分人而言是一个比较陌生的词汇,随着大模型起来,越来越多人熟悉。 我想,觉大部分人在上学阶段都扮演过Human Intelligence,被考卷Prompt过,最典型的就是写作文,下面是23年北京高考作文题目: 请以“续航”为题目,写一篇议论文。 要求:论点明确,论据充实,论证合理;语言流畅,书写清晰。 大家品一下,是不是就是你们平时和chatGPT或者文心一言等大模型对话的调调。 好的prompt能让大模型更好的发挥起潜能,另外,通过对prompt的学习和优化,也有助于对大模型的机制了解和认识加深。 prompt的教学文章和视频很多,也有专门的prompt生成和优化工具,如下是基于openAI的公开文档以及结合自己平时的使用体验总结的,希望对大家有帮助。 当然,终归实践出真知,还是得多用,多思考,多尝试。 1、Prompt指令清晰且明确大模型就像一个知识非常丰富的专家,他不认识你,不预先知道你的想法,为了得到更好的回答,我们首先需要知道自己想要什么,然后主动表达清楚自己的意图和想法。那怎么提高自己指令的清晰程度呢,通常有如下几个手段,不是每个prompt都需要遵循下面的技巧,根据合适的场景选择即可:
2、给大模型提供参考信息这个应用在目前搜索场景特别普遍,比如Google的SGE,bing或者百度的搜索智能回答,当用户询问一个query,以前是一条一条的信息/站点根据排序呈现给用户,AI搜索下,大模型会基于检索到的内容,在首位生成一段总结回答,在回答中会也会注明引用来源。 这里的智能搜索回答其实就是指定参考信息或者引用来源生成总结答案,这样大模型就不会天马行空 图1:谷歌SGE结果;图2:百度智能搜索结果 3、化繁为简,将复杂任务拆解为简单的子任务
这有点类似,每次上课前,老师花点时间和大家回忆下上堂课讲了什么,唤醒大家的记忆,为本节课的新内容做好铺垫承接
对于需要大量独立指令集来处理不同情况的任务,如果直接使用单个查询来执行整个任务,错误率和成本均更高,更好的方法是,先对查询类型进行分类,并使用该分类来确定需要哪些指令,这种方法的每个查询仅包含执行任务下一阶段所需的指令,更高效且算力消耗更低。 在OpenAI的示例教程里面有个比较经典的case,即关于微调chatGPT成为一个“客服助手”来解答用户的疑问。 一个用户问一个问题,客服会基于问题给出答案,但因为客户的问题千奇百怪,怎么能针对不同问题高效地给出恰到好处的回复? 首先,先对用户问题进行分类,一级分类有哪些,哪些情形或者包含哪些关键词的询问分别归属哪些一级行业。 然后,针对不同一级类别和情形,分别给出什么样的引导和回复。整个过程其实就把一个复杂的问题,通过鱼骨图的逻辑进行拆解归类,让整个过程更有逻辑和层次。 4、给模型时间“思考”
学生的解决方案:设 x 为装置的尺寸(以平方英尺为单位),总成本:100x + 250x + 100,000 + 100x = 450x + 100,000 大模型的判断:该学生的解决方案是正确的。 但这位同学的解法其实并不正确。因此,我们可以修改prompt,让模型"首先生成自己的解决方案来让模型成功注意到这一点,然后让模型把自己的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确" 大模型的判断:设 x 为安装尺寸(以平方英尺为单位)。土地成本100x ,太阳能电池板成本250x , 维护成本100,000 + 10x ,总成本100x + 250x + 100,000 + 10x = 360x + 100,000,得出学生的解决方案不正确,因为他们在维护成本计算中犯了一个错误,使用了 100x 而不是 10x。
5、使用外部工具6、系统地测试prompt优化的效果评估程序(或“evals”)对于优化系统设计非常有用,好的评估需要满足:
评估执行可以由计算机、人类或两者混合来完成,计算机可以使用客观标准(例如,具有单个正确答案的问题)以及一些主观或模糊标准自动进行评估,其中模型输出由其他模型查询进行评估。例如OpenAI Evals,他是一个开源软件框架,提供用于创建自动化评估的工具。 具体评估执行上,可以参考黄金标准答案来评估模型输出,即假设已知问题的正确答案应参考一组特定的已知事实,然后我们可以使用模型查询来计算答案中包含多少必需的事实。具体示例,大家可以看OpenAI的网站,链接如下参考文档。 https://platform./docs/guides/prompt-engineering/strategy-use-external-tools |
|