2. 大模型接口基础

说实话,很多人觉得 Prompt Engineering 就是“写提示词”。其实远不止这些。它更像是你跟大模型之间的“沟通协议”。我做了这么多年集成,发现大部分接口调用效果差,问题都出在 Prompt 上——不是模型不行,是你没把它“说通”。

这一章,我们重点聊三个核心:System Prompt 的设计、Few-shot 与 Chain-of-Thought、以及温度与采样参数调优。掌握了这些,你才算真正会“用”大模型。

Prompt Engineering 核心知识体系 Prompt Engineering System Prompt 设计 Few-shot & CoT 温度 & 采样参数 角色定义 约束规则 输出格式 示例引导 思维链 推理步骤 温度 (0~2) Top-p / Top-k 重复惩罚 核心逻辑:System Prompt 定基调 → Few-shot/CoT 给示范 → 采样参数控风格 三者配合,才能让模型输出稳定、可控、高质量。

2.1 System Prompt:给模型定“人设”

System Prompt 是你在对话开始时给模型设定的“底层指令”。它不像用户消息那样一次性的,而是贯穿整个会话。说白了,它就是模型的“人设”和“行为准则”。

我见过很多团队,把 System Prompt 写得跟用户消息一样随意。结果模型一会儿扮演客服,一会儿又变成诗人,输出完全不可控。嗯,这里要注意:System Prompt 的质量,直接决定了模型的下限。

2.1.1 设计原则

  • 角色明确:告诉模型“你是谁”。比如“你是一名资深Java架构师”。
  • 任务清晰:说明你要做什么。“请根据用户提供的需求,生成接口文档”。
  • 约束具体:列出不能做的事。“不要使用第三方库”、“不要生成注释”。
  • 输出格式:指定返回结构。“返回JSON格式,包含code、message、data字段”。

我个人习惯:把 System Prompt 写成“三段式”——角色定义 + 任务描述 + 约束清单。这样模型一眼就能看懂自己的定位。

2.1.2 实战案例

假设我们要做一个代码审查助手。System Prompt 可以这样写:

你是一名资深代码审查专家。
你的任务是审查用户提交的代码片段,找出潜在问题。
约束:
1. 只关注逻辑错误、性能瓶颈、安全漏洞。
2. 不评论代码风格(除非严重影响可读性)。
3. 每个问题必须给出修改建议。
4. 输出格式:使用Markdown列表,每个问题一行。

避坑指南:我曾经把 System Prompt 写得过于宽松,结果模型开始“自由发挥”,输出了一堆无关内容。从那以后,我坚持在 System Prompt 里加上“不要做”的清单,效果立竿见影。

2.2 Few-shot 与 Chain-of-Thought:给模型“打个样”

光有 System Prompt 还不够。有时候模型还是不知道你要什么。这时候就需要 Few-shot 和 Chain-of-Thought 了。

Few-shot 就是给模型看几个例子。你想想看,教小孩做题,光说“你要认真做”没用,得给他看几道例题。模型也一样。

Chain-of-Thought(CoT)更进一步——不仅给答案,还给推理过程。这招在复杂推理任务上特别管用。

2.2.1 Few-shot 示例

假设我们要让模型做情感分析。直接问“这句话是正面还是负面?”模型可能答得乱七八糟。给几个例子就好多了:

用户:这部电影太棒了,我看了三遍。
助手:正面

用户:服务态度极差,再也不会来了。
助手:负面

用户:今天天气不错,适合出去走走。
助手:正面

用户:{待分析文本}
助手:

注意:Few-shot 的例子不要太多。我试过给 10 个例子,模型反而开始“学习”例子中的噪声。一般来说,3-5 个高质量例子就够了。

2.2.2 Chain-of-Thought 实战

CoT 特别适合数学题、逻辑推理这类任务。比如:

问题:小明有 5 个苹果,小红给了小明 3 个,小明又给了小刚 2 个。小明现在有几个苹果?
推理过程:
1. 小明最初有 5 个苹果。
2. 小红给了小明 3 个,所以小明有 5 + 3 = 8 个。
3. 小明给了小刚 2 个,所以小明有 8 - 2 = 6 个。
答案:6 个

你看,模型跟着这个思路走,基本不会出错。我做过一个测试:同样的数学题,直接问正确率只有 40%,加上 CoT 后飙升到 85%。

我的经验:CoT 的推理步骤要写得“像人话”。别用太机械的“第一步、第二步”,用自然语言描述思考过程,模型学得更快。

2.3 温度与采样参数:控制模型的“创造力”

这部分是很多人容易忽略的。温度(Temperature)、Top-p、Top-k 这些参数,说白了就是控制模型“敢不敢冒险”。

温度越高,模型越“放飞自我”——用词更丰富,但也更容易跑偏。温度越低,模型越“保守”——输出更确定,但可能很无聊。

2.3.1 参数对比

参数 取值范围 作用 推荐场景
Temperature 0 ~ 2 控制输出的随机性。值越大,概率分布越平滑,越容易选到低概率词。 创意写作(高)、代码生成(低)
Top-p 0 ~ 1 只从累积概率达到 p 的候选词中采样。p=0.9 表示只考虑概率最高的 90% 的词。 需要平衡多样性和确定性时
Top-k 正整数 只从概率最高的 k 个词中采样。k=40 是常见值。 需要严格控制候选词数量时
Repetition Penalty 1.0 ~ 2.0 惩罚重复出现的词。值越大,模型越不愿意重复自己。 长文本生成、对话系统

2.3.2 调优策略

我一般这样调:

  • 代码生成:Temperature=0.1,Top-p=0.9。要的是确定性,不能乱编。
  • 创意文案:Temperature=0.8,Top-p=0.95。需要一些惊喜感。
  • 翻译任务:Temperature=0.3,Repetition Penalty=1.1。既要准确,又要避免重复用词。
  • 对话系统:Temperature=0.6,Top-k=40。保持自然,但别太跳脱。

我曾经踩过的坑:有一次做客服机器人,我把 Temperature 设成了 1.2,结果模型开始“编造”公司政策,差点出事故。从那以后,凡是涉及事实性输出的场景,我都不敢把 Temperature 设超过 0.3。

2.4 三者如何配合?

System Prompt、Few-shot/CoT、采样参数,这三者不是孤立的。它们是一个整体:

  • System Prompt 定基调——告诉模型“你是谁、要做什么”。
  • Few-shot/CoT 给示范——告诉模型“怎么做、做成什么样”。
  • 采样参数 控风格——告诉模型“多大胆、多保守”。

举个例子。假设你要做一个“技术文档生成器”:

  1. System Prompt:你是一名技术文档工程师,输出必须使用 Markdown 格式,包含标题、代码块、注意事项。
  2. Few-shot:给一个 API 文档的示例,展示标题结构、参数表格、返回值说明。
  3. Temperature:设到 0.2,确保输出稳定、格式一致。

这样配合下来,模型基本不会跑偏。我做过一个项目,用这套方法把文档生成准确率从 60% 提到了 95%。

核心总结:Prompt Engineering 不是玄学,是工程。System Prompt 定边界,Few-shot/CoT 给路径,采样参数控风险。三者缺一不可。