跳转至

Prompt 工程技巧

一句话说明

Prompt 工程就是"会提问的艺术"——同样的 AI 模型,换一种提问方式,回答质量可以天差地别。掌握 Prompt 技巧,让 AI 从"随便回答"变成"精准回答",是生信工程师用好 AI 编程助手的核心技能。


1. 核心概念

什么是 Prompt 工程

  • 定义:Prompt Engineering(提示词工程)是设计和优化给 AI 的输入文本(提示词/指令),让 AI 生成更准确、更有用的输出的技术。
  • 白话比方:AI 就像一个超强的实习生,什么都懂一点但不知道你具体要什么。Prompt 工程就是学会"怎么给实习生布置任务"——你说得越清楚,他干得越好;你说得模糊,他就瞎猜。

为什么同样的 AI 不同提问效果差很多

原因 白话解释
AI 没有读心术 它只能根据你字面写的内容来推理,你脑子里想的它猜不到
上下文决定方向 就像你去饭馆只说"来一碗面"和"来一碗不要辣的、多放醋的手擀面",结果完全不同
输出空间太大 AI 面前有无数种"合理回答",你的 Prompt 就是帮它缩小范围、锁定目标
角色影响风格 告诉 AI "你是生信专家"和不说,回答的专业度差很多

2. 基础技巧(五大招)

技巧 1:明确指令(Clear & Specific)

核心原则:告诉 AI 你具体要什么,而不是给一个模糊的方向。

白话比方:像发外卖订单一样写 Prompt——不要说"给我来点吃的",要说"一份宫保鸡丁,微辣,米饭加量"。

坏例子 好例子
帮我写个 Python 脚本 用 Python3 写一个脚本,读取 metaphlan4 的物种丰度表(TSV 格式),过滤掉相对丰度 < 0.01% 的物种,输出过滤后的表格为 CSV 文件。要求有 argparse 参数解析和详细中文注释。
解释一下 PCoA 用中文解释 PCoA(主坐标分析)的原理,假设我是一个只学过高中数学的生物系学生。请用一个日常生活的类比来帮助理解,然后给出在微生物多样性分析中的具体应用场景。

技巧 2:提供上下文(Context)

核心原则:告诉 AI 背景信息,让它理解你的具体场景。

白话比方:你去医院看病,不能只说"我不舒服",你得说"我肚子痛了三天,吃过什么东西,之前有什么病史"。

坏例子 好例子
我的 LEfSe 结果怎么看 我用 LEfSe 比较了 T2D 患者(n=50)和健康对照(n=50)的肠道菌群差异,LDA 阈值设为 2.0。结果发现了 15 个差异显著的分类单元。请帮我解读这个结果:哪些指标最重要?LDA score 代表什么?怎么判断结果的可靠性?

技巧 3:指定输出格式(Format)

核心原则:明确告诉 AI 你想要什么格式的输出。

白话比方:考试时老师说"请用表格作答"和"随便答",学生写出来的东西完全不同。

# 格式指定示例

请按以下格式输出:

## 工具名称
- **用途**:一句话说明
- **输入**:需要什么文件
- **输出**:会产生什么结果
- **常用参数**:列出 3-5 个最常用参数及含义
- **示例命令**:给一个可以直接复制运行的命令

技巧 4:角色设定(System Prompt / Role Playing)

核心原则:给 AI 一个身份,它就会从那个身份的角度来回答。

白话比方:你让一个演员演医生,他说话就会像医生;你让他演老师,他就像老师。AI 也一样。

坏例子 好例子
什么是宏基因组 你是一位有 10 年经验的宏基因组研究员,同时也是一个擅长用白话教学的老师。请向一个刚入门的生物系学生解释什么是宏基因组分析,包括它和扩增子测序(16S)的区别。每个专业术语都请用括号加白话解释。

技巧 5:分步骤思考(Chain of Thought, CoT)

核心原则:让 AI "一步一步想",而不是直接给最终答案。

白话比方:就像解数学题要写解题过程一样——你让 AI 写出思考过程,它就不容易犯粗心错误。

两种用法

1. Zero-shot CoT(最简单,加一句话就行)

请问 Kraken2 和 MetaPhlAn4 在物种注释上各自的优缺点是什么?
哪个更适合低丰度物种的检测?

请一步一步分析,先对比原理,再对比精度,最后给出建议。

2. Few-shot CoT(给示例引导推理过程)

问:Shannon 多样性指数为 2.5,Simpson 指数为 0.85,这个样本的多样性高还是低?
分析过程:
1. Shannon 指数一般范围 1.5-3.5,2.5 属于中等偏上
2. Simpson 指数范围 0-1,越接近 1 多样性越高,0.85 算较高
3. 两个指标一致指向多样性较高
结论:这个样本的微生物多样性处于中高水平。

问:Shannon 指数 1.2,Simpson 指数 0.45,这个样本多样性如何?
请按上面的分析过程回答。

3. 进阶技巧

3.1 Few-shot 示例(少样本学习)

定义:在 Prompt 里给 AI 几个"标准答案示例",让它模仿着来。

白话比方:就像教小孩写字,你先写几个给他看,他照着写就写得好。不给示例就是"零样本"(Zero-shot),给了就是"少样本"(Few-shot)。

生信场景示例——让 AI 帮你写标准化的工具说明:

请按以下格式描述生信工具:

示例 1:
工具:FastQC
类别:质控
功能:检查测序数据的质量,包括碱基质量分布、GC 含量、接头污染等
输入:FASTQ 文件
输出:HTML 质量报告

示例 2:
工具:Trimmomatic
类别:质控
功能:去除测序接头和低质量碱基,生成干净的 reads
输入:FASTQ 文件
输出:修剪后的 FASTQ 文件

现在请描述:
工具:MetaPhlAn4

3.2 自我反思 / 自我纠错(Reflexion)

定义:让 AI 自己检查自己的回答,找出可能的错误并修正。

白话比方:考试做完了再检查一遍——你让 AI "交卷前再检查一下",它真的会发现错误。

请帮我写一个 Python 函数,计算 Shannon 多样性指数。

写完后请自己检查:
1. 公式是否正确(Shannon index = -sum(pi * ln(pi)))
2. 边界情况:如果某个物种丰度为 0 怎么办?log(0) 会不会报错?
3. 输入验证:丰度总和是否为 1?如果不为 1 要不要自动归一化?
4. 给出修正后的最终版本

3.3 思维链(CoT)vs 思维树(ToT)

对比维度 思维链 CoT 思维树 ToT
英文全称 Chain of Thought Tree of Thoughts
白话比方 解题写过程,一步接一步往下走 像下棋一样,每步考虑多种走法,选最好的那个走
思考方式 线性:A → B → C → 答案 树状:A 分出 B1/B2/B3,各自往下推,选最优路径
适用场景 大部分逻辑推理、代码编写 需要探索多种方案的复杂决策(如实验方案设计)
实际使用频率 非常高,日常够用 较少,面试知道概念即可

ToT 的 Prompt 示例(了解即可):

我要设计一个宏基因组的分析流程。请用三位不同方向的专家来讨论:
- 专家 A:擅长质控和预处理
- 专家 B:擅长物种注释和功能分析
- 专家 C:擅长统计分析和可视化

每位专家先提出自己负责部分的方案,然后互相评审、讨论优缺点,最后综合成一个最优方案。
如果某位专家发现自己的方案有明显问题,就主动退出讨论。

3.4 结构化输出(JSON / Markdown)

核心思路:让 AI 的输出直接可以被程序解析或直接贴到文档里。

请将以下宏基因组分析流程的工具信息输出为 JSON 格式:

{
  "pipeline_name": "宏基因组标准分析流程",
  "steps": [
    {
      "step": 1,
      "name": "质控",
      "tools": ["FastQC", "Trimmomatic"],
      "input": "raw FASTQ",
      "output": "clean FASTQ"
    }
  ]
}

请补充完整后续步骤(去宿主、物种注释、功能注释、多样性分析)。

4. 生信场景实战 Prompt 模板

场景 1:让 AI 写生信脚本

坏例子

帮我写个脚本分析菌群数据

问题:不知道要什么语言、什么数据、什么分析、输出什么格式。AI 只能瞎猜。

好例子

请用 Python3 写一个脚本,完成以下任务:

背景:我有 MetaPhlAn4 输出的物种丰度表(merged_abundance_table.txt),
格式是 TSV,行是物种名(类似 k__Bacteria|p__Firmicutes|...),列是样本名。

需求:
1. 读取该表格,只保留种水平(species level,即含 s__ 的行)
2. 过滤掉在所有样本中最大相对丰度 < 0.01% 的物种
3. 计算每个样本的 Shannon 多样性指数
4. 输出过滤后的丰度表(CSV)和 Shannon 指数表(CSV)

要求:
- 使用 pandas 处理数据
- 用 argparse 做参数解析(输入文件、输出目录、丰度阈值可调)
- 每个关键步骤加中文注释
- 包含异常处理(文件不存在、格式错误等)

场景 2:让 AI 解释代码

坏例子

这段代码什么意思
[粘贴一大段代码]

问题:没说你的水平、想了解到什么深度、哪部分看不懂。

好例子

我是生信初学者,Python 基础薄弱。请逐行解释下面这段代码的含义。

要求:
1. 每行代码后面加 # 注释,用中文白话解释
2. 遇到专业函数(如 pd.pivot_table),请解释它做了什么,
   用一个日常生活的类比来帮助理解
3. 最后用一段话总结整段代码的整体逻辑(做了什么事、输入是什么、输出是什么)

代码:
```python
import pandas as pd
from scipy.spatial.distance import braycurtis
from skbio import DistanceMatrix
from skbio.stats.ordination import pcoa

df = pd.read_csv("species_abundance.tsv", sep="\t", index_col=0)
dm = DistanceMatrix.from_iterable(df.T.values, metric=braycurtis, keys=df.columns)
pc = pcoa(dm)
pc.samples[["PC1","PC2"]].to_csv("pcoa_results.csv")
### 场景 3:让 AI 帮你 debug

**坏例子**:
我的代码报错了,怎么修
> 问题:没有代码、没有报错信息、没有环境信息。AI 完全无从下手。

**好例子**:
我的 Python 脚本报错了,请帮我诊断并修复。

环境信息: - Python 3.9,conda 环境 bioinfo - pandas 1.5.3, scipy 1.10.1

报错代码(第 23 行出错):

from scipy.spatial.distance import braycurtis
import numpy as np

data = pd.read_csv("abundance.csv", index_col=0)
distances = []
for i in range(len(data.columns)):
    for j in range(i+1, len(data.columns)):
        d = braycurtis(data.iloc[:, i], data.iloc[:, j])
        distances.append(d)

完整报错信息:

ValueError: Input vector should be 1-D. Got shape (150,1).

请: 1. 解释这个报错是什么意思(用白话) 2. 定位是哪一行、哪个变量导致的 3. 给出修复后的代码 4. 解释为什么会出现这个问题,以后怎么避免

### 场景 4:让 AI 解读分析结果

**坏例子**:
我的 p 值是 0.03,这说明什么
> 问题:不知道做的什么分析、比较了什么、样本量多大、有没有做多重校正。

**好例子**:
请帮我解读以下 LEfSe 分析结果:

实验设计: - 分组:T2D 患者(n=50) vs 健康对照(n=50) - 数据:16S rRNA 测序,物种水平丰度表 - 参数:Kruskal-Wallis p < 0.05,LDA score > 2.0

Top 5 结果: | 分类单元 | LDA score | p-value | 富集组 | |----------|-----------|---------|--------| | Bacteroides vulgatus | 4.2 | 0.001 | T2D | | Faecalibacterium prausnitzii | 3.8 | 0.003 | 健康 | | Roseburia intestinalis | 3.5 | 0.008 | 健康 | | Prevotella copri | 3.1 | 0.012 | T2D | | Akkermansia muciniphila | 2.8 | 0.023 | 健康 |

请从以下角度解读: 1. 这些结果有没有生物学意义?(结合已有文献) 2. LDA score 的大小代表什么? 3. 这个分析有什么局限性? 4. 下一步应该做什么验证?

### 场景 5:让 AI 模拟面试

**坏例子**:
你当面试官问我问题
> 问题:不知道什么岗位、什么水平、要什么风格。

**好例子**:
请模拟一场生物信息工程师的面试,具体设定如下:

你的角色:某基因组学公司的高级生信工程师面试官,风格严谨但友善 我的背景:2026 届应届生,硕士,做过宏基因组方向的毕业课题 (2型糖尿病肠道菌群分析 + 随机森林建模) 岗位:宏基因组方向生信工程师

规则: 1. 一次只问一个问题,等我回答后再问下一个 2. 我回答后,请先点评我的回答(指出好的地方和不足) 3. 如果我回答不上来,给出参考答案 4. 从基础到进阶,共问 8 个问题 5. 问题类型要覆盖:Linux 基础、流程工具、统计方法、项目经验 6. 最后给出总体评价和改进建议

请从第一个问题开始。

---

## 5. AI 编程助手的 Prompt 技巧(Claude Code / OpenCode 专用)

### 5.1 CLAUDE.md / AGENTS.md 的作用

在使用 Claude Code 或 OpenCode 这类 AI 编程助手时,项目根目录的 `CLAUDE.md`(或 `AGENTS.md`)文件就是你给 AI 的"项目说明书"。

**白话比方**:就像你给新来的实习生一份"入职手册"——里面写清楚了项目是干什么的、代码怎么组织的、有什么需要注意的。AI 每次开始工作前都会先看这份手册。

**一个好的 CLAUDE.md 应该包含**:

```markdown
# 项目说明

## 项目背景
- 这是一个宏基因组分析项目
- 研究 2 型糖尿病患者的肠道菌群

## 项目结构
- scripts/ - 分析脚本
- data/ - 输入数据(不要修改)
- results/ - 输出结果

## 技术栈
- Python 3.9, R 4.3
- conda 环境:bioinfo(生信分析)、t2d_ml(机器学习)

## 编码规范
- 所有脚本加详细中文注释
- 使用 argparse 做参数解析
- 输出文件统一放 results/ 目录

## 用户偏好
- 我英语和编程基础薄弱,请用中文解释
- 专业名词请加白话解释

5.2 怎么写好 Rules 文件

Rules 文件是给 AI 编程助手设定的"工作守则"。它和 CLAUDE.md 的区别是: - CLAUDE.md:项目级别的上下文信息("这个项目是什么") - Rules:行为规范和偏好("你应该怎么做")

# 工作规则

## 代码风格
- Python 代码遵循 PEP 8
- 变量名使用英文,但注释用中文
- 每个函数写 docstring

## 沟通风格
- 所有解释用中文
- 每个专业名词加括号白话解释
- 用类比帮助理解复杂概念

## 安全规则
- 不要删除 data/ 目录下的原始文件
- 修改脚本前先备份
- 不要安装未经确认的包

## 自主运行
- 收到长任务时直接执行完毕再汇报,不要中途确认
- 遇到小问题自己判断解决,只有重大决策才问我

5.3 @文件引用技巧

在 AI 编程助手中,可以用 @文件名 来引用项目中的文件,让 AI 直接看到文件内容:

请查看 @scripts/diversity_analysis.py 这个脚本,
帮我添加 Bray-Curtis 距离矩阵的计算功能。

输入输出格式参考 @scripts/alpha_diversity.py 的风格。

技巧总结

技巧 说明
引用代码文件 @scripts/xxx.py 让 AI 直接读取文件内容
引用数据文件 @data/sample_metadata.tsv 让 AI 了解数据格式
引用配置文件 @config.yaml 让 AI 了解项目配置
引用结果文件 @results/lefse_output.txt 让 AI 帮你解读结果

6. 常见误区

误区 1:一次塞太多任务

错误做法

帮我写质控脚本,然后做物种注释,再做多样性分析,最后画图,
还要写一个报告总结所有结果。

问题:任务太多太杂,AI 容易顾此失彼,每个部分都做不好。

正确做法:把大任务拆成小步骤,一步一步来。

误区 2:不给错误信息就让 AI debug

错误做法我的脚本跑不了,帮我修

正确做法:把完整报错信息、相关代码段、环境信息都贴上。

误区 3:盲目信任 AI 的输出

问题:AI 可能会"一本正经地胡说八道"(幻觉问题/Hallucination)。

正确做法: - 涉及生物学结论的,一定要查文献验证 - 涉及代码的,一定要实际运行测试 - 涉及统计方法的,确认公式和前提假设是否正确

误区 4:忽略 Prompt 的迭代

问题:第一次 Prompt 效果不好就换模型或放弃。

正确做法: - AI 回答不好时,先优化你的 Prompt,加更多细节、换个角度 - 用"追问"来逐步细化:"你说的 XX 能展开讲讲吗?""能给个具体代码示例吗?"

误区 5:用 AI 完全替代自己思考

问题:完全复制 AI 的代码和结论,自己不理解原理。

正确做法:AI 是教练/助手,不是替身。核心逻辑要自己理解,面试时别人问你"为什么这样做"你得能答上来。

误区 6:给 AI 过度设限

问题:对于 2025+ 的推理模型(如 Claude Opus/Sonnet, GPT-o 系列),仍然使用"请一步一步思考"这种强制 CoT。这些模型内置了推理能力,过度引导反而可能干扰它的最优推理路径。

正确做法:对于推理模型,直接清晰描述任务即可;对于基础模型(如 GPT-3.5),才需要显式 CoT 引导。


7. 面试怎么答

Q1:什么是 Prompt 工程?为什么重要?

参考答案

Prompt 工程是设计和优化给大语言模型(LLM)的输入提示的技术。它之所以重要,是因为同一个模型对不同的提示会产生截然不同的输出质量。在生信工作中,好的 Prompt 能让 AI 写出更准确的分析脚本、更清晰的代码解释。核心原则包括:明确具体的指令、提供充分的上下文、指定输出格式、使用角色设定、引导分步思考。

Q2:请解释 Zero-shot、Few-shot 和 Chain-of-Thought 这三种 Prompting 技术。

参考答案

  • Zero-shot(零样本):不给任何示例,直接让模型完成任务。适合简单的、模型已经擅长的任务。
  • Few-shot(少样本):在 Prompt 中给出几个输入-输出的示例,让模型"照猫画虎"。适合需要特定格式或风格的任务。
  • Chain-of-Thought(CoT)(思维链):让模型展示推理过程,而不是直接给最终答案。经典做法是在 Prompt 末尾加"请一步一步思考"。适合需要逻辑推理的复杂任务。

举个生信的例子:让 AI 判断一组统计结果是否显著——Zero-shot 直接问可能答错,Few-shot 给几个例子后答对率提高,CoT 让它写出推理过程后准确率最高。

Q3:你在实际项目中是怎么使用 Prompt 工程的?

参考答案

在我的宏基因组项目中,我使用 AI 编程助手来辅助脚本编写和结果解读。我会在项目根目录维护一个 CLAUDE.md 文件,写清楚项目结构、技术栈和编码规范,这样 AI 每次都能快速理解上下文。

具体使用中,我主要用到三个技巧: 1. 角色设定:让 AI 扮演"生信工程师 + 老师",输出既专业又容易理解 2. 结构化 Prompt:写清楚背景、需求、输出格式、约束条件,避免模糊指令 3. 迭代优化:第一版输出不满意时,针对性地补充约束条件或示例

但我也清楚 AI 有幻觉问题,所以生成的代码一定会实际运行测试,涉及生物学结论的也会查文献交叉验证。

Q4:CoT(思维链)和 ToT(思维树)有什么区别?

参考答案

CoT 是线性推理——像解方程一步接一步往下推导;ToT 是树状探索——每一步生成多个候选方案,评估后选最优的继续往下走,不好的方案可以回溯。

CoT 适合大部分日常推理任务(写代码、做数据分析);ToT 适合需要探索多种可能性的复杂决策(比如设计实验方案、选择分析策略)。

实际工作中 CoT 用得最多。ToT 更多是学术研究中的概念,但它的核心思想——"多方案对比、择优选择"——在设计分析流程时是很有用的思维方式。

Q5:如何避免 AI 产生"幻觉"(Hallucination)?

参考答案

幻觉是指 AI 生成看起来合理但实际错误的内容。避免的方法包括: 1. 提供上下文约束:给 AI 真实数据和背景信息,减少它"瞎编"的空间 2. 要求引用来源:让 AI 在回答中标注依据,比如"请引用具体的工具文档或论文" 3. 交叉验证:AI 生成的代码要实际运行,生物学结论要查文献 4. 自我反思 Prompt:让 AI 检查自己的回答,比如"请检查你的回答中是否有事实错误" 5. 限制范围:与其让 AI 回答宽泛的问题,不如问具体的、可验证的问题

在生信工作中,最实用的防幻觉手段就是:代码一定要跑通、统计结论一定要查公式、生物学发现一定要查文献。

Q6:在 AI 编程助手(如 Claude Code)中,你是怎么组织项目上下文的?

参考答案

我通常用三层上下文管理: 1. CLAUDE.md 文件:放在项目根目录,写清楚项目背景、目录结构、技术栈、编码规范 2. Rules 规则:设定 AI 的行为偏好,比如"用中文注释""不删除原始数据""小问题自主解决" 3. 即时 Prompt:每次具体任务时再补充当前上下文,比如用 @文件名 引用相关代码

这种分层方式让 AI 既有全局视角(项目是什么),又有行为规范(该怎么做),还有即时上下文(当前在做什么)。效果比每次都从头解释好很多。

Q7:Prompt 工程和传统的软件接口设计有什么相似之处?

参考答案

两者都在解决"怎么把需求传达给执行者"的问题: - 接口设计:通过定义函数签名、参数类型、返回值来约束程序行为 - Prompt 工程:通过自然语言的指令、格式要求、角色设定来约束 AI 行为

好的 API 设计讲究输入输出清晰、错误处理完善、文档充分;好的 Prompt 也讲究指令明确、上下文充分、预期输出格式清楚。

随着 AI Agent 的发展,2025 年业界开始用"Context Engineering"(上下文工程)这个更广的概念来描述——不仅是写 Prompt,还包括管理系统提示、对话历史、工具定义、检索信息等所有输入给 AI 的上下文。


8. 延伸阅读

资源 说明 链接
Prompt Engineering Guide 最全面的 Prompt 工程教程,持续更新 promptingguide.ai
Anthropic Prompt Engineering 文档 Claude 官方的 Prompt 最佳实践 docs.anthropic.com
OpenAI Prompt Engineering Guide GPT 系列的官方 Prompt 指南 platform.openai.com/docs
Coursera: Prompt Engineering for Developers 吴恩达(Andrew Ng)的免费课程 coursera.org
论文: Chain-of-Thought Prompting CoT 原始论文 (Wei et al., 2022) arxiv.org/abs/2201.11903
论文: Tree of Thoughts ToT 原始论文 (Yao et al., 2023) arxiv.org/abs/2305.10601
Context Engineering Guide 从 Prompt 到上下文工程的全面指南 promptingguide.ai/guides/context-engineering-guide

附:Prompt 速查公式

遇到不知道怎么写 Prompt 的时候,套这个公式:

[角色设定] + [背景上下文] + [具体任务] + [输出格式] + [约束条件]

万能模板

你是 [角色],擅长 [能力]。

背景:[当前项目/任务的上下文信息]

任务:请帮我 [具体要做的事情]

要求:
1. [输出格式]
2. [语言/风格要求]
3. [特殊约束]

示例(如果有的话):
[给一个标准输入输出示例]