面向Java开发者的ChatGPT提示词工程(1)
各位Java开发者们,欢迎来到万猫学社!在这里,我将和大家分享ChatGPT提示词工程的系列文章,希望能够和大家一起学习和探讨提示词的最佳实践。
虽然互联网上已经有很多有关提示词的材料,比如那些“每个人都必须知道的30个提示”,但是这些材料大都集中在ChatGPT的用户界面上,主要用于完成特定的、经常是一次性的任务。然而,我认为大型语言模型(LLM)的真正价值在于作为Java开发者使用API调用大型语言模型来快速构建软件应用程序。
这个优势被低估了,大型语言模型的API能够让开发人员非常快速地构建应用程序,这是非常令人兴奋的。因此,在本系列文章中,我们将会分享一些可能性以及如何实现它们的最佳实践,希望能够帮助各位Java开发者更好地利用大型语言模型来提高开发效率。
大型语言模型的分类
在研究大型语言模型的过程中,发现了两种常见类型的模型,分别为基础大型语言模型(Base LLM)和指令调整大型语言模型(Instruction Tuned LLM)。
基础大型语言模型
基础大型语言模型是基于大量文本数据训练出来的,它可以根据之前的文本预测下一个单词。而指令调整大型语言模型则可以根据给定的指令或任务进行微调,以更好地适应特定任务的需求。
以基础大型语言模型为例,当我们输入“从前有一只独角兽”时,模型可以根据之前的文本预测接下来的单词,如“它和所有独角兽朋友一起生活在一个神奇的森林中”。
从前有一只独角兽
它和所有独角兽朋友一起生活在一个神奇的森林中
但是,如果我们输入“法国的首都是什么”,模型可能会回答“法国最大的城市是什么”或“法国的人口是多少”,因为它是基于大量的互联网文章训练出来的,这些文章往往是问答题目列表,而不是简单的事实陈述。
法国的首都是什么
法国最大的城市是什么
法国的人口是多少
指令调整大型语言模型
相比之下,一个经过指令调整的大型语言模型已经被训练成遵循指令的模型。因此,如果你问它“法国的首都是什么”,它更有可能输出“法国的首都是巴黎”。
法国的首都是什么
法国的首都是巴黎
指令调整的大型语言模型首先使用已经训练好了大量文本数据的基础型语言模型,然后使用输入和输出作为指令来进一步训练和微调它。这样训练出的大型语言模型经过指令调整后,已经被训练成为有帮助、诚实和无害的。相比于基础大型语言模型,它们更不可能输出有问题的文本,例如有害的输出。为了使系统更能够提供帮助并遵循指令,通常会使用一种称为RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)的技术进一步优化。这种方法可以在保证语言模型的准确性和安全性的同时,提高其输出的质量和可用性。
在实际应用中,许多场景已经开始使用指令调整的大型语言模型。尽管在互联网上可能可以找到一些针对基础大型语言模型的最佳实践,但我们认为,针对大多数实际应用,大多数人应该集中精力使用指令调整的大型语言模型。这些模型更易于使用,而且由于OpenAI和其他大型语言模型公司的工作变得更加安全和对齐,这些模型也更加可靠。因此,我们建议在大多数应用中使用指令调整的大型语言模型,并专注于使用这些模型的最佳实践。
当使用指令调整大型语言模型时,可以看作向一个聪明但不了解您任务具体细节的人提供指令。因此,如果模型无法按照您的期望工作,很可能是因为提示词不够清晰。举个例子,如果您只说“请写一些关于艾伦·图灵的东西”,这并不足够明确。
请写一些关于艾伦·图灵的东西
更明确地指定您想要文本重点关注艾伦·图灵的科学工作、个人生活、历史角色或其他内容,会更有助于模型理解您的意图。此外,如果您要指定文本的语气,您想让它像专业记者写的文章,还是更像随意便条?如果您想让一名新毕业的大学生为您完成这项任务,提前指定他们需要阅读哪些文本片段,将有助于为这个新毕业生的成功做好准备。
总结
有了以上的铺垫,我们将进行后续的学习:
首先,您将学习一些Java开发中的提示词最佳实践。然后,我们将涵盖一些常见的用例:总结、推断、转换、扩展。然后,您将使用大型语言模型构建一个聊天机器人。我们希望这将激发您对可以构建的新应用程序的想象力。
在下一篇文章中,你将看到如何促使大型语言模型工作的两个原则,期待您的阅读。
作者:万猫学社
欢迎关注微信公众号 :万猫学社