大模型应用开发:Prompt工程方法论与Spring AI最佳实践(一)

一、简介

1.1 基本定义

Prompt是通过自然语言向大语言模型(LLM)传达的指令,用于引导模型执行特定任务或生成内容,如回答问题、撰写文本、生成代码等。提示工程利用预训练模型的能力,通过输入适当的提示,激发出所需的模型行为,从而顺利完成下游任务。

1.2 目标

Prompt是我们唯一可以和LLM交互的方式。应用层的一切技术架构——无论多复杂的记忆机制、知识检索或交互设计等,本质上都在服务于一个目标:构建一个能够完成特定任务的高质量Prompt。这就要求我们能够在LLM上下文长度的限制下,将当前任务最相关的指令、知识、历史对话等核心信息,以最优结构注入Prompt,从而激活LLM的预期能力。

二、核心原理

大模型应用场景的核心在于构造高质量的Prompt,我们有必要了解大模型底层对Prompt输出质量的影响。

2.1 大模型底层影响因素

2.1.1 神经网络的“黑箱”特性

  • 原理说明

大模型的决策过程无法通过传统的代码调试追溯,相同的输入可能产生不同输出,这是由神经网络的概率生成本质决定的。

示例:

用户:写一首春天的古诗
助手:
《春行即事》
新柳垂金线,东风扫旧尘。
莺啼千嶂晓,花发一溪春。
野径孤云没,山家远客亲。
偶然逢老衲,笑指绿初匀。
用户:写一首春天的古诗
《春晓即目》
薄雾收残雨,新晴破小寒。
柳烟团野色,桃浪簇溪滩。
苔径孤筇湿,风帘一桁宽。
偶然双燕子,飞入画栏干。

2.1.2 Token化处理机制

  • 原理说明

输入文本会被分割成Token(可能是词、子词或字符),直接影响模型对语义的理解边界。

示例:

深度神经网络 
分词 -> 深度#神经#网络
优化 -> “深度神经网络 ”

2.1.3 注意力机制的影响

  • 原理说明

模型通过自注意力机制为不同Token分配权重,Prompt的结构直接影响关键信息的捕获效率。

2.1.4 监督微调(SFT)数据偏向

  • 原理说明

    • 模型在不同任务上可能有着不同的训练数据量,这也导致在不同任务类型的Prompt上有着不同的响应质量。

    • 一般在模型训练时,准备的训练数据都有一定的风格,如果我们能够参考训练数据的结构,则能够更好的构造Prompt。

示例:

'明月装饰了你的窗子', '你装饰了别人的梦'
'星辰点亮了你的夜空','你点亮了某个人的希望'
'露珠滋润了晨曦的叶尖','你滋润了某个人的心田'
'琴弦震颤了风中的晚霞','你震颤了某个人的灵魂'

2.1.5 强化学习的优化

  • 原理说明

强化学习对特定任务的Prompt设计具有多维度的影响,其核心在于通过动态调整和优化模型的行为策略,使Prompt的引导效果更贴合任务需求。

  • 示例

    • 基于人类反馈的指令优化:当用户要求生成“李白的诗歌风格文本“时,模型会根据人类评分反馈优化Prompt中的风格约束词(如“豪放”、“浪漫”),使输出逐渐贴合目标风格。

    • 医疗问诊Prompt修正:  在医疗对话系统中,强化学习根据诊断准确率反馈,自动修正问诊Prompt的提问顺序。例如,初始Prompt可能直接询问“疼痛部位”,优化后调整为“先排除外伤史→定位疼痛类型→关联既往病史”,使得诊断准确率有了一定提升。

2.2 模型规范(Model Spec)

主流大模型在训练时都会尽量遵循一定的模型规范,尽量确保其输出结果始终符合开发者预设的伦理边界与合规性要求。接下来以最新的OpenAI模型规范来讲解其对Prompt设计的影响。

2.2.1 定义

1. 助手(Assistant) 

OpenAI系列的模型已经对格式化为对话的输入进行了微调,包括消息列表。在这些对话中,模型仅设计为扮演一个参与者,称为助手(Assistant)。

2. 对话(Conversation)

模型的有效输入是对话(Conversation),它由消息列表组成。每条消息都包含以下字段。

  • 角色 role (必须)

role指定每条消息的来源,可以确定在发生冲突时指令的权限。

  • system:OpenAI 添加的消息

  • developer:来自应用程序开发人员(也可能是 OpenAI)

  • user:来自最终用户的输入,或我们想要提供给模型的数据的 catch-all

  • assistant:从语言模型采样

  • tool:由某些程序生成,例如代码执行或 API 调用

  • recipient(可选):控制应用程序如何处理消息。recipient 可以是被调用 () 的函数的名称,用于 JSON 格式的函数调用;或工具的名称(例如 ),用于一般工具。recipient=functions.foorecipient=browser

  • content(必需):文本序列、不受信任的文本和/或多模式(例如,图像或音频)数据块。

  • settings(可选):一系列键值对,仅用于系统或开发人员消息,用于更新模型的设置。目前,我们正在构建对以下内容的支持:

  • max_tokens: 整数,控制模型在后续消息中可以生成的最大 Token 数。

  • end_turn(必需):一个布尔值,仅用于 Assistant 消息,指示 Assistant 是否希望停止执行作并将控制权返回给应用程序。

2.2.2 指令链

1. 指令链的层级结构

指令链定义了不同来源指令的优先级顺序,形成自上而下的权限覆盖机制:

  • 平台:由OpenAI设定,定义模型的基本安全、法律及道德底线,不可被覆盖。例如禁止生成涉及暴力、隐私侵犯或非法活动的内容。

  • 开发人员:允许开发者根据业务需求定制模型行为,但不得违反平台规则。例如API调用中设置特定响应格式或过滤敏感话题。

  • 用户:用户输入的具体需求,在符合上层规则的前提下优先响应。例如用户要求模型以特定风格生成文本。

  • 指南:默认行为指南,无明确指令时生效,可被更高层级隐式覆盖。例如默认保持中立客观的对话风格。

  • 无权限:助手和工具消息;其他消息中引用/不受信任的文本和多模式数据。

2. 冲突解决机制

当不同层级指令冲突时,模型遵循以下原则:

  • 平台指令绝对优先:任何开发者或用户指令若试图绕过安全底线(如生成有害内容),均会被拒绝。

  • 开发者指令覆盖用户指令:在API应用中,若开发者预设规则与用户输入冲突,以开发者指令为准。

  • 用户意图灵活处理:在安全范围内,模型优先响应用户需求,但需澄清模糊指令。例如用户要求“列出常见盗窃手段”时,模

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值