数据分析场景提示词模板(Data Analysis Prompt Templates)
用结构化模板帮助 LLM 从原始数据中提取洞察、生成图表描述和分析报告的提示词设计方法
通过结构化提示词策略引导 LLM 生成高质量、可运行的代码
内容摘要
代码生成场景提示是指在使用大语言模型生成代码时,通过精心设计提示词的结构、上下文和约束条件,让模型输出语法正确、逻辑清晰、符合项目规范的代码。它不是简单地告诉模型"帮我写个函数",而是把需求分析、技术约束、代码风格、输出格式等信息系统性地组织成一份"需求说明书",让模型在明确的约束空间内生成代码。
代码生成场景提示是指在使用大语言模型生成代码时,通过精心设计提示词的结构、上下文和约束条件,让模型输出语法正确、逻辑清晰、符合项目规范的代码。它不是简单地告诉模型"帮我写个函数",而是把需求分析、技术约束、代码风格、输出格式等信息系统性地组织成一份"需求说明书",让模型在明确的约束空间内生成代码。
代码生成提示之所以需要专门研究,是因为代码和自然语言有本质区别:自然语言允许模糊表达,代码必须语法精确、逻辑严密、依赖明确。2025 年 arXiv 上的研究("Prompt engineering and framework: implementation to increase code reliability")指出,代码生成任务需要严格遵守语法规则、逻辑正确性和领域特定约束,这使得通用的提示词技巧无法直接套用。
在 Agent 系统和 AI 辅助编程工具(如 GitHub Copilot、Cursor)中,代码生成提示是最高频的应用场景之一。开发者每天通过提示词让 LLM 生成数据处理脚本、API 接口、单元测试、代码重构等,提示词质量直接决定了生成代码能否"复制粘贴就能跑"。
代码生成提示词的效果取决于六个核心维度的配合,业界常用 CO-STAR 框架(由新加坡 GovTech 数据科学团队提出)来组织这些维度:
| 维度 | 英文 | 作用 | 代码生成中的具体表现 |
|---|---|---|---|
| 上下文 | Context | 交代背景信息 | 编程语言、版本、依赖库、运行环境 |
| 目标 | Objective | 明确要做什么 | 功能需求、输入输出定义、边界条件 |
| 风格 | Style | 约束代码风格 | PEP 8、命名约定、注释规范 |
| 语气 | Tone | 设定严谨程度 | 生产级代码 vs. 快速原型 |
| 受众 | Audience | 明确代码使用者 | 初级开发者 vs. 团队内部 vs. 开源社区 |
| 输出格式 | Response | 规定输出形式 | 完整函数 vs. 代码片段、是否含 Docstring |
上下文是代码生成的"舞台背景",告诉模型在什么技术栈下工作。一个完整的上下文应包含:
缺少上下文是代码生成质量不稳定的首要原因。同一个"写排序函数"的需求,在 Python 和 Rust 中、在性能敏感场景和快速脚本场景中,最优实现完全不同。
目标是"你要什么"的精确描述,应包含四个方面:
CO-STAR 框架本身不单独列出示例,但在代码生成场景中,Few-Shot(少样本提示)是最重要的杠杆之一。一个好的代码示例比三页文字描述更有效。示例应该:
代码生成提示的工作机制可以概括为"约束空间收窄"——通过逐层添加约束,将模型的输出可能性从"任意代码"收窄到"符合你要求的代码":
第 1 步:需求分析。 开发者明确要实现什么功能,涉及哪些边界条件和技术约束。这一步决定了提示词需要包含哪些信息。
第 2 步:提示词组装。 按 CO-STAR 框架将上下文、目标、风格、示例等信息组织成结构化提示词。使用分隔符(如 ###、=== 或 XML 标签)将不同部分明确区隔,帮助模型识别各段的作用。
第 3 步:推理与生成。 模型接收提示词后,在所有约束条件的交集范围内生成代码。如果使用了 Chain-of-Thought(思维链,让模型先描述实现思路再写代码),模型会先规划算法方案,再进行编码。
第 4 步:验证与迭代。 检查生成的代码是否语法正确、逻辑完整、符合规范。如果不符合,调整提示词(如增加约束、补充示例)后重新生成。
关键参数选择:代码生成任务应使用较低的 Temperature(温度参数,控制输出随机性,0.0-0.3),确保输出的确定性和可预测性。高 Temperature 会让代码出现不必要的随机变化。
图中的核心流转在于两个判断节点:是否包含 Few-Shot 示例决定了模型理解需求的精度,是否使用 Chain-of-Thought 决定了复杂任务中代码逻辑的清晰度。当验证未通过时,迭代回到提示词组装环节,形成"生成-验证-优化"的闭环。
以下示例展示代码生成提示词的核心结构——如何用 CO-STAR 框架组装一个完整的代码生成请求。
# 基于 openai>=1.0.0 验证(截至 2026-03)
import os
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# CO-STAR 框架组装代码生成提示词
code_gen_prompt = """
### Context(上下文)
使用 Python 3.10+,依赖 pandas>=2.0。代码遵循 PEP 8 规范。
### Objective(目标)
编写函数 clean_user_data(df: pd.DataFrame) -> pd.DataFrame,功能如下:
- 输入:包含 user_id, age, email 列的 DataFrame
- 处理:删除缺失值,过滤 age<0 或 age>150 的行,验证 email 格式
- 输出:清洗后的 DataFrame,重置索引
### Style(风格)
- 蛇形命名法(snake_case)
- 函数包含完整的类型提示和 Docstring
- 中文注释解释每步操作
### Response(输出格式)
返回完整可运行的 Python 函数,包含必要的 import 语句。
### Example(示例)
以下是类似任务的参考实现:
def clean_order_data(df: pd.DataFrame) -> pd.DataFrame:
\"\"\"清洗订单数据,删除无效记录。\"\"\"
# 删除缺失值
df = df.dropna()
# 过滤异常价格
df = df[df["price"] >= 0]
return df.reset_index(drop=True)
"""
# 调用 API,低温度确保代码确定性
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": code_gen_prompt}],
temperature=0.2,
max_tokens=800
)
print(response.choices[0].message.content)
上述代码中,提示词用 ### 分隔符将 CO-STAR 各维度显式标记,模型可以明确识别每段的作用。temperature=0.2 确保输出稳定可复现。示例部分提供了一个风格相近但功能不同的函数,引导模型模仿其代码结构。
| 概念 | 与代码生成提示的区别 | 更适合关注的重点 |
|---|---|---|
| 自然语言提示(NL Prompts) | 对输出格式容忍度高,允许模糊表达 | 文本生成、摘要、翻译等自然语言任务 |
| Copilot 自定义指令(Custom Instructions) | 是代码生成提示的项目级持久化形式 | 通过 .github/copilot-instructions.md 统一团队规范 |
| Fine-Tuning(微调) | 修改模型参数,效果更稳定但成本高 | 精度要求极高、任务固定、有大量标注代码时选择 |
| Agentic Code Generation(Agent 代码生成) | 模型不仅生成代码,还能自动测试、修复、迭代 | GitHub Copilot Agent Mode、Cursor Composer 等工具 |
核心区别:
| 常见误区 | 正确理解 |
|---|---|
| "提示词越长、细节越多,生成的代码越好" | 结构比长度更重要。一个组织清晰、包含高质量示例的简洁提示词,效果往往优于冗长但结构混乱的提示词。研究表明结构化框架(如 CO-STAR)比堆砌描述更有效。 |
| "提高 Temperature 能让代码更有创意" | 代码生成应使用低 Temperature(0.0-0.3)。高 Temperature 会让代码出现不必要的随机变化——变量名不一致、多余的逻辑分支、非标准的 API 用法——这些不是"创意"而是 Bug 来源。 |
| "给一个完全相同的示例效果最好" | Few-Shot 示例应与目标任务相似但不相同。完全相同的示例会让模型直接复制而不是理解模式;相似但不同的示例才能帮助模型学到可迁移的代码模式。 |
| "一次提示就能生成完美的生产代码" | 生产级代码生成是迭代过程:先生成初版代码,通过测试和审查发现问题,再调整提示词重新生成。GitHub Copilot 的 Agent Mode 就是将这个迭代过程自动化。 |
| "有了 Few-Shot 示例就不需要写任务说明了" | 任务说明和示例是互补关系。清晰的任务说明 + 少量高质量示例的组合,效果优于大量示例但缺少明确说明的情况。 |
参考答案:
CO-STAR 的六个维度是 Context(上下文)、Objective(目标)、Style(风格)、Tone(语气)、Audience(受众)、Response(输出格式)。在代码生成中,Context 和 Objective 最关键——Context 确定技术栈和约束,Objective 定义功能需求和输入输出,这两者缺失会直接导致生成的代码无法使用。
参考答案:
三个方向:(1) 在 Objective 中显式声明"必须包含 try-except 错误处理和 HTTP 异常返回";(2) 在 Few-Shot 示例中提供一个包含完整错误处理和类型提示的接口示例,让模型模仿其模式;(3) 在 Response 维度中明确要求"函数参数和返回值必须有类型注解,包含 Pydantic 模型定义"。如果问题仍然存在,可以使用 Chain-of-Thought 策略,先让模型列出"这个接口可能遇到的异常情况",再基于这个清单生成代码。
参考答案:
采用分层模板策略:(1) 基础层——创建通用的 CO-STAR 模板,包含团队统一的代码规范(注释风格、错误处理标准、Git 提交规范);(2) 语言层——针对 Python/Go/TypeScript 各建一套语言特定模板,包含该语言的命名约定、依赖管理方式、类型系统要求;(3) 场景层——针对常见任务(CRUD 接口、数据处理、单元测试)建立场景模板,每个模板包含 1-2 个高质量 Few-Shot 示例。同时,将这些模板固化为项目配置文件(如 .github/copilot-instructions.md 或 Cursor Rules),让 AI 工具自动加载,开发者只需写具体需求即可。
优先展示同分类且标签更接近的内容,方便继续串联学习。
用结构化模板帮助 LLM 从原始数据中提取洞察、生成图表描述和分析报告的提示词设计方法
面向写作、翻译、摘要三大文本生成任务的提示词模板设计方法与核心要素
通过结构化提示词模板,让 LLM 基于给定信息准确回答问题、减少幻觉