prompt是什么
Prompt 就是你用自然语言向大模型(LLM)编写的“代码”。你输入这段“代码”,模型解析后输出结果。Prompt 的质量,直接决定了 AI 输出结果的上限,你的指令越具体、要求越明确,AI 给出的结果就越符合你的心意。.
prompt它的核心作用是告诉AI你需要它做什么,并引导它生成你想要的输出结果。
Prompt特点
- 高度的上下文敏感性
LLM 是无状态的(Stateless)。每一次请求对于模型来说都是全新的。Prompt 必须像一个完全独立的打包容器(类似于 Docker 镜像的构建上下文),把任务所需的所有背景知识、历史状态和规则全部包含进去。少给一个条件,它的概率分布就可能偏向完全错误的方向。
- 非确定性执行
Prompt 的执行结果具有随机性。即使 Prompt 完全一致,输出也可能不同。
- 涌现性的触发器
通过特定的 Prompt 结构(比如引入“一步步思考”的指令),可以激发模型在训练数据中原本就存在的隐式逻辑推理能力。它能让模型从单纯的“文字接龙”转变为具备逻辑推演状态机的模式。
- 对格式与示例的强拟合性
LLM 在本质上是极强的模式识别器。Prompt 中如果包含特定的排版结构或数据样例(Few-Shot),模型会本能地在输出中模仿这种模式,这比用大段纯自然语言解释规则要有效得多。
一个好的 Prompt 包含哪些要素?
-
角色
赋予它一个具体的专家身份,这会在底层直接调整相关领域知识的权重分布。
例如:“作为一名有十年经验的健身教练……;作为一名10年开发经验的Java开发工程师”
-
明确的任务指令
将复杂任务拆解,避免使用模糊的形容词
例如:“请帮我制定一份为期一周的减脂计划……”与“请帮我制定一份减脂计划……”
-
注入充足的上下文
例如:“我平时只能在家里锻炼,没有器械,每天只有30分钟时间,且膝盖受过伤……”
-
设定严格的约束与输出格式
明确禁用某些行为,并指定序列化格式(如 JSON, YAML, Markdown 表格)
示例:必须且只能输出合法的 JSON 字符串,不要包含 Markdown 格式符。” -
提供示例
这是工程上最有效降低“幻觉”(Hallucination)和控制格式的手段
Prompt 构建模型
我们不能把编写 Prompt 当作“玄学”或“许愿”,而应该把它看作是 为 LLM 虚拟机设计通信协议或 API 接口。
为了在团队协作中实现 Prompt 的可复用、可测试和可版本控制,业界沉淀了几种高度标准化的 Prompt 构建模型(框架)。
COSTAR 模型:全链路约束(最稳健的“API 契约”)
它几乎涵盖了控制 LLM 行为的所有变量。你可以把它理解为一个具有严格入参和出参定义的 RESTful API 设计。
- C - Context (上下文): 任务的背景信息。(类似于程序的全局变量或运行环境状态)
- O - Objective (目标): 明确要求模型完成的核心任务。(类似于函数名或主逻辑)
- S - Style (风格): 期望的写作或表达风格,例如模仿特定的架构师或知名开源项目的文档。(类似于编码规范)
- T - Tone (语调): 回答的情感倾向,如客观、严谨、幽默。(类似于系统的日志级别,如 INFO 或 DEBUG)
- A - Audience (受众): 这段输出是给谁看的?是给初级开发者、产品经理,还是机器的 JSON 解析器?(决定了接口的调用方)
- R - Response (响应格式): 严格定义输出的结构,如 JSON、Markdown 表格、YAML。(类似于 Return Type 或序列化协议)
生成 Python 数据库连接模块
[Context] 我们正在重构一个基于 FastAPI 的微服务,当前使用的是同步的 psycopg2,导致高并发下 I/O 阻塞。
[Objective] 编写一个基于 asyncpg 的异步 PostgreSQL 数据库连接池管理单例。
[Style] 遵循 PEP 8 规范,代码结构类似于 SQLAlchemy 的底层管理逻辑。
[Tone] 专业、严谨,侧重于系统的高可用性。
[Audience] 供高级 Python 后端工程师做代码 Review 使用。
[Response] 仅输出包含类型提示 (Type Hints) 的 Python 代码块,不需要任何解释性的废话。
CRISPE 模型:适合复杂 Agent 与系统调用
CRISPE 模型最初设计用于复杂的内容生成,但在 AI Agent 开发(尤其是涉及到基于 Model Context Protocol 进行工具调用的场景)中表现极佳。它强调角色扮演和多重约束。
- CR - Capacity and Role (能力与角色): 设定 AI 的系统级身份。(赋予其特定领域的先验知识权重)
- I - Insight (洞察/背景): 提供任务相关的核心事实或痛点。(业务上下文注入)
- S - Statement (声明/指令): 具体的执行步骤。(流水线任务定义)
- P - Personality (个性): 输出的格式或边界限制。(防御性编程约束)
- E - Experiment (实验/多路径): 要求模型提供多种方案或进行沙盒推演。(触发发散性思维或思维树 ToT)
[Capacity & Role] 你是一个精通多语言 (Python, Java, Kotlin, C) 的底层架构师,擅长设计异构系统之间的通信。
[Insight] 我们需要在一个 Python 编写的 AI Agent 调度中心与多个本地硬件设备之间建立低延迟的通信管道。
[Statement] 请对比 gRPC、ZeroMQ 和基于 WebSocket 的自定义协议在这类场景下的适用性。
[Personality] 客观、数据驱动。在结论中必须指出每种方案的最大短板。
[Experiment] 请分别给出这三种方案在并发达到 10,000 QPS 时的理论内存消耗估算,并推荐最终选型。
ICIO 模型:极简高效
当你的 Prompt 是被嵌入在代码流中高频调用时(比如每次用户查询都要过一遍意图识别),COSTAR 会显得过于臃肿(消耗过多的 Token)。此时 ICIO 是最佳选择,它类似于一个纯粹的纯函数
- I - Instruction (指令): 动词开头的强指令。
- C - Context (上下文): 仅提供绝对必要的依赖数据。
- I - Input (输入): 动态传入的变量(通常是用户的 query)。
- O - Output (输出): 机器可读的结构化约束。
[Instruction] 将用户的自然语言请求映射为系统的枚举动作。
[Context] 可用动作列表:["SCAN_FILES", "UPDATE_CONFIG", "RESTART_SERVICE", "UNKNOWN"]
[Input] 用户的输入是:“帮我查一下 NAS 里那个新下的电影目录”
[Output] 只输出枚举字符串,禁止输出其他字符。
DSPy 编程模型 (Prompt as Code)
目前业界最前沿的思路:消除手写 Prompt,走向编程编译化。
斯坦福大学推出的 DSPy 框架提出了一个革命性的模型:开发者不再需要绞尽脑汁去凑 COSTAR 或 CRISPE 的文本,而是像写代码一样定义 Signature (签名)。
在 DSPy 的理念中:
- 你定义输入和输出的类型:Input(text) -> Output(sql)
- 你提供一个业务的评估函数(Metric)。
- 框架底层的 Teleprompter(优化器) 会自动通过机器学习的方式,为你“编译”出最适合当前大模型的 Prompt(包括自动寻找最合适的 Few-Shot 样例)。
评论区