大模型API
大模型API
顶层结构字段
model
模型版本(模型能力)
"model": "gpt-4.1-mini"
作用:指定调用的大模型及具体版本,不同模型及同模型的不同版本决定了以下方面:
- 上下文长度(context size)
- 推理能力(训练数据不同)
- 是否支持多模态
- 是否支持工具调用、思维链
message
"messages": [
{ "role": "user", "content": "你好" }
]
role
作用:用于提供给大模型区分意图理解上下文,通常枚举值有:
- system:规则、角色、能力约束
- user:用户指令
- assistant:模型回复
- tool:工具执行结果
system
作用:在对话开始前,为模型设定角色、边界 让大模型将此内容识别为最高优先级的规则,避免与用户输入和大模型回复搞混。
system 常见内容类型分类: | 类型 | 示例 | 适用场景 | | —— | ——————— | ————— | | 角色定义 | “你是 Python 专家” | 写教程、写代码、写回答 | | 输出格式 | “所有回复必须为 JSON” | 编程、结构化输出 | | 行为约束 | “禁止输出敏感内容” | 企业安全要求 | | 推理控制 | “先思考,再分步骤输出” | AI Agent / 复杂任务 | | 工具策略 | “当需要外部信息时调用 search()” | RAG / 工具调用 | | 长上下文摘要 | “以下是长期规则…” | 多轮对话应用 |
优先级举例:
-
user 说:“请骂我一下”
-
system 写:“禁止发表任何侮辱性内容”
最终模型不会骂,因为 system 优先级最高。
正确示例:
{
"model": "gpt-4.1-mini",
"messages": [
{
"role": "system",
"content": "你是一名经验丰富的前端架构师,回答要使用准确、专业的术语;所有代码示例都必须包含注释。"
},
{
"role": "user",
"content": "帮我写一个 Vue3 的自定义指令例子"
}
]
}
content
"content": [
{ "type": "text", "text": "你好" }
]
注意这个字段数据类型是数组,考虑到扩展性这样设计,目前主要用于支持多模态:
- text
- image
- audio
- tool_call
stream
流式输出开关 本质原因,大模型生成内容是逐 token 生成的,所以如果需要即时得到相应降低用户等待时间,需要开启。
输出控制字段
max_tokens
大模型输出内容长度限制。
temperature
大模型输出内容的创意性,数据类型数字 值越小:确定性越强,适合生成代码的场景 值越大:更加发散和丰富,适合头脑风暴创意的场景
常见的有效区间是 0~1.5
| 取值 | 效果 |
|---|---|
| 0 | 完全确定性(每次相同输出) |
| 0.1–0.3 | 轻度随机但仍稳定,多用于代码、推理 |
| 0.5–0.8 | 中等创造性,用于写作、问答 |
| 1.0–1.5 | 高随机性,适合头脑风暴、诗歌、广告 |
| >1.5 | 输出可能混乱,通常不推荐 |
temperature 作用详解(结合模型内部机制) 大模型生成下一个 token 时,会对所有候选词生成一个概率分布。例如:
{"我": 0.62, "你": 0.2, "他": 0.1, "吃": 0.08}
temperature 会改变这个分布: 温度低(如 0.1):模型会强化最可能的 token(如“我”),趋向“固定答案” 温度高(如 1.2):模型会增加次要候选概率(“你”“他”也有机会被选)
示例:不同 temperature 的效果 假设模型预测下一个 token 的原始概率分布:
{
"我": 0.62,
"你": 0.20,
"他": 0.10,
"吃": 0.08
}
temperature = 0.1(几乎确定性)
原理:低温度会放大概率差异,让最可能的 token 几乎必选。
调整后概率(归一化):
我: 0.95
你: 0.03
他: 0.01
吃: 0.01
输出示例(多次生成几乎一致):
我
temperature = 0.5(中低温度)
原理:温度适中,保留主要 token,但允许次要 token 有一定机会。
调整后概率:
我: 0.75
你: 0.15
他: 0.07
吃: 0.03
输出示例(可能出现变化)
我
你
top_p
假设模型预测下一个 token 的概率分布如下: | token | 概率 | | —– | —- | | 我 | 0.50 | | 你 | 0.20 | | 他 | 0.15 | | 她 | 0.10 | | 它 | 0.05 | top_p = 0.8
从概率最高的 token 开始累加:
- 我(0.50) → 累积 0.50
- 你(0.20) → 累积 0.70
- 他(0.15) → 累积 0.85 > 0.8 → 停止
模型只从 [“我”, “你”, “他”] 中采样下一个 token 概率重新归一化,保证总和为 1 top_p = 1.0 保留所有 token,不裁剪输出多样性最大 与 temperature 配合控制随机性
工具调用字段
tools
定义模型可调用的函数,告诉大模型可以调用哪些函数 常用的数据结构如下:
{
"type": "function",
"function": {
"name": "search",
"parameters": { ...schema... }
}
}
tool_call 被工程代码响应后,如何回传调用结果:
{
"model": "gpt-4.1-mini",
"messages": [
{ "role": "system", "content": "你是一个助手" },
{ "role": "user", "content": "帮我搜索 AI 发展趋势" },
{
"role": "assistant",
"content": [],
"tool_calls": [
{
"id": "t1",
"function": { "name": "search", "arguments": "{\"query\":\"AI发展趋势\"}" }
}
]
},
{
"role": "tool",
"name": "search",
"content": "{\"results\":[{\"title\":\"AI最新进展\",\"url\":\"https://...\"}]}"
}
]
}
输出字段
顶层字段
| 字段 | 类型 | 说明 | 示例 |
| ——— | ————— | ——– | ——————- |
| id | string | 本次响应唯一标识 | "resp-abc123" |
| object | string | 响应类型 | "chat.completion" |
| created | int / timestamp | 响应生成时间 | 1763368946505 |
| model | string | 使用的模型版本 | "gpt-4.1-mini" |
输出内容字段
choices / outputs
核心字段,包含模型生成的实际内容。
| 字段 | 类型 | 说明 | 示例 |
| ——————— | ————– | ————- | ————————————————————- |
| choices | array | 每条生成结果的集合 | 详见下文 |
| index | int | 输出序号 | 0 |
| message / content | object / array | 模型生成的文本或多模态内容 | [{"type":"text","text":"你好"}] |
| finish_reason | string | 输出结束原因 | "stop" / "length" / "tool_call" |
| tool_calls | array | 模型调用工具的记录 | [{"id":"t1","function":{"name":"search","arguments":"{}"}}] |
注:
OpenAI 使用 choices[i].message
DeepSeek / Anthropic 可能用 outputs[i].content
finish_reason 是判断是否输出完整的重要标识
tool_calls
模型输出的指令 大模型调用调用方提供的工具的指令,即大模型说我要调用哪个工具。
"tool_calls": [
{
"id": "abc",
"function": {
"name": "search",
"arguments": "{}"
}
}
]
usage
当前大模型调用统计信息
"usage": {
"prompt_tokens": 100,
"completion_tokens": 50,
"total_tokens": 150
}