第一次接触 AI 开发时,很容易把“模型”“提示词”“上下文”和“API”混在一起。其实它们分别解决不同问题:模型负责生成结果,提示词表达当前任务,上下文提供本次推理所需的信息,API 则负责让程序与模型服务通信。理解这四者的边界,是写出第一个 AI 应用的起点。

AI 应用与普通程序有什么不同

传统程序通常把规则明确写在代码中。例如判断订单金额是否超过 100 元,可以直接使用 if。输入相同,输出一般也相同,而且每一步都能准确解释。

AI 应用仍然需要普通代码,但其中一部分规则交给了模型。开发者不再穷举“什么句子代表好评”,而是把评论和判断要求交给语言模型,让模型返回分类结果。一个完整应用通常包含:

  1. 普通代码:接收输入、读取数据、校验结果和处理异常。
  2. 模型调用:完成摘要、分类、问答或内容生成等语言任务。
  3. 业务约束:规定模型能做什么、输出什么格式,以及失败时怎么办。

模型不是整个应用,它只是应用调用的一项能力。数据存储、权限、日志、重试和最终决策仍由程序负责。

模型:负责根据输入生成结果

大语言模型可以理解为一个“根据已有文本预测后续内容”的系统。经过训练后,它能表现出问答、翻译、提取和推理等能力。程序把输入发送给模型,模型返回一段新内容。

模型有不同的能力、速度、上下文容量和使用成本。模型名称只是 API 请求中的一个参数,并不会自动携带你的业务数据,也不会永久记住此前的对话。更换模型时,同一份输入也可能得到不同结果,因此应用不能把模型输出当作永远正确的事实。

提示词:描述这一次要完成的任务

提示词是给模型的任务说明。下面两种写法的效果往往不同:

1
总结这段文字。
1
2
3
4
5
请把下面的故障记录总结为三点:
1. 发生了什么;
2. 影响范围;
3. 建议的下一步。
每点不超过 40 字,不要补充原文没有的信息。

第二种提示词明确了任务、结构、长度和事实边界,更容易获得可用结果。提示词并不是某种神秘咒语,它更像一份函数说明:输入是什么、希望完成什么、输出必须满足哪些条件。

在真实项目中,提示词通常由固定模板和用户数据共同组成。固定部分由开发者维护,用户输入只能放在预留位置,不能直接决定系统规则。

上下文:模型本次能够看到的信息

上下文是一次请求中提供给模型的全部有效信息,通常包括系统规则、用户问题、历史消息、检索到的文档和工具返回结果。提示词属于上下文,但上下文不只有提示词。

例如一个客服助手回答“它支持退款吗”,仅有这句话并不足够。程序还需要把“它”对应的商品、退款规则以及必要的对话历史放进上下文。模型只能依据当前请求中可见的信息生成答案;没有提供的私有知识,不能期待模型自动知道。

上下文也不是越多越好。无关信息会增加成本、拖慢响应,还可能干扰判断。每个模型能够处理的文本量也有限,这个限制通常称为上下文窗口。应用需要选择真正相关的内容,而不是把整个数据库都塞进一次请求。

API:连接程序与模型服务

API 是程序调用模型服务的接口。应用通过网络发送请求,其中包含模型名称和消息;服务完成推理后返回结果。不同服务商的字段可能不同,但基本数据流很相似:

1
2
3
4
5
6
用户输入
→ 应用校验并组织上下文
→ API 请求
→ 模型生成
→ API 响应
→ 应用校验、展示或继续处理

下面的 Python 代码不依赖任何第三方库,也不会真的访问网络。它演示了程序如何把系统规则、历史消息和当前问题组织成一个请求对象,可以直接保存并运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import json


def build_request(question: str, history: list[dict]) -> dict:
messages = [
{
"role": "system",
"content": "你是学习助手。回答要简洁;不确定时明确说明。",
},
*history,
{"role": "user", "content": question},
]

return {
"model": "your-model-name",
"messages": messages,
}


conversation = [
{"role": "user", "content": "Python 列表是可变对象吗?"},
{"role": "assistant", "content": "是的,列表可以在原位置增删或修改元素。"},
]

payload = build_request("元组呢?", conversation)
print(json.dumps(payload, ensure_ascii=False, indent=2))

这段代码里的 model 指定要使用的模型,messages 构成上下文,最后一条用户消息表达当前任务。真正接入某个服务时,再按照该服务的官方文档,把 payload 通过它提供的 SDK 或 HTTP 接口发送出去。

四者如何协作

可以把一次 AI 调用看成一次特殊的函数调用:

1
结果 = 模型(提示词 + 上下文)

API 负责把这次调用送到远端并把结果带回来。模型决定能力上限,提示词定义当前任务,上下文决定模型掌握哪些现场信息,应用代码则控制整个过程。

如果回答不理想,也应按这个顺序排查:模型是否适合任务,任务说明是否清楚,必要信息是否进入上下文,以及 API 请求和响应是否被正确处理。不要把所有问题都归因于“模型不够聪明”。

常见误区

把模型当数据库。 模型擅长生成和理解语言,却不保证准确保存业务事实。订单状态、价格和权限应从可信数据源读取。

认为模型会自动记住对话。 大多数 API 调用彼此独立。需要多轮对话时,应用必须在后续请求中重新携带必要历史。

直接相信模型输出。 模型可能生成格式错误或事实不准确的内容。重要输出应经过格式校验、规则检查,必要时由人工确认。

把密钥写进代码。 API 密钥应放在环境变量或专用密钥系统中,也不能提交到 Git 仓库。

小结

AI 应用开发并不是只写提示词,而是用普通软件工程方法管理一次不完全确定的模型调用。模型提供生成能力,提示词描述任务,上下文提供现场信息,API 完成通信。下一步可以在本地搭建 Python 环境,学习如何安全管理依赖与密钥,为第一次真实模型调用做好准备。