AI Agent开发大全第四课-提示语工程:从简单命令到AI对话的“魔法”公式
什么是提示语工程?一个让AI“听话”的秘密
如果你曾经尝试过用ChatGPT或者其他大语言模型完成任务,那么你一定遇到过这样的情况:明明你的问题是清晰的,但答案却离题万里;或者你认为自己提供的信息足够详尽,可结果还是不理想。问题出在哪?很多时候并不是因为AI不够聪明,而是因为你没有使用“提示语工程”。
提示语工程(Prompt Engineering),顾名思义,就是将人类的需求转化为能够被AI理解并正确执行的形式。这不仅仅是简单的提问或指令,而是一门艺术、一种策略——就像给一台机器设定参数,使其运行逻辑更加贴近我们的实际需求。
举个例子,假设你想让AI帮忙写一封感谢信。普通提示可能只是:“写一封感谢信。” 但经过提示语工程处理后,你可以这样表达:
“请帮我写一封诚恳的感谢信,对象是我的团队成员。在信中提到他们最近加班赶项目的努力,并肯定他们在团队合作中的表现。”
前者模糊且缺乏细节,AI只能生成一段通用的文字。后者则包含明确目标、具体场景以及情感倾向,最终生成的内容会更贴合你的要求。
传统提示语 vs. 现代提示语工程:一场对话方式的变革
回到我们熟悉的日常生活,其实每个人每天都在进行某种意义上的“提示”。比如对朋友说:“快点起床!” 或者对孩子说:“把作业做完再玩。” 这些都是最基础的人类交流形式——简洁、直接、无需过多修饰。
但在今天这个AI时代,仅靠这种传统的表达方式已经远远不够了。为什么呢?让我们先看看两者的区别:
1. 输入复杂度
-
传统提示语:通常单一化,以短句为主。
例如:“告诉我天气。”
这类提示适合解决非常简单的问题,但对于复杂的任务往往效果有限。 -
提示语工程:强调深度构造,需要更多的背景描述和上下文支撑。
例如:“我计划明天去北京出差,请告诉我未来三天北京的天气预报,并建议是否需要带伞或外套。”
显然,后者的回答不仅包括天气信息,还会根据湿度和温度分析出行建议,实用性大幅提升。
2. 精确性与灵活性
-
传统提示语:由于信息量少,容易造成歧义。
例如:“列出五个菜的名字。”
这句话可以指向任何类型的菜肴,比如家常菜、西餐、甜品等。 -
提示语工程:重视定义边界,减少误解。
例如:“列举五道经典的中式火锅菜品,并附上食材清单。”
这里,“中式火锅”是一个关键限定词,既明确了范围也增加了专业性。
3. 结果可控性
-
传统提示语:难以掌控质量,有时甚至连基本语法都可能出现问题。
比如问:“解释一下量子力学。” AI可能给出连物理学家都不太满意的大段术语堆砌。 -
提示语工程:通过结构化约束提升结果的稳定性和一致性。
例如:“用通俗易懂的语言为初中生水平的小读者解释量子力学的基本原理,并配以生活化的比喻。”
如此一来,即使是深奥的知识也能变得平易近人。
提示语工程的魅力所在:从“猜”到“准”
提示语工程之所以吸引人,在于它改变了人机交互的方式——不再是单向地“丢给AI一个问题”,而是双向互动式的精细化控制。下面再来看几个具体的对比案例,体会其中的变化。
案例1:写作助手
- 传统提示语:
“写一篇关于旅游的文章。” - 提示语工程:
“写一篇500字的旅游攻略,主题是周末自驾游杭州西湖。内容需涵盖交通路线、住宿推荐以及周边景点,并使用幽默风趣的语言风格。”
是不是立刻感觉不一样了?前者泛泛而谈,后者则直击重点,让AI知道你在期待什么类型的作品。
案例2:数据分析
- 传统提示语:
“整理数据。” - 提示语工程:
“整理以下销售额数据,并用柱状图表示每月的趋势。同时计算同比增长率,并标注最高值与最低值。”
同样一份数据,如果缺少提示语工程的加持,结果可能是乱七八糟的数字罗列,但如果有了详细指示,就变成了专业级别的报告。
案例3:代码开发
- 传统提示语:
“写个程序。” - 提示语工程:
“用Python编写一个函数,用于统计文本文件中每个单词出现的频率。返回结果应按频率降序排列,同时忽略大小写差异。”
前者让人无从下手,后者则成为了明确的技术需求文档。
提示语工程的实践技巧:如何快速上手?
既然提示语工程这么强大,那我们该如何学习和应用呢?下面分享几点实用建议:
-
明确目标
第一步永远是弄清楚自己想得到什么。只有目标清晰,才能指导后续的具体操作。 -
分层拆解
将复杂任务拆分成小块,逐步细化要求。例如,写一本书可以从大纲开始,再到章节细化,最后才是具体内容创作。 -
善用格式
JSON、Markdown等工具可以帮助更好地组织提示内容,避免遗漏重要细节。 -
不断迭代
别指望一次成功!提示语工程是个反复试错的过程,多修改几次总会找到最优方案。
提示语工程中的函数式应用
有了上面的基础后我们来看什么叫提示语工程中的函数式应用。这是在吴恩达以及一些外面教程中不曾被提及到的一个应用,原因在于:真正的生产级应用中的填示语是带函数和变量的。
这和AI中的Functional Call还不一样。
- ai的functional call是指call的是一个LLM(大模型)可访问的API函数;
- 而提示语中的函数是指把提示语和代码、变量相结合构成真正AI原生应用的一种AI规则,AI原生应用是否够“AI"很大一部分依赖于你的AI函数设计得好不好;
要知道在AI原生应用中一切传统开发和设计模式都黯然失色了,更不要提什么规则引擎、工作流、参数配置这些远古的手法了。
就拿上文中的一个例子我们来了解什么是AI提示语工程中的函数来说明
不用函数的AI提示语写法
{
"你的角色": "你是一名中国的食品营养分析专家同,你总是以中文形式输出"
"要求你做的事": "根据我的输入的食品请你以百分比格式给出它的蛋白质含量、盐含量、卡路里含量"
"你的输出格式始终以我给你的标准json数据格式{
"saltness": "xxx%",
"protein": "xxx%",
"calorie": "xxx%"
}来返回
"我当前输入的食品": "8个菜肉大馄饨"
}
真正的提示语工程写法
{
"你的角色": "你是一名中国的食品营养分析专家同,你总是以中文形式输出"
"要求你做的事": "根据我的输入的食品请你以百分比格式给出它的蛋白质含量、盐含量、卡路里含量"
"你的输出格式始终以我给你的标准json数据格式<%returnTemplate%>返还给我。
"我当前输入的食品": "8个菜肉大馄饨"
}
此时我们把:<%returnTemplate%>作为变量,存于外部系统如:mongo、redis、mysql里。
在使用时我们把以下的内容从存储里取出来
{
"saltness": "xxx%",
"protein": "xxx%",
"calorie": "xxx%"
}
然后
inputPrompt=inputPrompt.replace("<%returnTemplate%>", templateTextFromMongodb);
此时我们得到的这个最终的在replace后的inputPrompt就是一个完整的提示语。
这种做法的好处在于:
- 完全解耦了提示语与业务;
- 格式甚至可以动态化配置在外部而不要改代码;
- 把复杂、嵌套的提示语彻底解耦便于管理维护;
AI未来的钥匙掌握在谁手里?
提示语工程不仅仅是一种技术手段,更是未来人机协作的核心能力之一。正如古人所言,“工欲善其事,必先利其器”。学会打磨提示语,就如同握住了一把通往无限可能性的金钥匙。
当你熟练掌握了提示语工程之后,你会发现,无论面对多么棘手的任务,只需轻轻一点,那个看似遥不可及的答案就会浮现在屏幕上等待着你。而这一切的背后,不过是几行精心设计的字符罢了。
课后作业
今天这课为了巩固知识点布署了一道课后作业。
用提示语工程去写一篇1,000字左右的科技类博客:往龙卷风里扔一颗多核弹能消除龙卷风吗?
写完后大家可以这么去验证自己的文章,我也是用这种方式来验证自己用AI写出的作文质量的就是把这篇文章发到知乎或者是今日头条一些杂文类网站,看看你的点击率能否破万!
我告诉大家,完全可以得只要你的提示语工程写得足够好,变量设置的足够合理,另外记得先用一个带有markdown格式的编辑器写完校对完并且避免任何错别字(会让AI引起误解)后扔给AI,然后去看看AI的输出吧。