Prompt Engineering 建模技巧
引言
在数学建模竞赛与研究中,大语言模型(LLM)已成为重要的辅助工具。然而,同一个模型在不同提示词(Prompt)下的表现可能天差地别——精心设计的Prompt能让AI输出结构清晰的建模思路,而模糊的Prompt往往只能得到泛泛而谈的回答。
Prompt Engineering(提示工程)是研究如何与大语言模型高效沟通的技术。对数学建模者而言,掌握Prompt Engineering意味着:
- 能快速获得高质量的问题分析和建模思路
- 能让AI生成可靠的数学推导和代码实现
- 能借助AI完成论文润色和结构优化
- 能将AI作为“虚拟队友“进行头脑风暴
本章将系统讲解Prompt Engineering的核心原理与技巧,并提供大量面向数学建模场景的实用模板。无论你使用的是ChatGPT、Claude还是其他大语言模型,这些技巧都普遍适用。
9.1 Prompt Engineering 基础原理
9.1.1 什么是Prompt Engineering
Prompt Engineering是设计和优化输入给大语言模型的文本指令的过程。它不是简单的“问问题“,而是一门通过结构化语言来精确控制AI输出质量、格式和深度的技术。
对建模者而言,可以做一个类比:Prompt就像给AI的“题目说明“——数学考试中题目的措辞直接影响学生的作答方向,同理,Prompt的设计直接决定AI的输出效果。
9.1.2 建模者需要了解的LLM原理
1. 自回归生成
LLM逐Token生成文本,每个新Token基于前面所有Token的概率分布选取。这意味着:
- 前文的质量直接影响后文的质量
- 给出清晰的结构提示,模型更容易遵循
- 输出的前几句话会“锚定“后续内容方向
2. 上下文窗口
模型一次能处理的文本长度有限(如128K Token)。建模任务中需要合理分配空间,长文本任务需要分段处理。关键信息应放在Prompt的开头或结尾——研究表明模型对首尾信息的关注度高于中间部分(注意力U型曲线效应)。
3. 知识边界
模型的知识来源于训练数据:对经典模型(线性规划、微分方程等)有较好掌握,但对冷门方法可能不足。因此始终需要验证AI输出的数学正确性。
9.1.3 核心概念
Token:模型处理文本的基本单位。中文字通常对应1-2个Token,英文单词对应1-4个Token。理解Token有助于估算API调用成本和控制Prompt长度。
Temperature:控制输出的随机性,是建模中最实用的参数:
- Temperature = 0:输出最确定,适合数学推导、代码生成
- Temperature = 0.3-0.7:平衡创造性与准确性,适合建模思路探索
- Temperature = 1.0+:高随机性,适合头脑风暴
建模建议:数学推导和代码生成使用低Temperature,创意探索阶段使用较高Temperature。
System Prompt:设定AI行为模式的全局指令,优先级高于用户消息。建模场景示例:
你是一位数学建模专家,具有以下特征:
- 精通优化理论、统计学、微分方程、图论等数学分支
- 熟悉MATLAB、Python科学计算生态
- 了解MCM/ICM、国赛等竞赛的评审标准
- 回答时注重数学严谨性,给出公式推导过程
Top-P / Top-K:控制模型生成时考虑的候选Token范围。Top-P=0.9表示从累积概率前90%的Token中采样。建模任务通常保持默认值即可,需要精确输出时可适当降低。
9.2 核心Prompt技巧
9.2.1 角色设定(Role Prompting)
角色设定是最基础也最有效的技巧之一。通过为AI分配专业角色,可以显著提升输出的专业性。
对比示例:
❌ 差的Prompt:
帮我分析一下城市交通流量优化问题。
✓ 好的Prompt:
你是一位在运筹学和交通工程领域有20年经验的数学建模专家,
曾多次指导学生获得MCM/ICM Outstanding奖项。
请从以下角度分析城市交通流量优化问题:
1. 该问题属于哪类数学模型(优化/仿真/预测等)
2. 可以采用的主要建模方法(至少3种)
3. 每种方法的优缺点和适用条件
4. 你推荐的建模路线及理由
复合角色设定——在团队建模中让AI扮演不同角色:
请分别从以下三个视角分析这个问题:
【视角1:数学家】关注模型的数学严谨性和理论基础
【视角2:工程师】关注模型的可计算性和实现难度
【视角3:评委】关注模型的创新性和论文表达
请逐一给出每个视角的分析。
9.2.2 少样本学习(Few-shot Learning)
通过给AI提供示例,引导它按照期望的格式和深度输出。
建模场景示例——变量定义:
请按照以下格式定义模型变量:
示例1:
问题:物流配送路径优化
变量定义:
- 决策变量:$x_{ij} \in \{0,1\}$,表示车辆是否从节点i到j
- 参数:$d_{ij}$ 节点距离,$Q$ 车辆最大载重
- 目标函数:$\min \sum_{i}\sum_{j} d_{ij} x_{ij}$
示例2:
问题:水库调度优化
变量定义:
- 决策变量:$u_t \geq 0$,第t时段放水量
- 状态变量:$V_t$ 第t时段末库容
- 参数:$I_t$ 入库流量,$V_{max}$ 最大库容
- 目标函数:$\max \sum_{t} P(u_t)$,P为发电功率函数
现在请处理:
问题:城市共享单车调度优化
变量定义:
Few-shot关键原则:示例要有代表性(覆盖不同类型),数量适中(2-5个),格式一致,难度递进。
9.2.3 思维链(Chain-of-Thought, CoT)
让模型展示推理过程——建模中我们不仅需要答案,更需要完整的推理路径。
对比示例:
❌ 不使用CoT:
求解以下线性规划的最优解:
max z = 3x₁ + 5x₂ s.t. x₁≤4, 2x₂≤12, 3x₁+5x₂≤25, x₁,x₂≥0
✓ 使用CoT:
请用单纯形法一步一步求解以下线性规划,
每步说明:(1)当前基可行解 (2)进基变量选择理由
(3)离基变量确定 (4)枢轴运算过程
max z = 3x₁ + 5x₂ s.t. x₁≤4, 2x₂≤12, 3x₁+5x₂≤25, x₁,x₂≥0
请从标准形开始,逐步展示完整求解表格。
Zero-shot CoT:仅需加“让我们一步一步分析“即可激活推理:
以下建模问题应该选择什么模型?让我们一步一步分析:
某城市需要在5个候选位置中选择若干建设充电站,
使得所有居民区到最近充电站的最大距离最小化...
9.2.4 自一致性(Self-Consistency)
对同一问题多次独立采样,取多数一致的答案。对建模关键决策点特别有用。
请对以下问题给出3种不同的建模方案,每种独立思考:
问题:预测未来7天某城市新能源汽车充电需求
方案1:[从时间序列角度思考]
方案2:[从机器学习角度思考]
方案3:[从机理建模角度思考]
最后综合比较,给出最终推荐。
如果三种方案结论一致,说明选择可靠;
如果不一致,分析分歧原因并给出最终建议。
9.2.5 树状思维(Tree-of-Thought, ToT)
思维链的扩展:在每个决策点探索多条路径,评估后选择最优方向继续推进。
问题:建立传染病传播预测模型
决策节点1——基础模型选择:
├── 方向A:经典SIR/SEIR模型(评估可行性,评分1-10)
├── 方向B:基于Agent的仿真模型(评估可行性,评分1-10)
└── 方向C:数据驱动时间序列模型(评估可行性,评分1-10)
[选择最优方向后]
决策节点2——模型改进方向:
├── 方向A1:加入空间传播因素
├── 方向A2:加入年龄分层结构
└── 方向A3:加入政策干预变量
每个节点给出评分和选择理由,最终形成完整建模路线图。
如果遇到死胡同,回溯到上一决策点选择次优方向。
9.3 数学建模专用Prompt策略
9.3.1 问题分析——MAPS框架
请使用MAPS框架分析以下数学建模问题:
【问题描述】[粘贴题目原文]
**M - Model(模型类型识别)**
- 核心数学本质是什么?(优化/预测/评价/调度...)
- 属于哪个数学分支?(运筹学/统计学/微分方程/图论...)
- 适用的经典模型有哪些?
**A - Assumption(假设梳理)**
- 题目明确给出的约束条件
- 需要额外添加的合理假设及其论证
**P - Parameter(参数与变量)**
- 决策变量、已知参数、需估计的参数
- 变量间的初步数学关系
**S - Solution(求解路线)**
- 推荐的求解方法、所需工具、计算复杂度、验证方案
9.3.2 模型设计——分层建模Prompt
请为以下问题设计分层数学模型:[问题描述]
**第一层:基础模型**
最简化版本(忽略次要因素),给出完整公式,分析局限性
**第二层:改进模型**
在基础模型上加入[具体因素],说明改进的数学表达,对比效果
**第三层:综合模型**
考虑所有主要因素的完整模型,给出数学规划形式,讨论求解策略
每层给出:数学公式、物理含义解释、模型优缺点。
9.3.3 代码生成——结构化Prompt
请用Python实现以下数学模型的求解代码:
【模型描述】目标函数:[表达式] 约束条件:[列表]
【代码要求】
- 使用的库:[numpy/scipy/cvxpy等]
- 结构:数据输入 → 模型构建 → 求解 → 结果可视化
- 关键步骤中文注释
- 打印最优解、目标函数值、求解时间
【测试数据】[提供小规模验证数据]
【额外要求】异常处理、支持CSV输入、图表保存为PDF
9.3.4 论文写作——摘要与润色
摘要生成:
请为以下建模论文生成中英文摘要:
【主题】[题目] 【模型】[列表] 【结果】[关键数值] 【创新点】[列表]
要求:中文300-500字,英文200-300词,
结构"问题-方法-结果-结论",含3-5个关键词。
段落润色:
请润色以下建模论文段落:[原文]
要求:学术风格、逻辑连接紧密、LaTeX格式数学符号、
简洁精准避免口语化、保持原文核心论点。
用【修改说明】标注主要改动及理由。
9.4 高级策略
9.4.1 Prompt链(Prompt Chaining)
将复杂任务分解为多个子任务串联执行,每环输出作为下一环输入。
建模全流程Prompt链:
第1环(问题分解):
请将以下建模问题分解为3-5个子问题:[问题]
说明每个子问题的数学本质、依赖关系、建议求解顺序。
第2环(模型建立)——基于第1环输出:
基于以下分解结果,为子问题X建立数学模型:[第1环输出]
给出完整数学规划形式:决策变量、目标函数、约束条件。
第3环(求解实现)——基于第2环输出:
请为以下数学模型编写Python求解代码:[第2环输出]
第4环(结果分析)——基于第3环输出:
模型求解结果如下:[第3环运行结果]
请进行:合理性验证、灵敏度分析、实际意义解读、局限性讨论。
设计原则:每环聚焦单一任务;信息传递完整;设检查点验证中间结果;允许回退重做。
9.4.2 反思式Prompt(Self-Reflection)
让AI对自己的输出进行批判性审查,发现并修正错误。
请为物流配送问题建立数学模型。
完成后,扮演严格的评审专家进行审查:
【正确性】目标函数是否正确?约束条件是否完备?
【可行性】假设是否过于理想化?可行域是否非空?
【实用性】求解规模在竞赛时间内是否可行?
【创新性】相比经典VRP有何改进?
发现的每个问题,给出具体修改建议和修正后版本。
9.4.3 对抗式Prompt(Adversarial Prompting)
主动让AI攻击自己的方案,找出漏洞和不足。
以下是我们的数学模型:[描述]
请扮演"恶意评委",找出所有漏洞:
1. 【数学漏洞】公式是否有错?推导是否严谨?
2. 【逻辑漏洞】假设是否自相矛盾?
3. 【实践漏洞】什么极端情况下会失效?
4. 【竞争劣势】与常见方法相比有何致命弱点?
对每个漏洞评估严重程度(高/中/低)并给出修补建议。
反驳式改进——进一步深化:
我的方案:[描述]
请先给出3个反对该方案的强有力论点(含数学论证),
然后针对每个反对论点给出回应和改进措施。
最终整合所有改进,输出改进后的完整方案。
9.4.4 元Prompt(Meta-Prompting)
让AI帮你设计更好的Prompt,是递归式的优化策略。
我正在参加建模竞赛,题目涉及图论最优路径问题。
需要一个Prompt让AI帮我做灵敏度分析。
请设计该Prompt,需满足:
- 包含清晰的角色设定和输出格式要求
- 引导系统性分析所有关键参数
- 输出包含定量灵敏度指标,适合直接放入论文
- 消除可能的歧义
请给出3个版本(简洁/标准/详细)及各版本适用场景,
并解释每个部分的设计意图。
9.5 建模专用Prompt模板库
以下模板可直接使用或根据具体问题微调。
模板1:问题快速定性
【角色】你是数学建模竞赛教练,精通各类赛题分类。
【任务】请对以下问题快速定性:[粘贴题目]
输出:1.问题类型 2.涉及数学领域(2-3个) 3.核心难点
4.推荐模型Top3 5.预估难度(1-5星) 6.文献检索关键词
模板2:假设条件构建
问题:[简述]。请构建建模假设,分三类:
1. 简化假设(降低复杂度):内容 | 合理性论证 | 影响程度
2. 基础假设(问题前提):内容 | 依据来源 | 若违反后果
3. 技术假设(求解要求):内容 | 必要性 | 验证方法
总数不超过8条,简洁可验证。
模板3:数学公式推导
已知条件:[列表]。需要推导:[目标公式]
要求:每步注明使用的定理或性质,LaTeX格式,
关键步骤给直觉解释,最终结果方框标注并说明实际含义。
如需额外假设请明确指出。
模板4:算法伪代码设计
问题:[数学规划形式] 规模:[N变量M约束] 时间限制:[X]
请给出:算法选择及理由、完整伪代码(初始化/迭代/终止条件)、
参数设置建议、时间复杂度分析、可能的加速技巧。
模板5:灵敏度分析
模型:[简述] 最优解:[数值] 关键参数:[列表]
请进行:单参数灵敏度(±10%/±20%/±50%)、参数重要性排序、
稳定性评估、临界值分析。表格与文字结合呈现。
模板6:模型验证
请全面验证以下模型:[描述]
维度:1.极端情况测试 2.量纲检验 3.退化验证(特殊情况退化为已知结论)
4.数值验证(小算例) 5.交叉验证 6.残差分析
每个维度给出具体步骤和判断标准。
模板7:论文Introduction撰写
题目:[X] 方法:[列表] 贡献:[创新点]
撰写500-800字Introduction,结构:
背景引入→问题重要性→现有方法不足→本文方法概述→结构导引
学术正式风格,逻辑递进,每段标注写作目的。
模板8:结果可视化方案
数据:[描述] 受众:建模竞赛评审 论文位置:[说明]
请建议:图表类型及理由、坐标轴设置、学术配色方案、
标注和图例设计、完整matplotlib代码。
要求:字体≥10pt,分辨率≥300dpi,含标题和图注。
模板9:模型改进方向探索
当前模型:[描述] 已知局限:[列表]
从5个角度探索改进:数学扩展、因素补充、方法升级、跨学科融合、实用价值增强
每个方向评估:改进难度、预期收益、实现时间、是否推荐竞赛中实施。
模板10:答辩准备
论文内容:[简述]
请准备:评委最可能的10个提问、每题30秒回答要点、
薄弱环节分析、防守策略(含备选方案)、一句话亮点提炼。
模拟一场5分钟答辩问答。
模板11:数据预处理方案
数据描述:来源[X],规模[行×列],类型[X],已知问题[缺失/异常/...]
请设计完整流程:EDA步骤、缺失值处理、异常值检测、
特征工程建议、标准化方案、Python代码实现。
说明每步对建模结果的潜在影响。
模板12:多目标优化处理
存在冲突的优化目标:[列出目标及冲突关系]
请分析:加权求和法(权重确定)、ε-约束法(边界设置)、
帕累托前沿法(求解与展示)各自的适用条件和优缺点。
推荐最适合的方法及Python实现要点。
模板13:模型对比决策
问题:[描述] 候选方法:方法A / 方法B / 方法C
用表格从以下维度对比:
| 维度 | 方法A | 方法B | 方法C |
数学严谨性、求解难度、数据需求、可解释性、评委偏好、实现时间
最终推荐及理由。
9.6 注意事项与常见错误
9.6.1 常见Prompt错误与改进
错误1:指令模糊
| 差的Prompt | 好的Prompt |
|---|---|
| 帮我建个模型 | 请为城市交通流量预测建立ARIMA模型,含阶数选择、参数估计、诊断检验 |
| 写点代码 | 用Python的scipy.optimize实现拉格朗日乘数法求解带等式约束非线性优化 |
| 分析一下结果 | 从最优解含义、经验值偏差、参数灵敏度、局限性四角度分析结果 |
错误2:上下文不足
❌ 差:请优化这个目标函数。
✓ 好:请优化以下目标函数:
min f(x) = x₁² + 2x₂² - x₁x₂
约束:x₁ + x₂ ≤ 10, x₁ ≥ 0, x₂ ≥ 0
背景:资源分配问题的成本最小化子问题,
x₁为A工厂产量,x₂为B工厂产量(万件)。
错误3:一次要求太多
❌ 差:请建立模型、写代码、分析结果、画图、写论文。
✓ 好(分步执行):
Step 1:请建立问题的数学模型(只需给出公式)
Step 2:[确认模型后] 请编写求解代码
Step 3:[代码运行后] 请分析这些结果
错误4:忽视输出格式
❌ 差:分析一下这几个方法的优缺点。
✓ 好:用表格对比,列:方法名 | 时间复杂度 | 解的质量 | 实现难度 | 推荐场景
9.6.2 数学正确性验证
AI推导可能出现符号错误、量纲不一致、条件遗漏等问题。应对策略:
推导完成后请逐行检查:
1. 每步变换是否可逆(若需要)
2. 等号/不等号方向是否正确
3. 求和/积分上下限是否正确
4. 最终结果量纲是否一致
5. 代入特殊值验证:x=0, x=1, x→∞时结果是否合理
9.6.3 代码可靠性
AI代码需要额外验证边界条件(空列表、零除、越界)、数值稳定性(大数溢出、精度丢失)、算法正确性。建议在Prompt中要求附带至少3个测试用例(含边界情况)和已知最优解的验证算例。
9.6.4 避免“幻觉“
LLM可能生成不存在的定理、公式或文献,这在建模中尤其危险:
- 不要直接引用AI给出的文献——必须自行查阅验证
- 不要直接使用AI声称的“已有结论“——查找原始来源
- 对数值结果保持怀疑——用简单算例独立验证
9.6.5 Prompt迭代优化策略
当初始Prompt效果不佳时:
策略1——增加约束:
初始:请给出建模思路。
改进:请给出建模思路,要求不少于3种方法,
每种给出优缺点,标注最推荐的,考虑竞赛72小时限制。
策略2——提供反例:
你之前的回答过于笼统。我不需要"取决于具体情况"这样的回答。
请明确选择一种方法,给出具体理由(含数学论证),给出完整实现步骤。
策略3——分解复杂度:如果回答质量下降,通常是任务过于复杂。将大任务拆分为2-3个子任务分别完成后合并。
策略4——温度调节:回答太保守则提高Temperature;不稳定或含错误则降低Temperature;对关键问题用不同Temperature多次生成,取最佳。
9.6.6 伦理与规范
在数学建模竞赛中使用AI工具需遵守以下原则:
- 遵守赛事规则:部分竞赛明确规定了AI工具的使用范围
- 标注AI辅助:在论文中如实说明使用AI的环节
- 理解而非复制:确保自己理解AI给出的所有内容
- 核实所有输出:不盲信AI,独立验证关键结论
- 保持学习态度:AI是辅助工具,核心能力仍需自身积累
建议:将AI视为“一位有时会犯错的顾问“——参考其建议,但最终决策和验证由你完成。
本章小结
Prompt Engineering是数学建模者与AI协作的核心技能。本章技巧可归纳为三个层次:
- 基础层:角色设定、格式控制、Few-shot引导
- 进阶层:思维链、自一致性、树状思维
- 高级层:Prompt链、反思式、对抗式、元Prompt
掌握这些技巧后,你将能够快速获得高质量的问题分析和建模方案,生成可靠的数学推导和求解代码,有效进行模型验证和改进,高效完成论文写作和答辩准备。
记住:好的Prompt是具体的、结构化的、有约束的。每次与AI交互前,花30秒思考“我到底想要什么输出“,往往能节省10分钟的反复修改。