AI入门——什么是提示词(Prompt)以及如何写好提示词?

AI入门------什么是提示词Prompt?

AI入门------什么是提示词Prompt?

Prompt基本概念

Prompt(提示词):Agent 的「行动准则」

  • 本质 :Prompt不是大模型的能力来源而是大模型能力约束和行为准则。Prompt 先把"要做什么"说清楚,比如是回答问题、改代码、做调研,还是先规划后执行。没有这个目标约束,大模型很容易做出"看起来努力,但方向不对"的行为。所以Prompt不是简单的「问问题」,而是「结构化的指令集」------ 包含「角色定义 + 任务目标 + 执行规则 + 上下文 + 输出格式」。

  • 核心作用:

    ① 定义 Agent 的「角色」(比如「你是一名电商客服 Agent,语气要友好」);

    ② 明确「任务边界」(比如「只处理退货咨询,不回答价格问题」);

    ③ 给出「执行步骤」(比如「先核实用户订单,再确认退货原因,最后生成退货链接」);

    ④ 约束「输出格式」(比如「用 JSON 返回结果,包含订单号、退货原因、链接」)。

  • 工作方式:

    Agent 启动时先「读取 Prompt」,把 Prompt 作为「核心上下文」存入记忆,后续所有决策都基于 Prompt 的规则。

    举个实际的 Prompt 例子(电商客服 Agent):

    plaintext 复制代码
    角色:你是某电商平台的退货处理Agent,仅处理已付款订单的退货咨询。
    规则:
    1. 先向用户索要订单号,验证订单是否已付款;
    2. 若未付款,告知用户「未付款订单无法退货」,结束对话;
    3. 若已付款,询问退货原因,生成对应退货链接;
    4. 输出格式:{"订单号":"xxx","退货原因":"xxx","退货链接":"xxx"}。

    Agent 会严格按照这个 Prompt 的逻辑执行,不会偏离规则。

如何使用Prompt

Prompt的作用

下面以一个例子来说明使用prompt的好处,我们提问

  • Q:生成一个打印99乘法表的代码

  • AI:给你最常用、最简单的 99 乘法表代码,复制直接运行👇

    1. Python 版(最简洁)

      python

      运行 打印99乘法表

      python 复制代码
      for i in range(1, 10):
      for j in range(1, i + 1):
          print(f"{j}×{i}={i*j}", end="\t")
      print()
    2. Java 版

      java 复制代码
      public class NineNineTable {
          public static void main(String[] args) {
              for (int i = 1; i <= 9; i++) {
                  for (int j = 1; j <= i; j++) {
                      System.out.print(j + "×" + i + "=" + (i * j) + "\t");
                  }
                  System.out.println();
              }
          }
      }
    3. C / C++ 版

      cpp 复制代码
      #include <stdio.h>
      int main() {
          for (int i = 1; i <= 9; i++) {
              for (int j = 1; j <= i; j++) {
                  printf("%d×%d=%d\t", j, i, i * j);
              }
              printf("\n");
          }
          return 0;
      }

    运行效果

    plaintext 复制代码
    1×1=1	
    1×2=2	2×2=4	
    1×3=3	2×3=6	3×3=9	
    ...
    1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81

由于提问中缺少输出的限定(比如限定某种语言),AI会一下子给我们输出了python/java/c++三个版本,可能我们只需要java版本,白白浪费了python和c++的token;另一种场景可能大模型只输出c++不满足我们的要求。

下面我们对大模型的输出结果限定,只允许输出java版本,这时我们可以限定

  • Q:你是一名java开发工程师,生成一个打印99乘法表的代码

  • AI:好的,作为一名 Java 开发工程师,我为你提供规范、工整、可直接运行的 99 乘法表 Java 代码,注释详细、格式对齐,完全符合开发规范

    java 复制代码
    public class NineNineTable {
        public static void main(String[] args) {
            // 外层循环:控制行数 i 从 1 到 9
            for (int i = 1; i <= 9; i++) {
                // 内层循环:控制每行的列数 j 从 1 到 i
                for (int j = 1; j <= i; j++) {
                    // 打印乘法公式,\t 是制表符,让格式对齐
                    System.out.print(j + " × " + i + " = " + (i * j) + "\t");
                }
                // 每行结束后换行
                System.out.println();
            }
        }
    }

    运行效果(控制台输出)

    plaintext 复制代码
    1 × 1 = 1	
    1 × 2 = 2	2 × 2 = 4	
    1 × 3 = 3	2 × 3 = 6	3 × 3 = 9	
    1 × 4 = 4	2 × 4 = 8	3 × 4 = 12	4 × 4 = 16	
    ......一直到 9×9

这时可以看到代码更加专业(类名、注释等)。但是代码风格还有一些差异,比如我们一般用通用日志组件如slf4j+log4j等替代控制台输出。我们可以继续加一些约束

  • Q:你是一名java开发工程师,生成一个打印99乘法表的代码,使用slf4j打印日志,并检测代码是否符合业界java代码编码规范
  • AI:符合业界规范的 Java 99 乘法表(SLF4J 日志版)
    作为 Java 开发工程师,我为你编写企业级规范代码:
    使用slf4j-api + logback-classic打印日志(业界标准日志方案)
    严格遵循 Alibaba Java 开发手册 / Oracle 编码规范
    类、方法、变量命名规范,注释完整,格式统一
    可直接运行、无警告、无硬编码、结构清晰
java 复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 九九乘法表打印工具类
 * 遵循Java编码规范,基于SLF4J日志输出
 *
 * @author Java Developer
 * @date 2025-01-01
 */
public class MultiplicationTableGenerator {

    // 日志常量定义规范:static final + 类名.class
    private static final Logger logger = LoggerFactory.getLogger(MultiplicationTableGenerator.class);

    /**
     * 生成并打印99乘法表
     */
    public static void generateNineNineTable() {
        // 外层循环控制行数 1~9
        for (int i = 1; i <= 9; i++) {
            StringBuilder rowBuilder = new StringBuilder();

            // 内层循环控制每行的列数
            for (int j = 1; j <= i; j++) {
                // 格式化拼接每一项,保证对齐
                rowBuilder.append(String.format("%d*%d=%-2d\t", j, i, j * i));
            }

            // 使用SLF4J输出当前行日志
            logger.info(rowBuilder.toString().trim());
        }
    }

    public static void main(String[] args) {
        logger.info("===== 开始打印九九乘法表 =====");
        generateNineNineTable();
        logger.info("===== 九九乘法表打印完成 =====");
    }
}

依赖配置(Maven pom.xml)

必须引入依赖才能使用 SLF4J:

xml 复制代码
<dependencies>
    <!-- SLF4J 日志接口 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.9</version>
    </dependency>

    <!-- Logback 日志实现(业界标准) -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.4.11</version>
    </dependency>
</dependencies>

运行效果

plaintext 复制代码
[main] INFO  MultiplicationTableGenerator - ===== 开始打印九九乘法表 =====
[main] INFO  MultiplicationTableGenerator - 1*1=1
[main] INFO  MultiplicationTableGenerator - 1*2=2	2*2=4
[main] INFO  MultiplicationTableGenerator - 1*3=3	2*3=6	3*3=9
...
[main] INFO  MultiplicationTableGenerator - ===== 九九乘法表打印完成 =====

✅ 业界编码规范检查结果

命名规范
  • 类名:大驼峰 MultiplicationTableGenerator
  • 方法名:小驼峰 generateNineNineTable
  • 常量:全大写 + 下划线
日志规范
  • 使用 SLF4J 门面模式,不直接使用 log4j/jul
  • Logger 定义为 private static final Logger
  • 禁止 System.out.println(),统一用日志输出
代码格式
  • 缩进统一、空格规范
  • 循环 / 代码块结构清晰
  • 方法单一职责
注释规范
  • 类注释、方法注释完整
  • 关键逻辑添加说明
性能与优雅
  • 使用 StringBuilder 拼接字符串(避免 String + 产生大量对象)
  • 格式化输出保证排版整齐

可见大模型生成的代码已基本具备工程级规范了

如何写好Prompt

看完上面的案例后有一个问题:如何写好Prompt?

参考 Anthropic ClaudeCursorOpenAI/ChatGPT 的官方提示词实践,可以把"写好 prompt"的核心总结为一句话:

把任务说清楚,把上下文给够,把边界定死,把结果定义好。

写好Prompt的核心要素

核心要素
目标明确
上下文充分
约束清晰
输出格式明确
评价标准明确
示例优先
任务拆解
任务拆解
告诉模型如何取舍

目标明确

不要只说"帮我优化一下"或"写一份文档",要说清楚你到底要什么结果。 好的 prompt 会回答这几个问题:

  • 要做什么
  • 为谁做
  • 解决什么问题
  • 最终产物是什么

例如:

弱:帮我写知识图谱文档

强:写一篇面向初学者的知识图谱 Markdown 文档,包含基础概念、应用场景,以及一个用 Neo4j 构建简单图谱的案例

上下文充分

ClaudeCursorChatGPT 的共同原则都是:模型不是读心术,缺什么就补什么。 常见上下文包括:

  • 背景信息
  • 目标读者
  • 使用场景
  • 已有材料
  • 技术栈 / 文件路径 / 约定
  • 当前问题和限制

对 coding agent 尤其重要的是:

  • 指定文件、目录、符号
  • 提供报错信息
  • 说明当前状态和已有尝试
约束清晰

好 prompt 不是"越开放越好",而是要明确边界。

常见约束有:

  • 不要改哪些内容
  • 使用什么语言或框架
  • 输出长度
  • 风格要求
  • 是否允许联网、安装依赖、改配置
  • 是否需要兼容旧系统

例如:

plaintext 复制代码
使用 Markdown 输出
不要写成论文腔
代码示例使用 Cypher
不修改已有业务逻辑
输出格式明确

这是 OpenAIAnthropic 都反复强调的重点。你越明确结果长什么样,模型越稳定。 建议提前规定:

  • 输出结构
  • 标题层级
  • 是否用表格
  • 是否要代码块
  • 是否要分步骤
  • 是否要 JSON / Markdown / SQL / PRD

例如:

plaintext 复制代码
请按"概念介绍 / 核心组成 / Neo4j 案例 / 总结"四部分输出
每部分 3 到 5 个自然段
每部分 3 到 5 个自然段
所有代码放在代码块中
评价标准明确

最好的 prompt 不只是说"做什么",还会说"什么算做好"。 这在 Claude Code、Cursor 这类 agent 场景里特别重要。

常见验收标准:

  • 内容完整
  • 逻辑清楚
  • 可执行
  • 没有编造
  • 术语准确
  • 示例能直接运行
  • 风格符合受众

例如:

plaintext 复制代码
文档要让零基础读者也能看懂
Neo4j 示例要能直接复制执行
避免空泛定义,尽量用例子解释
示例优先

Anthropic OpenAI 都很强调 few-shot examples。如果你对输出风格有明确预期,最有效的方法往往不是"描述",而是"给例子"。

适合给示例的场景:

  • 固定格式输出
  • 特定语气
  • 特定风格文案
  • 特定代码模式
  • 审核标准

原则是:

  • 少量但高质量
  • 与目标任务高度相似
  • 示例本身不要含糊
任务拆解

Cursor Claude Code 这类 agent 对"分步骤任务"通常响应更稳。 复杂任务尽量拆成几个阶段:

  • 先理解
  • 再规划
  • 再执行
  • 最后验证
    例如:
plaintext 复制代码
先总结知识图谱基础知识
再设计一个最小 Neo4j 图谱模型
最后生成 Markdown 文档
告诉模型如何取舍

这是很多人忽略的一点。一个优秀 prompt 会说明优先级。 例如:

  • 优先准确,其次简洁
  • 优先可执行,其次完整
  • 优先保守,不要猜测
  • 如果信息不足,先提问,不要强行输出

这能显著减少"看起来很完整但其实不可靠"的回答。

行业标准的共同点

如果把 Claude、Cursor、ChatGPT 的官方建议压缩一下,共同点基本是这 6 条:

  • 清晰直接:不要绕,不要含糊
  • 上下文充足:给背景、材料、限制
  • 结构化表达:分块、分步骤、加分隔
  • 指定输出:格式、长度、风格、字段
  • 必要时给例子:比抽象描述更有效
  • 可验证:说明什么结果才算成功

对写作类 Prompt 的建议

如果你是写文档、方案、汇报、文章,重点是这几个维度:

  • 目标读者是谁
  • 文风是什么
  • 深度到什么程度
  • 是否要案例
  • 是否要结合行业背景
  • 是否要结论导向
    一个写作类 prompt 模板可以写成:
plaintext 复制代码
你是一名[角色],请为[目标读者]写一篇关于[主题]的内容。
目标:
- [希望解决的问题]
- [最终产物]
要求:
- 输出格式:[Markdown / PPT 提纲 / 报告]
- 风格:[专业 / 通俗 / 简洁]
- 篇幅:[字数或章节数]
- 必须包含:[A、B、C]
- 不要包含:[D、E]
验收标准:
- [什么算写得好]
- [是否需要案例、图表、代码]

对编程类 Prompt 的建议

如果你面对的是 Cursor、Claude Code 这种 coding agent,prompt 里建议多补这几类信息:

  • 目标文件或目录
  • 要改什么,不要改什么
  • 当前错误信息
  • 技术约束
  • 期望验证方式
  • 是否允许新增依赖
  • 是否需要先分析再改

一个更适合 coding agent 的模板:

plaintext 复制代码
目标:
- 修复[具体问题]
上下文:
- 项目技术栈:[例如 React + TypeScript]
- 相关文件:[路径]
- 当前报错:[完整报错]
- 已尝试:[可选]
约束:
- 不要修改[某些模块]
- 不要新增依赖
- 保持现有接口不变
输出要求:
- 先说明原因
- 再给修改方案
- 最后给验证方法
验收标准:
- [页面/接口/测试]恢复正常
- 不引入新的 lint 或类型错误

最容易写坏 prompt 的几个问题

  • 目标太大:一句话里塞 5 个任务
  • 描述太空:只有"优化一下""完善一下"
  • 上下文缺失:不说对象、不说场景、不说约束
  • 格式不定:导致输出忽长忽短、结构混乱
  • 没有验收标准:模型不知道你更看重准确、速度还是完整
  • 一次要求太多风格:既要专业又要口语化,既要简洁又要全面,容易冲突

实用口诀

你可以用这个简单框架来检查自己的 prompt:

任务 + 背景 + 约束 + 输出 + 标准

对应 5 个问题:

  • 要做什么
  • 基于什么信息
  • 不能越过哪些边界
  • 最终怎么输出
  • 什么算完成得好

优秀的Prompt示范

相关推荐
Hello.Reader1 小时前
BERT 和 GPT 为什么结构不同?——Encoder 与 Decoder 图解
人工智能·gpt·bert
AI浩1 小时前
引导多模态大语言模型用于弱监督类无关物体计数
人工智能·语言模型·自然语言处理
xiaoxue..1 小时前
大模型全栈技术图谱:LLM → Token → Context → Prompt → Tool → MCP → Agent → Skill
人工智能·ai·大模型
Shining05961 小时前
AI 编译器系列(五)《拓展 Triton 深度学习编译器——DLCompiler》
人工智能·深度学习·学习·其他·架构·ai编译器·infinitensor
yzx9910132 小时前
WorkBuddy 使用指南:解锁几大核心功能,提升工作效率
人工智能·python
蛐蛐蛐2 小时前
在昇腾310P推理服务器上安装CANN和PyTorch
人工智能·pytorch·python·npu
科技林总2 小时前
如何安全地使用龙虾[特殊字符]
人工智能·安全
szxinmai主板定制专家2 小时前
基于 STM32 + FPGA 船舶电站控制器设计与实现
arm开发·人工智能·stm32·嵌入式硬件·fpga开发·架构
lucky_syq2 小时前
Mac电脑部署OpenClaw保姆级教程(2026最新版)
人工智能·macos·开源·电脑·openclaw