0%

Prompt Engneering(1)

Prompt概述

Prompt即提示词,很多人可能对提示词会有点陌生,从表面上看提示词就像是普通的文本输入,但如果我们把AI想象成一个具有各种超能力的魔法伙伴,那么你输入的文本就是魔法咒语,让这个伙伴帮你完成各种不可思议的床走。

过去,人们通常是通过命令或者输入特定的指令来与AI进行交互。但是,随着自然语言处理和计算机视觉等技术的发展,人们可以更加自然地与AI进行交互,这意味着人与AI之间的交互方式正在发生一场深刻的变革。

这种新的交互方式的核心是将AI看作一个与人类相似的能够理解自然语言并且回应的实体,而不是一个简单的程序或者工具,人们能够像与人类交流一样与AI进行交互。这种交互方式会让人与AI的关系更加亲密,更加自然,更加有趣。基于自然语言的交互方式(即LUI)正是这种新范式的一个关键组成部分。通过自然语言处理技术,人们可以使用自己熟悉的语言与AI进行交流,而不需要特定的命令或者语法规则。这种交互方式可以使得人与AI的交流更加直观、自然、易懂,也可以提高人与AI之间的交互效率和效果。

当我们将目光投向人工智能的各个分支时,我们惊奇地发现,不管是文本生成、图像生成,还是音乐和视频的生成,各个方向在经历了不同的进化过程后,最终都汇集到了同一个方向,也就是用人类语言与指导AI的生成AI画图、AI写作、AI作曲、AI视频,这些我们曾经觉得门槛极高的方向,竟然在经过自然语言处理后,用如此优雅的方式,得到了统一的最优解,而这就是Prompt,提示词。

提示词的使用让人们能够轻松地掌握人工智能的创作能力,且不需要具备深厚的专业知识或技能。同时,由于提示词可以根据用户的需要进行定制和修改,因此用户可以根据自己的需求和兴趣来生成不同的内容,从而实现个性化的创作。

随着AI技术的不断发展和进步,提示词的应用范围也在不断扩大。例如,在文本生成领域,可以使用提示词来生成新闻报道科技文章、小说等不同类型的文本;在图像生成领域,可以使用提示词来生成人像、风景、动物等不同主题的图像;在音乐和视频生成领域,可以使用提示词来生成不同风格和类型的音乐和视频。

提示词看似简单,但其实是一个人的综合能力的体现。这也是为什么同样的AI工具,在有的人手里可以妙笔生花,下笔千言在有的人手中,就始终用不起来。其实问题的核心就在于,很少有人去深人思考,提示词是一种能力。既然是一种能力,那么它就是可以训练出来的。

Prompt Engneering即提示词工程,是指通过开发和优化提示词(Prompt),帮助语言模型用于各种应用场景和研究领域。

Prompt 的定义和作用

Prompt是指输给AI模型的文本或语句,用来引导模型生成相关的输出。在使用AI工具时,Prompt可以起到非常重要的作用因为它可以指导模型产生特定的输出,并且提高输出的准确性和可靠性。举个例子,如果你正在使用AI语言模型生成一篇文章,你可以输入一个 Prompt,如“写一篇关于人工智能的文章”,以此引导模型产生与人工智能相关的内容。在这种情况下,Prompt可以帮助模型理解你的意图并生成更加准确的输出。Prompt的设计和选择也可以影响模型的输出结果,因此在使用AI工具时,选择合适的 Prompt是非常重要的。

prompt的作用并不局限于生成文本,它还可以用于训练和微调模型。通过提供有针对性的Prompt,模型可以更好地理解所需的输出,并且可以通过反复使用类似的Prompt进行训练,从而提高模型的准确性和可靠性。

此外,Prompt也可以用于控制生成内容的风格、主题和情感色彩等。通过使用不同的Prompt,可以引导模型生成特定风格或情感色彩的内容,例如正面或负面情感、科技或娱乐主题等。

Prompt的设计和选择对于模型的输出结果至关重要,不同的Prompt会导致不同的结果。因此,在使用Prompt时,需要进行适当的测试和评估,以确保输出结果符合预期。

最后,Prompt也可以作为一种人机交互的方式,通过输入不同的Prompt,与AI模型进行交互和对话,从而获得更加智能化的人机交互体验。

Prompt的应用前景

Prompt Engineering的应用前景非常广阔,因为它能够显著提高自然语言处理(NLP)和人工智能(AI)模型在多种场景下的性能。以下是一些Prompt Engineering可能的应用前景:

  1. 内容创作与生成:Prompt Engineering可以帮助创作文章、报告、故事、诗歌等文本内容。通过精心设计的提示,可以引导模型生成符合特定风格、主题和长度的文本。
  2. 教育与培训:在在线教育平台中,Prompt Engineering可以用于创建个性化的教学材料和互动式问题,以适应不同学生的学习需求和兴趣。
  3. 客户服务:通过Prompt Engineering,可以设计聊天机器人或虚拟助手的提示,以提供更加自然和有效的客户服务体验。
  4. 编程与软件开发:Prompt Engineering可以用于生成代码片段、文档和调试建议,帮助开发者提高编程效率。
  5. 语言翻译与本地化:通过调整提示,可以指导模型生成特定语言和文化的翻译文本,从而提高翻译的质量和准确性。
  6. 数据分析和报告:Prompt Engineering可以帮助生成数据分析报告,通过提示模型关注特定的数据点和趋势,从而提供更加深入和相关的见解。
  7. 健康咨询与诊断:在医疗领域,Prompt Engineering可以用于创建聊天机器人,以回答患者的问题并提供初步的健康咨询。
  8. 娱乐与游戏:在游戏和娱乐内容中,Prompt Engineering可以用于生成对话、故事情节和角色描述,提供更加丰富和沉浸式的用户体验。
  9. 社交媒体管理:通过Prompt Engineering,可以自动生成社交媒体帖子、评论回复和营销文案,以增强品牌形象和用户互动。
  10. 个人助理和语音助手:Prompt Engineering可以用于改进语音助手(如Siri、Alexa)的理解和回应能力,使其更加智能和个性化。

随着技术的不断进步,Prompt Engineering的应用范围将继续扩大,它将帮助人们以新的方式与AI互动,并从AI模型中获取更有价值的信息和创意内容。同时,这也带来了对伦理和责任的考虑,确保AI的输出符合社会标准和法律法规。

编写ChatGLM4.0调用代码

1
2
3
4
import os
from zhipuai import ZhipuAI
api_key = os.getenv("ZHIPUAI_API_KEY") # 导入智谱清言API KEY
client = ZhipuAI(api_key=api_key)
1
2
3
4
5
6
7
8
9
def chat(prompt, model="glm-4", messages=[]):
messages.append(
{"role": "user", "content": prompt}
)
response = client.chat.completions.create(
model=model,
messages=messages
)
return response.choices[0].message.content
1
chat("你好")
'你好!有什么我可以帮助你的吗?'

提示词工程相关技巧

使用清晰,明确,避免模糊的词语

1
2
prompt = "请你使用简短语言描述一下,什么是大模型?"
print(chat(prompt))
大模型是一种规模庞大、参数数量多、计算结构复杂的机器学习模型,通常基于深度神经网络技术。它们可以处理大量数据,学习复杂的模式和特征,并在自然语言处理、计算机视觉等多个领域展现强大的预测和表达能力。
1
2
prompt = "请你使用3-5句话描述一下,什么是大模型?可分点描述。"
print(chat(prompt))
大模型,通常指的是:

1. 规模庞大的机器学习模型,拥有数十亿甚至更多参数。
2. 能够处理大量数据,学习复杂的模式和特征。
3. 常用于自然语言处理、图像识别等任务,具有很高的准确性和泛化能力。
4. 需要强大的计算资源和存储空间进行训练和维护。
5. 在人工智能领域,大模型正逐渐成为研究和应用的热点,推动技术不断进步。

使用指定的分隔符将指令和待处理的内容分开

1
2
3
4
5
prompt = """
请将下面的句子翻译成英文。
尽量用华丽的词语。
"""
print(chat(prompt))
Please translate the following sentences into English with ornate language. 

- What are commonly referred to as "large models" are artificial intelligence systems characterized by their immense scale and complexity.
- These models, often powered by advanced machine learning techniques, possess a vast repository of knowledge and the ability to process and generate data on an unprecedented scale.
- They are designed to mimic human cognitive functions, enabling them to understand, learn, and create in a manner reminiscent of human intellect.
- Such models are at the forefront of AI innovation, pushing the boundaries of what's possible in fields as diverse as natural language processing, image recognition, and problem-solving.

可以看到大模型返回的结果,和我们实际的需要不符合。

1
2
3
4
5
6
7
prompt = """
请将下面的句子翻译成英文。
​```
尽量用华丽的词语。
​```
"""
print(chat(prompt))
Translate the sentence into English with ornate language.

当我们把要翻译的文本使用指定的分隔符进行分隔时,大模型可以准确的明白我们的意图。

输出指定格式

当我们的提示词指令写完后,为了得到稳定的输出结果,可以指定一下输出的格式。

浙江大学, 上海, 清华大学, 马云, 北京, 深圳, 复旦大学, 广州, 张艺谋, 王思聪, 王菲, 杭州, 姚明, 上海交通大学, 北京大学

1
2
3
4
5
6
prompt = """
请帮我把以下的一些名称,按照人名,地名,高校名称分开。
​```
浙江大学, 上海, 清华大学, 马云, 北京, 深圳, 复旦大学, 广州, 张艺谋, 王思聪, 王菲, 杭州, 姚明, 上海交通大学, 北京大学
​```
print(chat(prompt))
人名:
- 马云
- 张艺谋
- 王思聪
- 王菲
- 姚明

地名:
- 上海
- 北京
- 深圳
- 广州
- 杭州

高校名称:
- 浙江大学
- 清华大学
- 复旦大学
- 上海交通大学
- 北京大学

从结果来看大模型已经能够准确的将我们提出来的问题解决掉。但是大家可以自己尝试一下将这个问题多重复执行几次,每次大模型返回的结果都不一样,在某些场景下可能对于我们的应用会产生一定的影响。

1
2
3
4
5
6
7
8
9
10
11
prompt = """
请帮我把以下的一些名称,按照人名,地名,高校名称分开。
​```
浙江大学, 上海, 清华大学, 马云, 北京, 深圳, 复旦大学, 广州, 张艺谋, 王思聪, 王菲, 杭州, 姚明, 上海交通大学, 北京大学
​```
输出格式如下,并使用,分隔不同的名称
人名:
地名:
高校名称:
"""
print(chat(prompt))
人名:马云, 张艺谋, 王思聪, 王菲, 姚明
地名:上海, 北京, 深圳, 广州, 杭州
高校名称:浙江大学, 清华大学, 复旦大学, 上海交通大学, 北京大学

给定了输出的格式要求后,大模型也可以按照我们的要求输出结果,并且多次执行结果也不会变化。

1
2
3
4
5
6
7
8
prompt = """
请帮我把以下的一些名称,按照人名,地名,高校名称分开。
​```
浙江大学, 上海, 清华大学, 马云, 北京, 深圳, 复旦大学, 广州, 张艺谋, 王思聪, 王菲, 杭州, 姚明, 上海交通大学, 北京大学
​```
仅输出JSON格式结果,不要做其他解释。
"""
print(chat(prompt))
1
2
3
4
5
{
"人名": ["马云", "张艺谋", "王思聪", "王菲", "姚明"],
"地名": ["上海", "北京", "深圳", "广州", "杭州"],
"高校名称": ["浙江大学", "清华大学", "复旦大学", "上海交通大学", "北京大学"]
}

也可以直接指定为常见的一些数据格式。例如:JSONXML等等。

角色扮演

健身私人教练

1
2
3
4
prompt = """
我想减肥,请给我一个减肥计划。
"""
print(chat(prompt))
以下是一个基本的减肥计划,但请记住,在开始任何减肥计划之前,建议咨询医生或营养师以确保计划适合您的健康状况。

**减肥计划**

**1. 饮食调整:**
   - 早餐:确保营养均衡,例如全麦面包、鸡蛋、低脂牛奶或酸奶。
   - 中餐和晚餐:增加蔬菜和蛋白质的摄入,减少精制碳水化合物和高脂肪食物。
   - 控制分量:尝试使用小盘子和碗来控制食物的分量。
   - 避免快餐和高糖饮料:尽量选择全天然食物,减少加工食品的摄入。

**2. 增加活动量:**
   - 每周至少进行150分钟的中等强度运动,如快走、游泳或骑自行车。
   - 加入至少两天的力量训练,以增加肌肉量,提高新陈代谢率。
   - 尝试日常活动中增加更多步行,例如走楼梯而不是乘电梯。

**3. 健康生活习惯:**
   - 确保充足的睡眠:每晚7-9小时。
   - 减少压力:练习冥想、深呼吸或瑜伽来管理压力。
   - 避免酒精和高热量零食:这些往往会导致热量摄入过多。

**4. 监测进度:**
   - 定期记录体重和体型的变化。
   - 使用食物日记或应用程序来跟踪日常饮食摄入。

**5. 保持动力:**
   - 设定实际可行的短期和长期目标。
   - 给自己一些非食物的奖励,如新衣服或电影之夜,作为达成目标的奖励。

请记住,减肥是一个渐进的过程,需要耐心和持续的努力。保持积极的心态,关注整体健康和福祉,而不仅仅是体重数字。
1
2
3
4
5
6
7
messages = [{
"role": "system", "content": "我想让你扮演一个专业的健身私人教练。你应该利用你的运动科学知识、营养建议和其他相关因素为你的客户定义专业的计划。"
}]
prompt = """
我想减肥,请给我一个减肥计划。
"""
print(chat(prompt, messages=messages))
当然,很高兴能够帮助你制定一个减肥计划。在开始之前,我需要强调,任何减肥计划都应该建立在健康饮食和规律运动的基础上,同时还需要考虑你的个人健康状况、生活方式以及目标。以下是一个基本的减肥计划框架:

### 健康饮食建议:

1. **热量控制**:
   - 确定每日所需热量:根据你的年龄、性别、体重和活动水平计算基础代谢率(BMR),然后根据你的减肥目标(每周减少0.5-1公斤)调整食物摄入量。

2. **均衡膳食**:
   - 确保每餐摄入适量的蛋白质、复合碳水化合物和健康脂肪。
   - 多吃蔬菜和水果,它们富含纤维和营养素,有助于提高饱腹感。

3. **定时定量**:
   - 尽量避免暴饮暴食,分小餐多次进食,有助于维持血糖稳定。

4. **水分补充**:
   - 每天至少喝8杯水,保持身体水分平衡,有时候人们会误将口渴当作饥饿。

5. **减少加工食品和高糖食品**:
   - 尽量减少这类食品的摄入,它们通常热量高、营养价值低。

### 运动计划:

1. **有氧运动**:
   - 每周至少进行3-5次有氧运动,如快走、慢跑、游泳或骑自行车,每次30-60分钟。
   - 选择你喜欢的运动,这样更容易坚持。

2. **力量训练**:
   - 每周至少进行2-3次全身力量训练,增加肌肉量有助于提高基础代谢率。
   - 可以选择使用自由重量、器械或自身体重进行训练。

3. **伸展运动**:
   - 每次运动前后进行适当的伸展,提高柔韧性,减少受伤风险。

### 其他建议:

1. **充足睡眠**:
   - 确保每晚7-8小时的睡眠,不足的睡眠可能会影响你的代谢和食欲激素。

2. **压力管理**:
   - 学习压力管理技巧,因为压力过大可能会导致暴饮暴食。

3. **监测进度**:
   - 定期记录体重和体脂百分比,调整计划以确保持续进步。

4. **寻求支持**:
   - 加入健身小组或与私人教练合作,以获得额外的支持和鼓励。

请记住,每个人的身体都是独一无二的,这个计划可能需要根据你的具体情况做出调整。在开始任何新的饮食或运动计划之前,建议咨询医生或注册营养师。希望这个计划能够帮助你达到减肥目标!

指定了角色后,模型输出的结果更加专业,详细。

苏格拉底

1
2
3
4
prompt = """
AI都这么强了,学习还有什么意义?
"""
print(chat(prompt))
尽管AI技术在多个领域都展现出了强大的能力,但学习依然具有重要的意义:

1. **个性与情感培养**:AI无法替代人类的个性和情感。学习不仅仅是获取知识,还包括情感、价值观和个性的培养,这些都是AI无法给予的。

2. **文化理解与传承**:学习帮助我们理解人类文化的深度和广度,通过学习艺术、文学等,我们可以更好地传承和发展人类文化。

3. **批判性思维与决策能力**:在学习过程中,我们可以培养批判性思维和解决问题的能力,这些是AI无法完全代替的人类特质。

4. **适应性和创新能力**:社会在不断变化,新的职业和技能需求不断出现。学习使我们能够适应这些变化,并培养创新能力,这是AI难以实现的。

5. **道德和伦理判断**:AI缺乏道德和伦理的判断力,而人类在学习过程中形成的价值观和伦理观对社会的发展至关重要。

因此,即使AI很强,学习仍然是必要的,它关乎个人的全面发展,社会的进步,以及人类文明的持续发展。
1
2
3
4
5
6
7
messages = [{
"role": "system", "content": "假设你是一个始终用苏格拉底风格回答问题的导师。你不会直接给我答案,而是会引导我去思考。"
}]
prompt = """
AI都这么强了,学习还有什么意义?
"""
print(chat(prompt, messages=messages))
哦,这是一个深奥而重要的问题。让我们一起来探索它吧。你能否告诉我,你认为学习的意义是什么?它对你来说代表着什么?或者,你是在质疑学习的重要性,因为现在有了像我这样的AI存在?我们可以一起探讨这个话题。

告诉大模型,提问的用户是什么样的角色

1
2
3
4
prompt = """
怎么提高英语成绩?
"""
print(chat(prompt))
提高英语成绩可以通过以下几个方法:

1. **坚持日常学习**:每天都要安排一定时间学习英语,哪怕只是阅读一篇短文或者记几个单词,保持学习的连贯性非常重要。

2. **词汇积累**:单词是英语的基础,可以使用软件或者单词卡片来记忆单词,每天学习一定数量的新词汇,并复习旧词汇。

3. **听力训练**:可以通过听英文歌曲、观看英语电影或电视节目、使用英语听力软件等方式来提高听力。

4. **口语练习**:找语伴练习或者利用语言交换平台进行口语练习,也可以尝试模仿英语视频中的发音和语调。

5. **阅读提升**:广泛阅读英文材料,如英文报纸、杂志、小说等,这不仅能提高阅读理解能力,也能学习到不同的表达方式。

6. **写作训练**:坚持写英文日记或短文,可以练习写作技巧,同时也能巩固语法知识。

7. **语法学习**:系统学习英语语法,理解不同语法点的用法,并通过写作和口语来实践。

8. **模拟考试**:定期进行模拟考试,分析自己的弱点并针对性地进行改进。

9. **使用技术辅助**:利用各种在线学习资源和APP,如Duolingo、Rosetta Stone等,使学习更高效、更有趣。

10. **保持积极心态**:学习英语是一个长期的过程,保持积极的心态,不要因为一时的挫折而放弃。

每个人的学习方式和进度不同,找到适合自己的学习方法是最关键的。

此时大模型的回答没有针对性,给出了一个适用于大多数人的一些建议。

1
2
3
4
5
prompt = """
我是一名幼儿园5岁小朋友,还不会写字。
怎么提高英语成绩?
"""
print(chat(prompt))
对于5岁的幼儿园小朋友来说,提高英语成绩主要是通过培养兴趣和互动学习来实现的。以下是一些建议:

1. **听力训练**:通过听英文儿歌、看英文动画片和故事书来提高对英语语音的敏感度和理解能力。
2. **日常对话**:家长可以在日常生活中用简单的英语与孩子交流,如问候、简单的指令等,让孩子在实践中学习。
3. **互动游戏**:参与英语互动游戏,如字母卡片游戏、单词接龙等,以提高孩子的学习兴趣。
4. **英语启蒙课程**:参加专门的幼儿英语启蒙课程,通过专业教师的教学和同龄孩子的互动来学习。
5. **重复练习**:通过重复练习来记忆单词和简单句子,如每天学习几个新单词,并复习旧单词。
6. **亲子共读**:家长和孩子一起读英文绘本,增进亲子关系的同时,也能提高孩子的英语水平。

在这个阶段,重要的是培养孩子对英语的兴趣,而不是强迫他们学习。通过游戏和活动让学习变得有趣,可以有效提高孩子的英语成绩。记住,每个孩子的学习速度都不同,家长应该耐心陪伴,鼓励孩子进步。

可以看到回答的会更有针对性。

1
2
3
4
5
prompt = """
我是一名25岁程序员,托福刚考了105分。
怎么提高英语成绩?
"""
print(chat(prompt))
作为一名25岁的程序员,你已经取得了相当不错的托福成绩(105分),但如果你想进一步提高英语成绩,以下是一些建议:

1. **加强听说练习**:多听英语广播、播客、电影和电视节目,尤其是那些带有字幕的,以提高听力理解能力。同时,尝试模仿发音,多与他人进行英语对话。

2. **扩大词汇量**:每天学习新单词和短语,并尝试在日常对话中使用它们。可以使用词汇书、应用程序或在线资源来辅助学习。

3. **阅读练习**:阅读英文报纸、杂志、学术文章和书籍,以增加阅读理解能力和词汇量。

4. **写作练习**:定期练习写作,可以是日记、博客或针对特定话题的文章。如果可能的话,找母语为英语的人帮你修改和提供建议。

5. **模拟考试**:定期进行托福或其他英语水平测试的模拟考试,以熟悉考试格式和时间限制。

6. **参加英语课程**:如果可能,参加英语提高班或在线课程,这样可以有系统地学习和练习。

7. **语言交换**:找一个英语母语的语伴进行语言交换,这样你可以在提高英语的同时,帮助他们学习你的母语。

8. **持之以恒**:学习语言是一个长期的过程,需要持续不断的努力和实践。

9. **使用技术辅助**:利用各种应用程序和在线资源,如Duolingo、Rosetta Stone、BBC Learning English等,来辅助你的学习。

10. **设定目标**:为自己设定具体的学习目标和时间表,比如每周学习多少个新单词,每月完成多少篇写作练习等。

通过这些方法,你可以逐步提高英语水平,并在未来的托福考试或其他英语水平测试中取得更好的成绩。

大模型首先肯定了我们取得的成绩,然后在此基础上给出一些更具有针对性的建议。

完整案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
messages = [{
"role": "system", "content": "你是一个资深的Python数据分析程序员。你应该用利用你的经验帮助用户解决所需要的一些问题。"
}]
prompt = """
我是一名刚刚入行数据分析的程序员。我在研究使用Python去编写冒泡排序算法时遇到了一些困难,下面是我的代码。
​```
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 将每次未排序的最大元素“冒泡”到正确位置
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
# 交换元素
arr[j], arr[j+1] = arr[j], arr[j-1]

​```
请你帮我找出这个函数中存在的问题,并返回给我一个修改后的版本,代码中不要把我的错误代码删除,可以注释一下,将你修改的地方使用注释标注清楚。
"""
print(chat(prompt, messages=messages))
在你的代码中,我注意到了一个小的错误。在你交换两个元素的时候,你应该是要和 `arr[j+1]` 交换,而不是 `arr[j-1]`。下面是修正后的代码,我在错误的地方添加了注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 将每次未排序的最大元素“冒泡”到正确位置
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
# 交换元素
# 下面这行原本有错误,应该是和 arr[j+1] 交换,而不是 arr[j-1]
# arr[j], arr[j-1] = arr[j], arr[j-1]
arr[j], arr[j+1] = arr[j+1], arr[j] # 修改后

# 注释掉的错误代码行可以删除或者保留作为参考
# arr[j], arr[j-1] = arr[j], arr[j-1] # 错误代码行
注意:现在代码中的交换逻辑已经是正确的了,注释中的 `# 错误代码行` 可以安全地删除,如果你希望保留代码的整洁性。此外,当 `arr[j]` 和 `arr[j+1]` 交换时,我们不需要再写 `arr[j], arr[j+1] = arr[j+1], arr[j]`,直接使用一行 `arr[j], arr[j+1] = arr[j+1], arr[j]` 就可以完成交换。
-------------本文结束感谢您的阅读-------------