Post

Openai 参数调用

Openai 参数调用

一、核心参数(几乎必填)

参数类型必填说明
Modelstring模型名称,如 "gpt-4o""deepseek-v4-flash"
Messages[]ChatCompletionMessage对话消息列表,包含 Role(system/user/assistant/tool)和 Content
Streambool true 逐 token 输出(打字机效果),false 一次性返回完整结果

Messages 的四种 Role

Role用途示例
system设定 AI 的行为、角色、规则“你是一个 SQL 助手”
user用户输入“帮我写个查询”
assistantAI 的回复(多轮对话时需要把历史回答放进来)上一轮的回复内容;或 tool_calls 表示要调用工具
tool工具调用的返回结果{"tables": [...]},须配合 tool_call_id

二、生成控制参数

参数类型默认值说明
Temperaturefloat321随机性。0~2,越低越确定,越高越有创意。⚠ 与 TopP 不要同时设
TopPfloat321核采样。只考虑概率累积到 TopP 的 token。0~1。是 Temperature 的替代方案
MaxTokensint-输出最大 token 数(旧版参数)
MaxCompletionTokensint-输出最大 token 数(新版,推荐用这个)
Nint1生成 N 个候选回复(一次请求返回多条答案)
Stop[]string-停止词。输出碰到这些字符串立刻停,最多设 4 个
Seed*int-随机种子。相同 seed + 相同参数 → 可复现输出

三、输出格式控制

参数类型说明
ResponseFormat*ChatCompletionResponseFormat控制输出格式:
{"type": "text"} — 普通文本
{"type": "json_object"} — 强制 JSON
{"type": "json_schema", "json_schema": {...}} — 按 Schema 输出
1
2
3
4
5
6
7
8
9
// 示例:按指定 Schema 输出
ResponseFormat: &openai.ChatCompletionResponseFormat{
    Type: openai.ChatCompletionResponseFormatTypeJSONSchema,
    JSONSchema: &openai.ChatCompletionResponseFormatJSONSchema{
        Name: "user_info",
        Strict: true,
        Schema: jsonSchema{...},
    },
}

四、重复度控制

参数类型范围说明
PresencePenaltyfloat32-2 ~ 2话题新颖性惩罚。值越高越倾向于聊新话题
FrequencyPenaltyfloat32-2 ~ 2词汇重复度惩罚。值越高越禁用重复词汇
LogitBiasmap[string]int-100 ~ 100Token 概率偏置。对特定 token 加权或抑制(如 -100 禁止某词出现)

五、工具/函数调用参数

参数类型说明
Tools[]Tool定义模型可调用的工具列表,每个 Tool 包含 Type(“function”) + Function(Name/Description/Parameters)
ToolChoice特殊类型控制工具调用行为:nil/"auto" 模型自己判断(默认);"none" 禁用工具;"required" 强制调用;{"type":"function","function":{"name":"xxx"}} 强制调用指定工具
ParallelToolCalls*bool是否允许并行调用多个工具。设为 false 禁止
Functions[]FunctionDefinition已废弃,用 Tools 替代
FunctionCall-已废弃,用 ToolChoice 替代

ToolChoice 四种模式

1
2
3
4
nil / "auto"  →  模型自己判断要不要调工具(默认,最常用)
"none"        →  禁止调用任何工具
"required"    →  强制必须调用工具
{"type":"function","function":{"name":"xxx"}}  →  强制调用指定工具

六、流式输出选项

参数类型说明
StreamOptions*StreamOptions流式输出附加选项。IncludeUsage: true 可在流式返回中获取 token 用量
1
2
3
StreamOptions: &openai.StreamOptions{
    IncludeUsage: true, // 流式输出也返回 usage 统计
}

七、高级参数

参数类型说明
Prediction*Prediction预测输出。提前告知模型期望的回复内容,匹配时复用(省钱+加速),不匹配不影响结果
ReasoningEffortstring推理力度(o 系列模型专用)。"low" / "medium" / "high"
Storebool是否将请求存储到 OpenAI 持久化存储中
ServiceTierstring服务层级。"default""flex"(flex 更便宜但可能排队)
Verbositystring输出详细度。"low" / "medium" / "high"

八、身份与标注参数

参数类型说明
Userstring用户标识,用于 OpenAI 滥用检测
Metadatamap[string]string自定义标签(最多 16 组键值对),方便后台分类筛选
SafetyIdentifierstring安全标识符,内容审查相关

九、日志与调试参数

参数类型说明
LogProbsbool是否返回每个 token 的对数概率
TopLogProbsint配合 LogProbs,返回每个位置概率最高的几个 token(0~20)

十、扩展参数

参数类型说明
ChatTemplateKwargsmap[string]any传给聊天模板的额外参数,针对特定开源模型
ChatCompletionRequestExtensionsstruct扩展字段,各平台/模型的自定义配置

快速参考:最小有效请求

1
2
3
4
5
6
resp, err := client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{
    Model: "deepseek-v4-flash",
    Messages: []openai.ChatCompletionMessage{
        {Role: openai.ChatMessageRoleUser, Content: "Hello!"},
    },
})

快速参考:带工具调用的请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
resp, err := client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{
    Model:  "deepseek-v4-flash",
    Messages: msgs,
    // 定义工具
    Tools: []openai.Tool{{
        Type: openai.ToolTypeFunction,
        Function: &openai.FunctionDefinition{
            Name:        "get_weather",
            Description: "获取指定城市的天气",
            Parameters:  "jsonSchema"
        }
    }},
    ToolChoice: "auto", // 默认就是 auto,不写也行
})
This post is licensed under CC BY 4.0 by the author.