当前位置: 首页 > news >正文

Prompt从入门到抄作业

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • 1 引言
  • 2 好的Prompt是什么样的
    • 2.1 Prompt构成
      • 2.1.1 人类视角
      • 2.1.2 LLM视角
  • 3 怎么把用户输入解析为高质量输入给LLM
    • 3.1 使用大模型应用处理输入
      • 3.1.1 使用关键词或规则进行解析
      • 3.1.2 使用LLM预处理Prompt
    • 3.2 从源头上更改(主流做法)
  • 4 怎么写好提示词
    • 4.1 抄作业
      • 4.1.1 https://flowgpt.com/
      • 4.1.2 https://poe.com/ 或者 https://www.tongyi.com/discover
      • 4.1.3 https://github.com/f/awesome-chatgpt-prompts
      • 4.1.4 https://github.com/langgptai/LangGPT
      • 4.1.5 https://github.com/dair-ai/Prompt-Engineering-Guide
      • 4.1.6 https://github.com/Acmesec/PromptJailbreakManual
    • 4.2 建立个人/团队Prompt库
    • 4.3 抽象作业为模板
    • 4.4 评估与优化
      • 4.4.1 评估
        • 4.4.1.1 人工评估
        • 4.4.1.2 自动化评估
          • 4.4.1.2.1 权威评估集
          • 4.4.1.2.2 建立自己/团队的评估集
      • 4.4.2 优化
        • 4.4.2.1 参考资料
        • 4.4.2.2 速查表

1 引言

在之前的快速筑基系列中,我们有了解到可以使用Prompt来限制大模型的输出。
限制输出还有其他手段如temperature、top_p、max_tokens参数等等…

好的提示词(Prompt)哪里好?
提示词要怎么写?
提示词在LLM是怎么起作用的?
怎么评估提示词好坏?
世另我?怎么让LLM按照自己的思路去做事情?
怎么优化提示词?
提示词怎么越狱?
不了解特定行业知识能写出特定行业的优质提示词么?

有没有好的提示词作业可以抄?

与memory的联动暂且不提。
今天让我们先较为深入地了解一下基础中的基础——Prompt。

2 好的Prompt是什么样的

简单来说,输出符合预期的就是好的。

Prompt对于大模型是典型的输入决定输出质量,我们编写的prompt质量决定了LLM输出质量。
一个好的Prompt应该可以节省与LLM沟通成本、提升准确性、最大化AI潜力、支持更复杂的任务解决方案。

优点描述
提升AI输出的准确性与相关性明确的Prompt帮助AI理解任务目标,避免偏离
节省时间与沟通成本精准的Prompt能减少你与AI之间的反复试探,直接达到期望结果
最大化AI潜力AI本身有强大的生成能力,但它依赖于清晰明确的指令来发挥最佳效果
支持更复杂的任务解决方案高质量Prompt不仅能帮助完成简单任务,还能处理更复杂的、多层次的问题

Prompt应该是清晰的表达:目标明确、背景详实,有明确的角色和视角等等…
需要反复交代的都可以在Prompt中交代好。
我们也可以在Prompt中要求LLM给出思考过程,强制LLM推理,从而更好的调整Prompt。

好的Prompt能给予LLM合适的引导。

2.1 Prompt构成

2.1.1 人类视角

为了系统性地理解Prompt,我们可以将一个复杂的Prompt拆解为几个核心构成要素。当你发现输出不理想时,可以逐个检查是哪个要素出了问题。

  • CheckList
构成要素核心作用(你要思考的问题)例子
1. 角色 (Role)我希望模型扮演谁?它的专业知识、口吻和视角应该是什么样的?你是一位经验丰富的儿童故事作家… 你是一个Python代码审查工具…
2. 任务 (Task)我需要模型具体完成什么动作?(总结、分析、创作、翻译、分类、提取…)…请创作一个关于友谊的短篇故事。 …请审查以下代码,找出其中的逻辑错误和不符合PEP8规范的地方。
3. 上下文 (Context)模型完成任务所需的所有背景信息是什么?(文章、数据、对话历史、用户画像…)故事的背景设定在一个魔法森林里。 这是用户之前的提问:[…]
4. 指令与约束 (Instructions & Constraints)我希望输出遵循哪些具体的规则?长度、风格、要点、禁忌是什么?故事必须在500字以内。 必须包含“勇气”和“智慧”两个主题。 输出中绝对不能包含任何价格信息。
5. 示例 (Examples / Few-shot)我能否给出一两个“好”的范例,让模型模仿?这在处理复杂或模糊任务时极其有效。例如,如果输入是“我爱这部电影”,输出应为“正面”;如果输入是“浪费了我的时间”,输出应为“负面”。
6. 输出格式 (Output Format)我希望模型以什么格式返回结果?(JSON, Markdown, XML, 列表…)这对于程序化处理至关重要。请将结果以JSON格式输出,包含"title", “summary”, "keywords"三个键。 请使用Markdown的无序列表格式回答。

当然,也有简单的可套用公式:
核心公式RPC:规则(Rules)+角色(Persona)+上下文(Context)。

2.1.2 LLM视角

简单粗暴的理解,LLM的工作方式就是预测下一个token。
输入的Prompt也会被分解成一系列的tokens,然后LLM会利用庞大的神经网络,根据输入的tokens与它在海量训练数据中学到的模式和统计关系,一个token接一个token计算输出。

神经网络:人工智能和机器学习中的一种计算模型。模拟神经元之间的连接和信息传递,通过数学运算处理输入数据,生成输出结果。

这也是为什么LLM API划分有多种消息类型的原因。

3 怎么把用户输入解析为高质量输入给LLM

3.1 使用大模型应用处理输入

不是所有人都能第一时间提供高质量的提示词,但是大模型应用可以通过预设的方式转换用户输入为高质量Prompt。

以LangChain支持的消息类型为例:

  • ‘human’: 人类消息
  • ‘user’: 用户消息
  • ‘ai’: AI 消息
  • ‘assistant’: 助手消息
  • ‘function’: 函数消息
  • ‘tool’: 工具消息
  • ‘system’: 系统消息
  • ‘developer’: 开发者消息

比如典型的指令例子,我们可以给对话预设角色和约束,用户输入当做任务放在user或者human中处理:

[SystemMessage(content='你是一位顶级的文案策划专家,精通社交媒体营销。\n你的任务是根据用户提供的产品信息,创作出简短、有力、富有创意的推广文案。\n所有文案都必须遵守以下规则:\n- 风格现代,能吸引年轻用户。\n- 每条文案严格控制在50个字以内。\n'),HumanMessage(content='请为这款产品创作三条朋友圈文案:\n产品名称:星尘咖啡\n产品特点:采用阿拉比卡豆,口感顺滑,带有独特的坚果风味,能瞬间提神醒脑。')
]

![[Prompt概括.png]]

如果用户期望自己能输入一些设定、约束,大模型应用该怎么处理输入为高质量Prompt呢?

3.1.1 使用关键词或规则进行解析

可以尝试使用一些简单的规则来解析用户的单次输入。
比如定义一些出发次,比如“扮演”、“角色”、“设定”等…
但是这样前提是用户知道使用这些词,且有些词难以定义规则处理,如“使用”、“不想要”、“期待”等…

  • 缺点
    规则往往非常脆弱,实际生产中也难以维护且复杂。

3.1.2 使用LLM预处理Prompt

我们可以使用LLM来提升用户输入的Prompt质量,先调用一次LLM,让LLM帮忙优化输入结构。

或者在应用中集成一个提示词优化器,比如prompt-optimizer
![[Prompt概括-1.png]]

  • 缺点
    成本高,且LLM解析优化出来的Prompt也不一定直接符合需求。

3.2 从源头上更改(主流做法)

我们应该通过UI/应用设计进行分离。作为应用开发者,应该为用户提供一个清晰的界面,让他们自然而然地将不同类型的信息输入到不同的地方。

核心思想: 不要给用户一个万能的输入框,而是提供结构化的输入界面。

这样大模型应用处理输入的时候可以很自然地承接、填充信息给LLM。

比如通义千问的创建智能体:
![[Prompt概括-2.png]]

4 怎么写好提示词

4.1 抄作业

自己从0~1有一两次就够了,抄作业才是程序员应该做的事情(🤪)。不要重复造轮子。

写轮眼!启动! 我可太喜欢抄作业了。

4.1.1 https://flowgpt.com/

全球最大的Prompt社区。有排行榜、有分类、有用户投票。你可以找到各种场景(学术、营销、编程、娱乐)下经过大量验证的优质Prompt。

抄法:直接搜索关键词,看排行榜,找到高赞Prompt,复制并研究它的结构。
![[Prompt概括-3.png]]

4.1.2 https://poe.com/ 或者 https://www.tongyi.com/discover

每个机器人背后都是一个精心设计的Prompt。不管国内国外,抄!

抄法:找到一个你觉得特别好用的机器人,点击它的头像,通常可以看到它的“Prompt”定义。

4.1.3 https://github.com/f/awesome-chatgpt-prompts

这是一个由开发者维护的GitHub仓库,用.csv文件整理了大量高质量的英文Prompt。内容非常结构化,适合开发者进行批量处理或寻找灵感。

中文库:https://github.com/PlexPt/awesome-chatgpt-prompts-zh

抄法:git clone下来,或者直接在网页上浏览,找到你需要的角色或任务,翻译并化用。

4.1.4 https://github.com/langgptai/LangGPT

结构化抄作业法。这个仓库不仅仅是给你Prompt,更是教你一种构建高质量Prompt的“语言”和“模式”。它提倡使用模板、变量、多级标题等方式来编写结构清晰、可维护的Prompt。

抄法: 重点学习它的README.md,理解其结构化思想。然后模仿它的模板来构建你自己的、用于复杂任务的专属Prompt。适合进阶选手。

4.1.5 https://github.com/dair-ai/Prompt-Engineering-Guide

在Github用prompt搜出来的,恐怖的58kstar。

4.1.6 https://github.com/Acmesec/PromptJailbreakManual

越狱手册

4.2 建立个人/团队Prompt库

就像优秀的程序员都有自己的代码片段库。优秀的Prompt工程师也一样。

把作业抄成体系比什么都重要。

4.3 抽象作业为模板

成熟的CV工程师要运用抽象能力,将作业变成自己的。

抄来的作业:
“扮演一名字节跳动的产品经理,请根据我本周完成的【登录页面重构】和【用户数据分析】这两项工作,以及取得的【加载速度提升50%】的成果,生成一份给上级领导看的周报。要求逻辑清晰,突出重点。”

你的抽象模板化:

扮演一名【你的行业】的【你的职位】,请根据我本周完成的以下工作:
【在此处填写本周完成的工作项,用列表形式】以及取得的如下成果:
【在此处填写本周取得的关键成果】生成一份给【汇报对象,如:上级领导/团队】看的周报。
要求:
【在此处填写具体要求,如:逻辑清晰、突出重点、语言正式等】

4.4 评估与优化

~~从01的能力肯定是要有的,抄作业也得抄的明白。~

没有评估就不能优化,没有优化就不会变好。

4.4.1 评估

提示词可以通过评估集进行评估。

4.4.1.1 人工评估

让用户来评估,使用不同的Prompt生成结果,看哪个结果用户更满意。
需要设定一套评分标准,比如“相关性”、“准确性”、“流畅度”、“遵循指令程度”等,每一项都按1-5分打分。找多名评估员对Prompt生成的多个结果进行打分,取平均分。

4.4.1.2 自动化评估

速度快、成本低、可重复,是工程迭代的核心。
需要维护评估集(Evaluation Set)。

评估集是什么? 它是一个包含“输入”和“理想输出(参考答案)”的数据对列表。例如:

  • 输入: {“article”: “一篇很长的体育新闻…”}
  • 理想输出: {“summary”: “C罗打入了关键一球。”}

自动化评估的核心思路就是:用你的新Prompt处理评估集里的所有“输入”,然后将模型的“实际输出”与评估集里的“理想输出”进行比较,得出一个分数。

当然,都自动化了,打分可以让LLM依据评估集来判断,把问题、标准答案、被评估的LLM回答一起发给裁判LLM。

4.4.1.2.1 权威评估集

AI有推荐一些评估集,但是感觉落到具体LLM应用上,想要贴合业务,还是得靠自己/团队的评估集。

评估集名称链接/来源简介和特点
C-Eval点击访问 GitHub中文基础能力评测集。由上海交通大学发布,被认为是中文领域最权威的基础能力评测集之一。它涵盖了从中学到大学的52个学科,完全对标了著名的英文评测集MMLU。
CMMLU点击访问 GitHub中文大规模多任务语言理解评测。另一个高质量的MMLU中文对标项目,涵盖了67个主题,从基础学科到中国特色的法律、公务员考试等。
SuperCLUE点击访问官网中文通用大模型综合性评测基准。它不仅仅是一个数据集,更是一个评测体系,包含了对模型的十大基础能力(如代码、逻辑、安全、长文本等)的评估。
4.4.1.2.2 建立自己/团队的评估集

对于日常开发,具体业务场景,我们应该有特定的小型评估集。

(AI建议)应当有20~50个有代表性的“输入”和它们对应的“完美输出”。这个数据集是你的“考卷和标准答案”。

这里有一个问题,如果开发者不熟悉特定业务场景,不知道什么样的输出是完美的应该怎么办呢?

  • 1.找专家
    这是一个流程和协作的问题,不是技术问题。
    我们应当找领域“专家”。没有专家时,我们可以引导LLM成为专家。

这里有一些AI提出的沟通技巧供参考:
与专家对话:

  1. 进行访谈,而非提问: 不要直接问“完美的输出是什么样的?”。他们可能也无法用语言精确描述。你应该:
    • 展示示例: 运行一个非常粗糙的Prompt V0.1版本,生成几个结果(即使很烂),拿给他们看。人们对于“批评和修正”远比“从零创造”更在行。
    • 引导修正: 他们会说:“不对,我们从不会用‘亲’这个词称呼客户”、“这里漏掉了风险提示”、“这句话太生硬了,应该更委婉一点”。
    • 记录细节: 把这些修正意见全部记录下来。这些就是构建“完美输出”的第一批原材料。你的目标不是去猜测,而是去记录
  • 2.抄呗
    在很多行业,所谓的“完美输出”已经存在于各种文档之中了。
    分析现有文档与竞品。
  • 内部文档: 寻找公司的培训手册、客服SOP(标准作业程序)、优秀的邮件模板、历史报告等。这些都是“完美输出”的现成范例。
  • 公开信息: 分析你们公司或竞争对手的网站文案、市场推广材料、公开报告。它们的措辞、语气、结构,都代表了该行业认为的“好”的标准。

4.4.2 优化

使用评估集进行优化。
和开发其他工程一样,持续迭代、演进。

四步法循环:审阅 -> 识别 -> 修正 -> 验证 -> 审阅

  • 1.审阅结果
    拿到评估报告后,你首先要做的不是马上改Prompt,而是分类和审阅。

  • 2.识别模式
    不要孤立地看待每一个错误,而是要寻找错误的共性模式

  • 错误聚类: 是不是所有关于“价格计算”的输入都错了?是不是模型总是在处理超过500字的长文本时遗漏信息?是不是只要提到“法律风险”,模型的回答就过于保守和模糊?

  • 形成假设 (Form a Hypothesis): 针对你发现的模式,提出一个关于“为什么会出错”的假设。

    • 模式: 模型总是在输出JSON时,在最后一个键值对后多加一个逗号,导致JSON格式错误。
    • 假设: “我的Prompt中没有明确强调要遵循严格的JSON规范,模型可能受到了某些训练数据的影响。”
  • 3.修正提示词
    根据你的假设,对Prompt进行一次只改一个变量的精准修正。

  • 精准打击: 针对上面的假设,你的修正应该是:“…请将结果以严格的、不包含任何结尾逗号的JSON格式输出。” 而不是宽泛地改成“请注意你的格式”。

  • 建立版本控制: 将修改后的Prompt保存为 V2、V3… 这样你才能清晰地追踪哪次修改带来了效果。

  • 4.验证效果
    使用新版本的Prompt,重新在你的整个评估集上跑一遍。

  • 修复验证 (Fix Verification): 之前失败的案例现在是否通过了?

  • 回归测试 (Regression Testing): 之前成功的案例,有没有因为你的修改而“意外”失败?(这非常重要!)
    循环或结束: 如果新版本的总体得分显著提升,且没有引入新的问题,那么这次优化就是成功的。然后,你可以基于新的失败案例,开始新一轮的循环。

4.4.2.1 参考资料

下面这些是业内公认的高质量学习资源,它们详细讲解了上面提到的优化思想和具体技巧。

资源名称链接为什么推荐 (可以直接抄的“思路”)
LangSmith Prompt Engineering Cookbookhttps://docs.smith.langchain.com/prompt_engineering/how_to_guides

https://github.com/langchain-ai/langsmith-cookbook
LangChain官方“食谱”。这是LangChain官方推出的实践指南,专门教你如何使用LangSmith工具来进行评估和调试。它把我们上面讨论的循环流程变成了触手可及的工具,是开发者的首选必读
OpenAI - Prompt engineering Guide点击访问 OpenAI 文档“圣经”。这是来自模型创造者的官方指南。里面详细介绍了大量提升Prompt效果的策略,比如“给模型思考的时间(Chain-of-Thought)”、“提供参考文本”、“将复杂任务拆解”等。当你发现某种错误模式时,可以来这里寻找对应的修正策略。
Deeplearning.AI - “ChatGPT Prompt Engineering for Developers”点击访问课程网站吴恩达老师的免费“大师课”。这个短课程系统地讲解了提示词工程的核心原则和迭代开发的思想。它提供了大量可以直接运行的代码示例,让你亲手体验从一个坏Prompt到一个好Prompt的优化过程。
Cohere LLM University - Prompt Engineering点击访问 Cohere 文档优秀的“第三方教材”。Cohere作为大模型公司之一,其文档质量非常高。这一章详细介绍了Prompt的构成、调试技巧以及常见的错误类型,内容非常系统化,适合作为知识框架来学习。
4.4.2.2 速查表
当你发现的错误模式是…你可以尝试的优化策略是…
不遵循格式指令1. 把指令放在Prompt的最后
2. 使用###或XML标签等分隔符,把指令和内容清晰分开。
3. 提供一个Few-shot示例,让它模仿。
事实性错误 (幻觉)1. 明确告诉它“仅根据以下提供的上下文回答”。
2. 引入RAG (检索增强生成),先搜索再回答。
3. 指示它如果不知道答案,就明确说“我不知道”。
遗漏关键信息1. 使用Chain-of-Thought (CoT),让它“先思考,再回答”。例如:“第一步,请列出文章中的所有关键人物。第二步,总结他们之间的关系…”
回答过于宽泛或简略1. 增加对角色(Role)的刻画,比如“你是一位注重细节的资深分析师”。
2. 明确要求回答的
深度和广度
,比如“请提供至少三个论点,并分别进行阐述”。
添加不必要的开场白1. 在指令中明确:“直接回答问题,不要包含任何前言或客套话。”

相关文章:

  • 如何轻松实现多源混算报表
  • Linux运维-ansible-python开发-获取inventroy信息
  • CodeRider插件配置指南二
  • CVPR 2025现场直击
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • 工业协议转换新标杆:三格电子 Profinet IO-Link 主站网关赋能智能工厂
  • 【解决方案】Kali 2022.3修复仓库密钥无交互一键安装docker,docker compose
  • iOS Alamofire库的使用
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 商业智能BI 企业提高数据质量,应该怎样保障数据治理有效性
  • 【AI News | 20250613】每日AI进展
  • 练习小项目11:鼠标跟随小圆点
  • PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站
  • 健康管理实训室协同育人模式的实践与探索
  • 使用 Higress AI 网关代理 vLLM 推理服务
  • 浏览器播放监控画面
  • 【图纸管理教程-3】编码统一,效率倍增!解决一物多码问题
  • 【知识图谱构建系列2】LLM4KGC项目安装运行
  • 无人机噪音处理模块技术分析
  • 火车票网站建设/现在最好的营销方式
  • 西安招聘网/网页优化包括
  • 互联网品牌营销公司/windows优化大师提供的
  • 邢台做网站优化哪儿好/广州百度推广客服电话
  • 百度域名注册与解析服务/网站优化服务
  • 深圳商城网站建设/搜索引擎优化免费