Amazon Bedrock 上针对 LLMs 的提示工程最佳实践

云计算
re:Invent
0
1
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 提示工程是指引大型语言模型(LLMs)生成所需输出的过程。在本讲座中,我们将概述提示工程的最佳实践,并分享如何选择最合适的格式、短语、单词和符号,以充分发挥生成式 AI 解决方案的效果,同时提高准确性和性能。本讲座将以 Claude 2 LLM 为例,展示提示工程如何帮助解决复杂的客户用例。此外您还将了解到如何将提示集成到您的架构中,以及如何使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的 API 参数来调整模型参数。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1000字,阅读时间大约是5分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 约翰·贝克(John Baker),作为亚马逊云科技Bedrock部门的主要工程师,在2022年re:Invent的第一天演讲开始时,欢迎了在场的观众。他强调,这是一个关于大型语言模型(LLM)和生成性人工智能领域激动人心的即时主题——提示工程的演讲。 约翰表示,今年LLM因其令人惊叹的功能成为了头条新闻,可以轻松生成令人印象深刻的成果,似乎可以预测且一致。然而,他将这种模型应用于客户并获得可预测、一致的结果称为具有挑战性的任务。这正是提示工程试图解决的核心问题。 约翰介绍了他的合作伙伴尼古拉斯·马鲁尔(Nicholas Marull),他是Anthropic公司的代表。约翰解释说,因为马特·贝尔(Matt Bell)来自Anthropic公司,他原本打算发表演讲,但因为最后的旅行问题无法到场。约翰指出,尼古拉斯直接与客户合作以及为Anthropic开发SDK的经验使他能够为原始演讲内容提供有价值的个性化见解。 为了展示背景,约翰通过一个简单的数学例子说明了如何调整提示可以引导LLM对模糊问题给出不同的正确答案。这表明了提示工程的实质——向模型添加上下文以偏导其输出。 接着,他展示了如何通过改变角色来影响不同的语气和词汇水平,同时传达相同的基本信息。例如,只需指示LLM采用兴奋孩子的角色而非物理老师的角色,量子纠缠的解释就会发生显著变化,但核心概念仍然保持一致。 约翰强调,在将LLM用于面向客户的聊天机器人应用程序时,建立明确的角色是非常重要的。这将引导模型朝着适合特定用户群体的适当语气发展。 最后,约翰探讨了更高级的提示工程技术,如链式思考提示,这种提示能构建结构化的提示,以诱导模型逐步进行推理。这对调试复杂逻辑非常有用。 他也研究了检索增强生成(RAG)技术,这是一种在知识源中检索相关信息并制定自然语言回应的流行方法。这些步骤包括阅读文档、对查询和文档进行编码以进行搜索、检索查询结果、将查询和结果扩展成一个提示以及最终生成回应。 在Nicholas接手后,他强调Nicholas将展示如何优化适用于人类的工作流程,以便在使用他们的Claude LLM时充分利用诸如思路链和RAG等技术。 Nicholas强调,由于LLM是通过人类生成的数据进行训练的,因此提示应设计成对其他人类的指令。清晰的、详细的提示会产生最可靠的输出。 接着,他深入讲解了Claude特定的格式化最佳实践,特别是使用交替的“人类”和“助手”标签。他提醒说,省略开头的人类标签会降低结果的质量。 尼古拉斯强调了约翰介绍的一种关键技巧,即提供多个示例,指出随着额外示例的增加,准确性会继续提高。如果结果不理想,他建议不要在只有一个或两个示例的情况下停止尝试。 正如约翰所提到的,尼古拉斯解释了如何使用XML标签来引导思考提示的方法,这可以提高Claude的准确性。他提供了一个样本结构,要求在回答之前,Claude需要在XML标签内思考问题。 回顾约翰的人物角色示例,尼古拉斯注意到仅仅将Claude描绘成领域的专家,如“大师逻辑学家”,就能提高其性能,即使不改变语气和词汇。 他又强调了XML标签作为一种组织数据的方式,以提高Claude解析输入和预测输出格式的能力。作为一个例子,XML标签清楚地划分了编辑电子邮件的开始和结束。 尼古拉斯建议通过用预期的格式来启动Claude的回应来“代表Claude”发言。例如,当需要JSON输出时,从开头就用括号,告诉Claude跳过前言并开始有效的JSON。 最后,他讨论了幻觉缓解的问题,建议首先给予Claude说出“我不知道”的权利,这样可以减少猜测。此外,指示它只有在高度自信时才回答问题可以避免基于有限信息的回答。在回答问题之前要求提供支持引用迫使Claude将其答案基于提供的数据。 在提示注入问题上,Nicholas解释道,Claude通过诸如RHF和宪法AI等训练方法具备固有保护。然而,针对公司特定风险运行一个并行「无害性屏幕」提示可提供另一层定制化防御。 在进阶技术上,Nicholas首先探讨了提示链,将复杂的提示拆分成更简单的序列。这提升了多步逻辑的可靠性,同时仅增加了少量的令牌。 接着,他介绍了长提示的最佳实践,建议在问题前放置文档,使用XML进行标记,提供示例,并明确要求Claude认真阅读。 最令人兴奋的技术是工具的使用,使Claude能够利用外部功能。工具描述被组合成提示,让Claude决定何时调用它们。关键步骤包括解析Claude的输出以找到工具调用,执行工具,并将结果反馈给Claude。 作为例子,工具使用支持条件RAG,Claude确定何时在每个知识源中搜索而非盲目地对每个查询进行RAG。这使得多轮对话更加灵活且逼真。 最后,Nicholas强调关于提示Claude的详细信息可在Anthropic的文档网站上找到,他指出他们的新SDK也简化了工具使用的实现。随后,他将舞台交给了John。 John总结时表示感谢Nicholas分享他的见解和专业技能。他强调,遗憾的是他们没有时间进行实时问答,但邀请与会者在演讲结束后就所涵盖的概念提出任何问题或分享他们与LLM的经验。 就这样,他以一个明显的例子结束了演讲,即深思熟虑的提示工程的力量可以使LLM自然且可靠地处理复杂的对话。通过使用示例、上下文和工具定制提示,模型可以应对复杂的问题,这对组织继续整合生成性AI以提高客户体验将非常有价值。 **下面是一些演讲现场的精彩瞬间:** 约翰·贝克,作为亚马逊云科技Bedrock的一名首席工程师,与尼古拉斯·马鲁尔(Nicholas Marull)共同探讨了解决挑战的方法。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_0.png) 他们介绍了用户如何通过使用特定的语法,如JSON支架,来格式化Claude的回答,从而避免不必要的废话。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_1.png) 为了减少幻觉,给予Claude在很有信心时才回答问题的权限。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_2.png) Claude使用了诸如宪法性AI、平行无害筛选等技术来防范提示注入和不道德用户行为等问题。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_3.png) 通过将提示与提供额外数据的外部函数调用相结合,Claude的能力得到了增强。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_4.png) 领导者还解释了Claude如何结合多种功能,如获取天气信息和播放音乐,来确定相关性问题并提供答案。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_5.png) 这展示了Claude如何解析输出,例如提供旧金山的当前晴朗天气信息。 ![](https://d1trpeugzwbig5.cloudfront.net/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock/images/rebranded/AIM377-Prompt_engineering_best_practices_for_LLMs_on_Amazon_Bedrock_6.png) ## 总结 约翰·贝克(John Baker)和尼古拉斯·马鲁尔(Nicholas Marull)来自亚马逊云科技(Amazon Web Services)的Bedrock和Anthropic团队,他们分享了关于大型语言模型(LLM)的一些提示工程最佳实践。 首先,贝克概述了一些基本的提示工程技巧,如使用人物角色和示例来引导LLM产生预期的回应。接着,他介绍了更先进的方法,如思考链提示以引导推理,以及将响应基于知识源的探索增强生成(Retrieval-Augmented Generation,简称RAG)。 马鲁尔针对克劳德(Claude)提出了一些具体建议,强调了使用“人类”和“助手”标签以及大量使用示例的清晰提示格式。他还建议利用诸如允许克劳德说“我不知道”、置信度评级和引用来源等工具来减少幻觉。马鲁尔还鼓励提供有思想的工具描述,以便从克劳德调用外部函数。 贝克和马鲁尔强调,为了使LLM的性能一致且可预测,需要如同给另一个人类下指令一样清晰的提示。他们提倡进行大量的测试和迭代,以设计出能超出特定测试用例的通用提示。演讲者倡导分享最佳实践并合作,以推进负责任地应用LLM。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
1
目录
关闭