AI 入门指南
系统提示词与温度:它们的作用以及如何设置
系统消息和温度在 OpenAI 兼容请求中的作用,附带可发送到 CheapTokens 模型的 Python 和 curl 示例。

系统提示词是一条角色为 system 的消息,它告诉模型在每次回答中应如何表现:它是谁、使用什么格式、应避免什么。温度是一个数字,通常在 0 到 2 之间(具体范围取决于模型),用于设定措辞可以有多大变化:低值给出聚焦、可重复的回答,高值给出更多变化的回答。两者都放入同一个 Chat Completions 请求中,你将该请求发送到 https:/。
下面介绍:各自是什么、从哪些值开始,以及一个可以在 Python 或 curl 中运行的请求。如果你还没有发送过请求,请先看使用 CheapTokens 发送你的第一个 API 请求。
什么是系统提示词?#
聊天请求是一个消息列表,每条消息都有一个角色。Chat Completions 参考文档列出了四种:system、user、assistant 和 tool(DeepSeek API 参考文档,查阅于 2026 年 10 月 22 日)。对于第一个请求,你需要三种:
system—— 来自你(开发者)的常驻指令。模型将它们视为对话的规则。user—— 用户在本轮中提出的问题或提供的内容。assistant—— 模型先前的回答。当你继续一段对话时,由你自己添加它们。
系统消息需要将 role 设为 system,并将 content 设为字符串。name 字段是可选的。
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
]系统消息放在最前面。用户消息是实际任务。
如何编写有用的系统提示词#
- 用一句话说明模型在做什么:“你是一名编辑”,“你对支持工单进行分类”。
- 说明输出格式:“只返回改写后的文本”,“用两句话回答”,“以有效的 JSON 回复”。
- 用简短、直接的句子给出规则。几行清晰的规则比一大段长文字效果更好。
- 保持简短。系统提示词会随每个请求发送并计入输入 token,因此较长的提示词每次都要付费。输入和输出如何计费见输入 token 与输出 token。
温度有什么作用?#
模型从一组可能的候选中选择每个下一个 token。温度控制它多严格地坚持最可能的那个。根据 DeepSeek API 参考文档(查阅于 2026 年 10 月 22 日),temperature 接受 0 到 2 的值,默认值为 1:较高的值给出更随机的输出,较低的值给出更聚焦、更确定的输出。不同模型的范围不同:DeepSeek 记录为 0 到 2,Z.ai 记录 GLM-5.3 为 0 到 1(均查阅于 2026 年 10 月 22 日),因此 0 到 1 的值在两者上都安全。请在文档中查看你的模型的范围。
适用于大多数任务的起始值。它们是经验法则,不是保证:
向右滚动表格 →
| 任务 | 起始值 |
|---|---|
| 提取、分类、代码、严格格式 | 0 到 0.3 |
| 问答、摘要、改写 | 0.3 到 0.7 |
| 头脑风暴、命名、创意文本 | 0.8 到 1 |
需要知道三件事:
- 低温度更可重复,但不是完全相同。 不要依赖逐字节相等的回答。
- 更改温度或 top_p,不要同时改两者。 这是 DeepSeek 的建议;
top_p是第二个采样参数,默认值为 1。在你学习期间先不要动它。 - 某些模式会忽略温度。 DeepSeek 参考文档说温度在思考模式下没有效果,并且在非思考模式下
top_p固定为 1.0。如果你更改了某个值却没有看到差异,请先检查模型的模式。
同时发送两者的请求#
将密钥设置为环境变量,这样它永远不会出现在代码中(见什么是 API 密钥以及如何安全存储它)。从 CheapTokens 文档中获取准确的模型 id:不同提供商对同一模型的命名不同。此示例使用 MiniMax-M2.7。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."},
],
temperature=0.3,
max_tokens=1000,
)
print(response.choices[0].message.content)
print(response.choices[0].finish_reason)使用 curl 的同一请求:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
],
"temperature": 0.3,
"max_tokens": 1000
}'你应该看到: 该句子更简短、更友好的版本,以及作为 finish_reason 的 stop。如果 finish_reason 是 length,则回答达到了 max_tokens 限制;见为什么 AI 回答会在句子中间停止。
观察温度的作用#
理解温度的最好方法是多次提出同一个问题。这个循环使用上面示例中的 client,在 0 和 1 下各发送三次一个简短请求:
for temp in (0, 1):
print("temperature", temp)
for _ in range(3):
r = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "Answer with one word."},
{"role": "user", "content": "Name a fruit."},
],
temperature=temp,
max_tokens=500,
)
print(" ", r.choices[0].message.content)在 0 时,三行通常是同一个词;在 1 时,你通常会看到更多不同的词。在回答前进行推理的模型可能会将部分 max_tokens 花在该推理上,因此即使是一个词的回答,也要保持限制宽松。然后只更改系统提示词(例如,“用一个词回答,用法语”)并再次运行:系统消息中的规则在每个温度下都适用。
这类实验规模很小。粗略估计,这里是 100 个请求的成本,每个请求约 120 个输入 token 和 80 个输出 token(示例工作负载;token 数量取决于你的提示词):
| 模型 | 输入 $/1M | 输出 $/1M | 每次请求 | 100 次请求 | OpenRouter,100 次请求 |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000056 | $0.00056 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000098 | $0.00098 | $0.0018 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000018 | $0.0018 | $0.0132 |
每次请求 120 个输入 token 和 80 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
在哪个模型上尝试#
- MiniMax-M2.7 是许多简短测试请求的良好首选,你可以复用它上面的同一系统提示词来比较回答:180K 上下文,最多 8,192 个输出 token,输入和输出两侧都比 OpenRouter 的参考价格便宜。当前价格:输入 $0.05,输出 $0.15 每 1M token。
一个余额覆盖所有模型,因此切换模型只需更改一行 model。所有当前价格都在定价页面上。
如果不起作用#
- 401 或身份验证错误: 密钥缺失、输入错误,或此终端中未设置环境变量。检查
echo $CHEAPTOKENS_。API_ KEY - 找不到模型: 从文档中准确复制模型 id,包括前缀。
- 关于无效参数的错误: 将
temperature保持在你的模型支持的范围内(0 到 1 是安全的),并传入数字,而不是字符串。 - 模型忽略你的规则: 将其改为一个简短、直接的句子,移到系统消息的顶部,并重复你想要的确切格式。
- 更改温度没有任何变化: 你可能正在使用忽略它的模式(见上文),或者回答受到很大限制(“一个词”、“有效 JSON”),以至于几乎没有变化。
- 回答被截断: 提高
max_tokens;max_tokens 指南解释了如何操作。
下一步#
在系统消息中放入一条清晰的规则,从表格中选择一个温度,并在你自己的任务上运行上面的循环。当结果符合你的要求时,保持系统提示词简短并复用它。在文档中获取密钥并查看当前价格。



