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

提示词工程

1.什么是提示词工程(Prompt Enginerring)

提示工程也叫【指令工程】

  • Prompt就是你发给大模型的指令,比如【讲个笑话】【用Python编个贪吃蛇游戏】

  • 貌似简单,但意义非凡

    • 【Prompt】是AGI时代的【编程语言】
    • 【Prompt工程】是AGI时代的【软件工程】
    • 【提示工程师】是AGI时代的【程序员】
  • 要理解

    • 为什么有的指令有效,有的指令无效
    • 为什么同样的指令有时有效,有时无效
    • 怎么提升指令有效的概率
    • 什么时候用提示工程解决更高效,哪些用传统编程更高效

2.使用Prompt的两种目的

  • 获得具体问题的具体结果,比如【该学Vue还是React】
  • 固化一套Promp到程序中,成为系统功能的一部分,比如【每天生成本公司的简报】【Al客服系统】

前者主要通过ChatGPT,ChatALL这样的界面操作

后者就要动代码了

3.Prompt调优

找到好的prompt是个持续迭代的过程,需要不断调优

如果知道训练数据是怎么样的,参考训练数据来构造prompt是最好的

  • 你知道它爱读红楼梦,就和它聊红楼梦
  • 你知道它是日漫迷,就夸它卡哇伊

不知道训练数据怎么办?

  • 【试】是常用方法,确实有运气因素,所以【门槛低,天花板高】

高质量prompt核心要点

  • 具体,丰富,少歧义

4.Prompt的典型构成

  • 角色:给Al定义一个最匹配任务的角色,比如:【你是一位软件工程师】
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,实践证明其对输出正确性有很大帮助
  • 输入:任务的输入信息,在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果

5.【定义角色】为什么有效?

  • 模型训练者并没有想到过会这样,完全是大家【把Al当人看】玩出的一个用法
  • 实在传得太广,导致现在的大模型训练数据里充满了角色定义,所以更有效了
  • 有一篇论文证实的现象,可以说明

大模型对prompt开头和结尾的内容更加敏感

先定义角色,其实就是在开头把问题域收窄,减少二义性

大模型应用架构师想什么?

  • 怎么样能更准确?让更多的环节可控
  • 怎么样能更省钱?减少prompt长度
  • 怎么样让系统简单好维护?

6.思维链

大模型的“思维链”(Chain-of-Thought, CoT) 是一种通过显式引导模型分步骤思考的技术

它的核心思想是让大模型在回答问题或生成内容时,模拟人类的推理过程,将问题拆解为多个中间步骤,并逐步推导出最终答案

大模型虽然擅长生成文本,但在处理需要多步推理的问题时容易跳步或犯错

  • 普通提问
    “小明有3个苹果,小红给了他2个,之后吃了1个,还剩几个?”
    模型可能直接回答“4”,但中间步骤可能不清晰。

  • 思维链提示:

    “请逐步思考并写出计算过程:小明有3个苹果……”

    模型输出:

    1. 初始苹果数 = 3
    2. 小红给的苹果 = 2 → 总数 = 3 + 2 = 5
    3. 吃掉的苹果 = 1 → 剩余 = 5 - 1 = 4
      最终答案:4

思维链的挑战

  1. 依赖提示设计
    • 不恰当的引导词可能导致模型分步不合理。
    • 需要针对不同任务优化提示模板。
  2. 计算成本增加
    • 分步生成可能延长响应时间,尤其是长文本任务。
  3. 模型本身的限制
    • 模型可能无法完全模拟人类逻辑,中间步骤仍可能出现跳跃或错误。

7.自洽性

自洽性”(Self-Consistency)通常指模型在生成内容或推理过程中保持内部逻辑一致性的能力

它是确保模型输出可信、可靠的关键因素,尤其在需要多步推理或复杂问题解决的场景中至关重要

自洽性的重要性

  1. 提升可靠性
    • 在数学、代码生成等任务中,自洽性确保每一步推导正确,最终结果可信。
    • 示例:
      问题:“证明勾股定理”
      若模型在步骤中误用面积公式但未自洽检查,结论会出错;自洽性可触发修正。
  2. 减少幻觉(Hallucination)
    • 自洽性迫使模型基于已有信息或逻辑推导生成内容,而非随机编造。
    • 示例:
      问:“《红楼梦》的作者是谁?”
      自洽模型不会回答“莎士比亚”,而是基于知识库确认正确答案为曹雪芹。
  3. 增强可解释性
    • 自洽的推理过程让用户更容易追踪错误来源,提升信任度。

自洽性的实现方式

  1. 提示工程
    设计引导模型自我验证的提示词,例如:
    • “请先列出解题步骤,再检查每一步是否合理,最后给出答案。”
    • “如果发现矛盾,请重新推导。”
  2. 模型架构改进
    • 通过强化学习(RLHF)训练模型识别并修正自身逻辑错误。
    • 引入知识图谱或外部工具(如计算器)辅助验证。
  3. 后处理校验
    对模型输出进行规则检查或逻辑验证(如数学公式的符号运算)。

自洽性的挑战

  1. 复杂场景下的失效
    • 在开放性问题(如创意写作)中,过度强调自洽性可能限制创造力。
  2. 计算成本高
    • 自洽性需要多次推理或验证步骤,可能延长响应时间。
  3. 模型本身的局限性
    • 大模型依赖统计模式匹配,而非真实逻辑推理,可能无法完全避免矛盾。

实际应用示例

  1. 数学解题
    • 无自洽性:直接给出答案“x=5”,但中间步骤忽略负号导致错误。
    • 有自洽性
      步骤1:方程化简为 2x + 3 = 13 → 2x = 10 → x=5
      验证:代入原方程,左边=2 * 5+3=13,等于右边,答案正确。
  2. 代码生成
    • 无自洽性:生成代码时忽略变量作用域,导致运行时错误。
    • 有自洽性
      步骤1:定义函数输入参数。
      步骤2:检查变量是否在作用域内。
      步骤3:生成代码并验证逻辑。

8.思维树(ToT)

大模型的“思维树”(Tree-of-Thought, ToT)是一种比“思维链”(Chain-of-Thought, CoT)更复杂的推理框架,旨在通过树状结构组织多步推理过程,让模型能够更灵活地探索多种解题路径,并在过程中动态剪枝和优化。

它是近年来为解决复杂推理问题提出的新方法,尤其适用于需要多阶段决策、回溯修正的任务(如数学证明、策略游戏、创造性写作)。

思维树的核心思想

  1. 树状结构建模推理过程
    • 节点:表示一个中间状态(如部分答案、假设、中间结论)。
    • :表示从一个状态到另一个状态的推理步骤(如尝试一种解题方法)。
    • 分支:允许模型在多个可能的推理路径上并行探索,最终选择最优路径。
  2. 动态探索与剪枝
    • 模型在生成答案时,会像人类一样尝试多种可能性(例如不同的解题思路),并评估哪些路径更可能成功。
    • 如果某条路径明显错误(如数学推导矛盾),模型会主动“剪枝”放弃该分支,避免无效计算。

思维树 vs 思维链*

特性思维链(CoT)思维树(ToT)
结构线性步骤(一步一步推导)树状结构(多路径探索与回溯)
灵活性单一路径推理支持多分支尝试和动态调整
容错性跳步可能导致错误扩散错误路径可被剪枝,减少负面影响
适用场景简单逻辑推理(如数学计算)复杂多阶段任务(如策略规划、创造性问题)

思维树的工作流程

以解决一道数学题为例:
题目​:“用3、5、7、9四个数字组成一个算式,使结果等于24(每个数字只能用一次)。”

  1. 根节点:初始问题(目标:用四个数字得到24)。

  2. 第一层分支:尝试不同运算组合(如加减乘除、括号优先级)。

    • 分支1:3 × (9 - (7 - 5)) → 计算结果是否符合?
    • 分支2:(7 - 5 ÷ 3) × 9 → 是否可行?
  3. 评估分支:计算每条路径的结果,判断是否接近目标。

  4. 剪枝:若某分支明显错误(如结果远大于24),放弃该路径。

  5. 最终路径:找到正确解法(如分支1的结果为24)。

思维树的优势

  1. 复杂问题解决能力
    • 在需要多步试错的任务(如数独、密码破解)中,ToT能系统性地探索可能性,而非依赖单一路径。
  2. 动态调整能力
    • 如果某条路径走不通,模型可回溯到上一节点,尝试其他分支(类似人类的“换个思路”)。
  3. 减少幻觉(Hallucination)
    • 通过剪枝无效分支,降低模型生成不合理中间结论的概率。

实现思维树的技术挑战

  1. 计算成本高
    • 多路径探索需要大量计算资源,尤其是当分支数量指数级增长时。
  2. 评估函数的设计
    • 如何高效判断一个分支是否值得继续?需要结合领域知识或外部工具(如数学验证器)。
  3. 与模型架构的兼容性
    • 现有大模型(如GPT-4)原生支持线性生成,需通过提示工程或微调适配树状推理。

实际应用场景

  1. 数学与逻辑难题
    • 解决需要多步骤试错的数学题(如奥数题、逻辑谜题)。
  2. 策略游戏
    • 围棋、象棋等游戏中模拟多步走法并评估胜率。
  3. 代码生成与调试
    • 生成代码时尝试多种算法路径,并通过测试用例剪枝错误方案。
  4. 创造性写作
    • 构建故事情节时探索不同分支,最终选择最优叙事线。

示例对比:思维链 vs 思维树

  • 思维链(线性推理)
    *“尝试用3×(9−(7−5))计算:
    1. 先算括号内:7−5=2
    2. 再算9−2=7
    3. 最后3×7=21 → 结果错误,需重新思考。”*
      (仅一条路径,错误后需从头开始)
  • 思维树(多分支探索)
    “分支1:3×(9−(7−5))=21 → 错误;
    分支2:(7−5÷3)×9≈24 → 接近目标;
    分支3:3×5 + 9 −7=27 → 错误。
    最终选择分支2并优化参数。”

    (多路径尝试,动态剪枝)

9.提示工程经验总结

  • 别急着上代码,先尝试用prompt解决,往往有四两拨千斤的效果
  • 但别迷信prompt,合理组合传统方法提升确定性,减少幻觉
  • 想让A1做什么,就先给它定义一个最擅长做此事的角色
  • 用好思维链,让复杂逻辑/计算问题结果更准确
  • 防御prompt攻击非常重要

后记

学习笔记产出,如有错误还望指针

相关文章:

  • 牛客KY257 日期累加
  • 逆向工程的多层次解析:从实现到领域的全面视角
  • Spark核心知识总结
  • 2025年汽车加气站操作工证考试内容
  • html元素转图像之深入探索 html - to - image:功能、应用与实践
  • 探索原生JS的力量:自定义实现类似于React的useState功能
  • popupwindow拦截返回点击
  • 学习笔记083——Java Stream API
  • 第七天 开始Unity Shader的学习之Unity中的基础光照之高光反射光照模型
  • S7-1200 PLC热电偶和热电阻模拟量模块
  • java基础-修饰符
  • Jakarta EE 11发布:云原生Java企业应用的新标准
  • Android Studio Narwhal | 2025.1.1新功能
  • Python3笔记之号称替代pip的uv包管理器
  • 01.02、判定是否互为字符重排
  • H3C的MSTP+VRRP高可靠性组网技术(MSTP单域)
  • Adam为什么能加速收敛和自适应学习率?
  • 2025.04.05-美团春招第四题
  • 【大数据生态】Hive的metadata服务未开启
  • 一种单脉冲雷达多通道解卷积前视成像方法【论文阅读】
  • 企业网站前端模板下载/网站推广优化之八大方法
  • 阿里云服务器url做网站/韩国seocaso
  • 校园网共青团网站建设方案/苏州手机关键词优化
  • 自己做网站开发/百度广告投诉电话客服24小时
  • 英雄联盟视频网站源码/网络舆情分析
  • 免费空白ppt模板下载/宁波seo链接优化