LLM 提示词工程入门:开发者笔记与代码实践
本文基于 DLAI 课程 ChatGPT Prompt Engineering for Developers 的笔记整理。这门课面向入门 LLM 的开发者,深入浅出地介绍了如何构造 Prompt 并基于 OpenAI 提供的 API 实现包括总结、推断、转换等功能,是入门 LLM 开发的经典教程。
Prompt(提示),最初是 NLP 研究者为下游任务而设计的一种任务输入形式或模板,在 ChatGPT 的影响下,Prompt 成为与 LLM 交互输入的代称。一般我们把给大模型的输入称为 Prompt,将大模型返回的输出称为 Completion。一个合理的 Prompt 设计极大地决定了 LLM 能力的上限与下限。
Prompt Engineering,是针对特定任务构造能充分发挥大模型能力的 Prompt 的技巧。
对于开发人员,LLM 更强大的功能是能通过 API 接口调用,从而快速构建软件应用程序。课程中有很多代码的实操,推荐大家使用 Google Colab 来实现,免去本地环境的配置。
Lesson 1. 提示词原则
提示词设计的两个关键原则:编写清晰、具体的指令,以及给模型充足思考时间。
原则一:编写清晰、具体的指令
Prompt 需要清晰明确地表达需求,提供充足上下文,使语言模型准确理解我们的意图,就像向一个外星人详细解释人类世界一样。过于简略的 Prompt 往往使模型难以把握所要完成的具体任务。
使用分隔符清晰地表示输入的不同部分
可以选择用 ```,""",< >,: 等做分隔符,只要能明确起到隔断作用即可。

结构化输出
按照某种格式组织的内容,例如 JSON、HTML 等。这种输出非常适合在代码中进一步解析和处理。

要求模型检查是否满足条件
如果任务包含不一定能满足的条件,可以告诉模型先检查这些条件,如果不满足,就指出并停止执行后续的完整流程。

提供少量示例
在要求模型执行实际任务之前,给出一两个已完成的样例,让模型了解期望的输出样式。
原则二:给模型充足思考时间
语言模型与人类一样,需要时间来思考并解决复杂问题。如果匆忙给出结论,结果很可能不准确。因此 Prompt 应加入逐步推理的要求,给模型留出充分思考时间,可以要求其先列出对问题的各种看法,说明推理依据,然后再得出最终结论。
指定完成任务所需的步骤
text = f"""
李琪,爱荷华州立大学计算机科学系助理教授,她于 2017 年取得纽约州立大学布法罗分校计算机科学与工程系博士学位;于 2012 年取得伊利诺伊大学香槟分校统计学硕士学位;于 2010 年取得西安电子科技大学信息与计算科学学士学位。她的研究兴趣为数据管理、数据挖掘和机器学习。
彭楠赟,现任加州大学洛杉矶分校计算机科学系助理教授。她于 2012 年在北京大学获得学士和硕士学位,于 2017 年获约翰·霍普金斯大学计算机科学博士学位。她的研究方向为低资源信息提取、语言生成和跨语言迁移。
Qianqian Wang,康纳尔大学计算机科学专业博士四年级,此前在浙江大学获得学士学位,研究方向是 3D 计算机视觉、计算机图形学和机器学习的交叉领域。
陈师哲,INRIA Paris 的一名博士后研究员。她分别于 2020 年和 2015 年在中国人民大学获得博士和学士学位,2018 年访问了卡内基梅隆大学,2019 年访问了阿德莱德大学,2019 年在 MSRA 工作。她在 2017 年获得百度奖学金,2020 年获得北京市优秀毕业生奖。她的研究兴趣是具身智能、视觉与语言、多模态深度学习。
李爽,目前是麻省理工学院电气工程与计算机科学专业的一名五年级博士生,她的研究兴趣是人工智能,包括计算机视觉、自然语言处理、决策和机器学习。
Xin Lu,现任 Adobe 的高级工程经理,于 2015 年获得美国宾夕法尼亚州立大学的博士学位。她的研究涵盖从端到端 AI/ML 研发到软件开发、分析、开发运营、新计划和现有业务线的产品开发和管理。此外,她还在顶级的计算机视觉和机器学习领域发表了 30 多篇论文,并拥有超过 35 项美国专利。
刘伊凡,现任苏黎世联邦理工大学讲师,阿德莱德大学客座助理教授。于 2018 年获得北航自动化学院硕士学位,2021 年获得阿德莱德大学计算机科学学院博士学位。研究领域主要包含深度学习、开放世界感知。
"""
prompt_2 =
response = get_completion(prompt_2)
()
(response)


