AI专题往期回顾:
一、大语言模型的 Prompt 提示词工程(Prompt Engineering)详解
1. 什么是Prompt提示词工程?
Prompt提示词工程是一门新兴的技术, 是指设计、编写、优化输入给大语言模型(如GPT-4、ChatGPT)的文本提示(Prompt),以引导模型产生期望的高质量输出的过程。它不仅是简单地构造输入文本,更涉及到对模型行为的深入理解和对各种影响因素的综合考量。提示工程 的目标是通过精心设计的提示,引导模型生成精准、富有洞察力的输出,从而更好地完成特定任务。
换句话说,Prompt就是"对模型说的话",提示词工程就是如何有效"跟模型对话",才能让模型帮你完成想要的任务。
1、提示工程的技术方法
提示工程技术通常包括但不限于:
- 零样本提示:仅提供任务描述和输入文本,不给出任何示例,完全依赖模型自身的知识储备。
- 单样本和少样本提示:通过提供一个或多个示例来引导模型生成特定结构或模式的输出。
- 系统提示:为语言模型设定整体的上下文和目的,明确模型的任务方向。
- 上下文提示:提供与当前对话或任务相关的具体细节和背景信息,帮助模型更好地理解问题的细微差别。
- 思维链提示(Chain of Thought, CoT):要求模型生成中间推理步骤,增强其推理能力。
- 自一致性提示 :通过多次发送相同的思维链提示并选择出现频率最高的答案,提高答案的可靠性。
- 提示工程应用场景通常可包括:问答系统、文本生成、机器翻译、代码生成、逻辑推理与数学计算。
2、 Prompt的作用
-
指导模型任务方向:告诉模型你想做什么,比如写故事、回答问题、翻译、编程等。
-
限制输出范围:通过描述范围、格式、风格等,避免无关或不合适的回答。
-
提高结果质量:好的Prompt能让模型输出更准确、逻辑清晰、符合预期。
3. Prompt的基本类型
3.1 直接式Prompt(Direct Prompt)
直接用自然语言描述任务要求,例如:
请帮我写一首关于春天的诗。
3.2 指令式Prompt(Instruction Prompt)
明确给出任务指令和细节要求:
请用五行诗的格式写一首描写春天的诗,每行不超过8个字。
3.3 示例式Prompt(Few-shot Prompt)
给模型提供几个示范输入输出示例,帮助模型学习模式:
示例1:
问题:太阳是恒星吗?
回答:是的,太阳是一颗恒星。示例2:
问题:月亮是行星吗?
回答:不是,月亮是地球的卫星。请回答:火星是行星吗?
3.4 角色扮演Prompt(Role-play Prompt)
让模型扮演特定身份:
你是一名医生,请解释感冒的常见症状。
4. Prompt设计的关键技巧
4.1 明确且具体
描述任务时越清晰具体,模型输出越符合预期。
不清晰:帮我写一篇文章。
清晰:帮我写一篇关于人工智能未来发展的500字议论文。
4.2 控制输出格式
要求模型以特定格式输出,如列表、代码块、表格等。
请以列表形式列出五种常见的水果。
4.3 利用示例(Few-shot)
给模型示范有助于提高准确率,尤其在复杂任务上。
4.4 限制回答范围或风格
如限制字数、口吻、专业程度等。
请用通俗易懂的语言解释量子计算。
4.5 多轮交互调整
通过多轮提问和补充,逐步引导模型生成理想结果。
二、基于DeepSeek的提示词工程实现
参考链接:基于DeepSeek的提示工程与基础应用
1.1 DeepSeek链接
python## 安装langchain pip install langchain_openai httpx
1.2 构建DeepSeek使用函数
pythonfrom langchain_openai import ChatOpenAI import os import httpx # 此课程基于DeepSeek-R1模型进行,学员可自行前往DeepSeek官网获取API; # 获取API之后请更新对应的<API_KEY>、<BASE_URL>以及<MODEL_NAME>名称。 os.environ['OPENAI_API_KEY'] = <API_KEY> os.environ['OPENAI_API_BASE'] = <BASE_URL> llm = ChatOpenAI( model=<MODEL_NAME>, # 学员根据实际情况进行修改 temperature=0.6, max_tokens=8000, http_client=httpx.Client(verify=False), ) def call_llm_stream(prompt:str) -> str: return llm.invoke(prompt).content
1.3 提示工程基础应用
文本摘要
在NLP(自然语言处理)的生成中,文本摘要是非常重要的任务之一。语言模型最有前景的应用之一就是将复杂文章、概念快速转换成易读、易理解的摘要。
你可以将你想要总结的内容放在text变量中让模型去理解。
准备要总结的文本
text = """你想要让模型理解的内容""":
准备提示词
prompt = """你想要模型如何理解你的文本,或者是让它替你总结,你可以提示它一些文本中需要关注的点""":
提取文本摘要
pythonresult = call_llm_stream(prompt.format(content=text)) print(result)
内容提取
内容提取是RAG中重要的步骤之一。它使用大模型对文本中规定的内容进行总结提取,它不再依赖大模型自身的知识,或者可以对大模型所具有的知识做以补充。在本应用中,可以提出一段较长的文本、摘要,并向大模型提问关于文本、摘要中某一个细节的内容。
你可输入一篇文章,一段话,一个故事,让模型去理解,然后你再针对性告诉模型你关注的点,然后让其提取出有效内容。
准备要总结的文本
text = """你想要让模型理解的内容""":
# 想要理解的内容 --> 你关注的点
query = """你关注的点"""准备提示词
prompt = """基于你的提问和给出的文本来回答问题""
文本情感分类的Prompt设计详解
1. 任务定义
文本情感分类就是识别一段文本所表达的情感倾向,通常有如下类别:
-
正面(Positive)
-
中性(Neutral)
-
负面(Negative)
有时也会细分更多种类(喜悦、愤怒、悲伤等)
定义想要分类的文本
text = """今天被老师骂了。"""
定义提示词
prompt = """请判断下面文本的情感倾向,仅在"正面"、"中性"、"负面"三个类别中选择一个,并只输出类别名称:
示例1:
文本:"这家餐厅的服务很好,食物也很美味。"
情感分类:正面
示例2:
文本:"天气一般,没什么特别。"
情感分类:中性
示例3:
文本:"我对这次的体验感到很失望。"
情感分类:负面
请分类下面这段文本:
"这本书写得很无聊,让我失去了兴趣。"
情感分类:
。
模型预期输出:
负面
提示词优化建议
强调只输出标签,避免模型产生多余文字。
加入上下文或领域限制,如"针对客户反馈的文本"。
结合多轮对话,先让模型解释为什么,再给出结论。
控制语言风格,比如用简洁、正式的表达
python# 调用大模型 result = call_llm_stream(prompt.format(content=text,query=query)) print(result)
主流的结构化Prompt设计框架详解
1. RACE 框架
RACE 是一个用于创建提示的框架,目标是提供清晰结构,提升与大语言模型交流的效率。
四个步骤组成:
-
R - Role(角色)
明确指定模型扮演的身份或视角,比如"你是一名医生"、"你是一位法律顾问"。
-
A - Action(行动)
明确告诉模型你希望它做什么,例如"解释...","写一篇...","总结..."等。
-
C - Result(结果)
说明你期望的输出形式或目标,比如"简明扼要","详细说明","生成代码块"。
-
E - Example(示例)
提供一个示例输入和输出,帮助模型理解你的意图。
2. AIDA 框架(Attention, Interest, Desire, Action)
虽然AIDA最初是营销文案的写作框架,但也被用于Prompt设计,结构化引导模型生成符合目标的内容。
-
Attention(注意):引起模型"关注"某个主题或关键词。
-
Interest(兴趣):强调细节或原因,让模型"深入"话题。
-
Desire(欲望):明确目标或输出需求,激发"愿望"去执行。
-
Action(行动):具体指令,引导模型生成最终输出。
3. PASTA 框架(Purpose, Action, Scope, Tone, Audience)
-
Purpose(目的):说明你想达成什么。
-
Action(行动):具体的任务或请求。
-
Scope(范围):限定输出内容的边界。
-
Tone(语气):规定输出的风格或情绪。
-
Audience(受众):说明内容针对的对象。
4. C.R.E.A.M. 框架(Context, Role, Example, Ask, Make it concise)
-
Context(上下文):给模型必要的背景信息。
-
Role(角色):模型扮演的身份。
-
Example(示例):示范输入输出。
-
Ask(提问):具体任务或问题。
-
Make it concise(简洁):强调简洁输出。
5. SIMPLE 框架
-
Specify(指定):明确指定任务。
-
Illustrate(举例):给出示例。
-
Modify(调整):设定风格、格式等。
-
Prompt(提示):完整Prompt文本。
-
Loop(循环):通过反馈持续优化Prompt。
-
Evaluate(评估):检查输出质量。
总结
框架名 | 主要组成 | 适用场景 |
---|---|---|
RACE | Role, Action, Result, Example | 复杂任务指令明确,角色设定强 |
AIDA | Attention, Interest, Desire, Action | 营销文案、说服性写作 |
PASTA | Purpose, Action, Scope, Tone, Audience | 需要定制化风格和受众文本生成 |
CREAM | Context, Role, Example, Ask, Make it concise | 清晰简洁的复杂任务表达 |
SIMPLE | Specify, Illustrate, Modify, Prompt, Loop, Evaluate | 循环迭代优化Prompt设计 |
通过设计清晰的Prompt,明确任务和类别、给出示例,并控制输出格式,可以让大语言模型准确完成文本情感分类任务。这种方法简单高效,不需要额外训练,只靠提示词就能发挥大模型的强大理解能力。