看过前面文章的朋友们,应该还记得一句话,那就是prompt是应用程序跟大模型交互的唯一通道。作为与AI交流的桥梁,Prompt Engineering(提示工程)正在成为一个非常值得关注的领域。
那么,什么是提示工程呢?它的重要性何在?在业务中又是如何应用的?接下来,我们将用浅显易懂的语言,深入探讨这个概念。
什么是Prompt Engineering?
“Prompt”(提示)这个词在AI领域的含义,简单来说,“Prompt”就是你跟一个AI系统交流时所提出的请求或者指令,比如“讲个笑话”、“写首诗”。就好比你在与一个全能的助手对话时,你所提出的问题或任务是“prompt”。
而Prompt Engineering,则是关于如何设计这些“提示”,以便能够有效地指导AI生成你需要的输出。
Prompt的重要性
Prompt看起来好像很简单,Prompt的设计好坏直接影响到AI生成的结果。
好的prompt能够明确地传达你的意图,并且促使AI提供准确、相关且高质量的答案或解决方案。
可以说,Prompt是AI时代的“编程语言”,Prompt Engineering是AI时代的“软件工程”。
大家应该也听说过现在有一种职业叫“提示词工程师”,还非常吃香,我们可以理解为这就是AI时代的“软件工程师”。
因此,掌握提示的艺术,对于任何使用AI技术的人来说,都是一项非常宝贵的技能。
如何设计Prompt
设计Prompt本质上可以从以下两类来考虑:
答案指示型prompt
根据任务的目标、答案的类型设计prompt,通过prompt引出答案。
任务提示型prompt
提醒模型是要做什么任务,因为同样输入一句话,可以做的任务太多了,通过prompt让模型知道这次是要做什么任务。
优秀prompt的构成
如果您接触过大量提示工程相关的示例和应用,您会注意到提示词通常包含以下一些要素:
- 1、角色。发起一个提示时,先给AI定义一个当前任务的角色,比如“你是一名忧郁的诗人”、“你是一名资深的系统架构师”…
- 2、指示。对当前任务描述,高质量Prompt的核心要素:具体、丰富、少歧义。
- 3、上下文。给出与任务相关的其他背景信息,尤其是在跟AI多轮的交互中。
- 4、例子。可以举一些例子,能起到很大的作用,在学术中称为one-shot learing, few-shot learing或in-context learing。
- 5、输入。在提示词中明确的标识任务输入的信息。
- 6、输出。可以指定要输出的格式,比如Markdown、JSON、XML等。
注意,提示词所需的格式取决于您想要语言模型完成的任务类型,并非所有以上要素都是必须的。
几个建议
- 1、记住:把AI当人看!把AI当人看!把AI当人看!
- 2、强烈建议多看看chatGPT官方文档,中文的提示工程指南:github.com/yunwei37/Pr… , www.promptingguide.ai/zh
- 3、chatGPT对Marhdown格式非常友好。
- 4、多尝试,有时真的需要运气,一字之差,对结果生成的概率也有很大的影响,要多做尝试才能找到更优秀的Prompt。
提示应用
生成数据
LLMs有强大的文本生成能力。使用有效的提示策略可以引导模型产生更好、更一致和更准确的回复。LLMs还可以特别有用于生成有用于运行各种实验数据。
例如,我们可以使用它生成快速样本以用于情感分类器,就像这样: 提示:
makefile
复制代码
生成6个情感分析例子。将示例归类为积极或消极。生成4个积极的示例和2个消极的示例。使用以下格式进行示例:
问: <句子>
答: <情感>
输出:
makefile
复制代码
问: 我今天过得非常愉快,享受了美好的阳光和新鲜空气。
答: 积极
问: 我非常喜欢这部电影,它让我笑了很久。
答: 积极
问: 这次旅行让我感到无比放松和平静,我真的感到精神焕发。
答: 积极
问: 我刚刚得知我通过了考试,我感到非常兴奋和自豪。
答: 积极
问: 我觉得自己好像一无是处,无论我怎么做都得不到别人的认可。
答: 消极
问: 我对工作感到厌倦,每天上班都觉得沮丧和无聊。
答: 消极
PAL(程序辅助语言模型)
程序辅助语言模型(PAL)是一种使用LLMs阅读自然语言问题并生成程序作为中间推理步骤的方法。
例如,我们需要AI理解日历,下面是使用LangChain和OpenAI GPT-3的示例:
python
复制代码
import openai
from datetime import datetime
from dateutil.relativedelta import relativedelta
import os
from langchain.llms import OpenAI
from dotenv import load_dotenv
load_dotenv()
# API configuration
openai.api_key = os.getenv("OPENAI_API_KEY")
# for LangChain
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
# 设置实例模型
llm = OpenAI(model_name='text-davinci-003', temperature=0)
# 设置提示
question = "2024年的第一天是星期一,今天是2024年的第9个星期二,请问今天的日期是什么?格式为YYYY/MM/DD。“
DATE_UNDERSTANDING_PROMPT = """
# Q:2015还有36小时就要到了。从今天算起一周后的日期是什么(以MM/DD/YYYY的格式呈现)?
# 如果2015年还有36小时就要到了,那么今天就是36小时前。
today = datetime(2015, 1, 1) - relativedelta(hours=36)
# 从今天算起一周后,
one_week_from_today = today + relativedelta(weeks=1)
# 用%m/%d/%Y格式呈现的答案是
one_week_from_today.strftime('%m /% d /%Y')。
"""
代码生成
chatGPT是很擅长写代码的。
简单例子
与OpenAI的所有聊天模型一样,如:
复制代码
请用python写一度啊代码,询问用户他们的名字并向他们说“你好”。
那么chatGPT回复如下:
python
复制代码
# 询问用户的名字并向他们打招呼
name = input("你叫什么名字? ")
print("你好," + name + "!")
将注释转换成代码
举例,提示:
python
复制代码
请将下面注释转成python代码
"""
创建一个电影名称列表
创建这些电影的评分列表
组合他们并创建一个包含10部电影及其评级的json对象
"""
输出:
ini
复制代码
import json
# 创建电影名称列表
movies = [
"阿凡达",
"泰坦尼克号",
"复仇者联盟",
"星球大战",
"盗梦空间",
"少年派的奇幻漂流",
"哈利波特与魔法石",
"指环王",
"美丽心灵",
"当幸福来敲门"
]
# 创建电影评分列表
ratings = [
9.2,
8.8,
9.0,
8.7,
8.9,
8.5,
8.6,
9.1,
8.4,
8.7
]
# 组合电影名称和评分并创建JSON对象
movie_data = []
for i in range(len(movies)):
movie = {
"电影名称": movies[i],
"评分": ratings[i]
}
movie_data.append(movie)
json_data = json.dumps(movie_data, ensure_ascii=False, indent=4)
print(json_data)
Function calling
前面的文章讲过,通过Function calling可以让用户能够高效的使用外部工具、外部API进行交互,来实现一些基础大模型无法完成的推理。 后面我们将专门写一篇文章来介绍如何使用Function calling,这里就不做多的说明了。
如何进行Prompt调优
Prompt调优是一种艺术与科学的结合。一开始,你的prompt可能不够完美。但通过不断实践和调整,你可以提高其效能。
以下是一些调优的基本步骤:
- 明确目标: 确定你想要AI完成什么任务,你期待的输出是什么样的。
- 逐步迭代: 开始时用一个基本的prompt,然后根据AI的反馈逐步调整。
- 简化清晰: 确保你的prompt简单明了,避免使用复杂或含糊的语言。
- 测试不同的变体: 实验不同的措辞和结构,看看哪种效果最好。
- 分析结果: 检查AI的输出,决定哪些部分已经满足需求,哪些需要改进。
- 使用数据: 如果可能的话,收集数据分析哪些类型的prompt产生了最好的结果。
- 获取反馈: 让用户或其他团队成员对AI的响应给出反馈,进一步完善你的prompt。
Prompts精选
最后,推荐一个中文prompts精选:github.com/yzfly/wonde…
这是一个《ChatGPT 中文指南》的作者优化、精选的系列中文ChatGPT Prompts,有上百个高质量prompt,并提供图文使用示例,让大家能够更好的学习使用 ChatGPT。
其实,Prompt Engineering并不神秘,在你掌握了基本的原则和技巧后,你就可以开始有效地与AI进行交流了。就像学习一门新语言一样,越多的练习和实践,你的技能就会越精湛。
如何系统的去学习大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
阶段1:AI大模型时代的基础理解
- 目标:了解AI大模型的基本概念、发展历程和核心原理。
- 内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践 - L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
- 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
- 内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架应用现状
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架与Thought
- L2.2.5 Prompt框架与提示词 - L2.3 流水线工程
- L2.3.1 流水线工程的概念
- L2.3.2 流水线工程的优点
- L2.3.3 流水线工程的应用 - L2.4 总结与展望
- L2.1 API接口
阶段3:AI大模型应用架构实践
- 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
- 内容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的设计理念
- L3.1.2 Agent模型框架的核心组件
- L3.1.3 Agent模型框架的实现细节 - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的应用场景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特点
- L3.3.2 ChatGLM的开发环境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特点
- L3.4.2 LLAMA的开发环境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介绍
- L3.1 Agent模型框架
阶段4:AI大模型私有化部署
- 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
- 内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
学习计划:
- 阶段1:1-2个月,建立AI大模型的基础知识体系。
- 阶段2:2-3个月,专注于API应用开发能力的提升。
- 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
- 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓