令牌限制参数:特定模型的用法
OpenAI提供了两个互斥的参数来控制令牌生成限制:
| 参数 | 用例 | 兼容模型 |
|---|---|---|
| 非推理模型 | gpt-4o,gpt-4o-mini,gpt-4-turbo,gpt-3.5-turbo |
| 推理模型 | o1 , o1 - mini , o1 - preview , o3 , o4 - mini 系列 |
这些参数是相互排斥的。同时设置这两个值将导致OpenAI的API错误。
用法示例
非推理模型(gpt-4 o,gpt-3.5-turbo):
ChatResponse response = chatModel.call(new Prompt("Explain quantum computing in simple terms.",OpenAiChatOptions.builder().model("gpt-4o").maxTokens(150) // Use maxTokens for non-reasoning models.build()));
推理模型(o 1,o3系列):
ChatResponse response = chatModel.call(new Prompt("Solve this complex math problem step by step: ...",OpenAiChatOptions.builder().model("o1-preview").maxCompletionTokens(1000) // Use maxCompletionTokens for reasoning models.build()));
构建器模式验证:OpenAI ChatOptions构建器通过“最后一盘获胜”的方法自动执行互斥:
// This will automatically clear maxTokens and use maxCompletionTokensOpenAiChatOptions options = OpenAiChatOptions.builder().maxTokens(100) // Set first.maxCompletionTokens(200) // This clears maxTokens and logs a warning.build();// Result: maxTokens = null, maxCompletionTokens = 200
运行时选项
在启动时,可以使用OpenAiChatModel(api, options)构造函数或spring.ai.openai.chat.options.*属性配置默认选项。
在运行时,您可以通过向Prompt调用添加新的、特定于请求的选项来覆盖默认选项。例如,要覆盖特定请求的默认模型和温度:
ChatResponse response = chatModel.call(new Prompt("Generate the names of 5 famous pirates.",OpenAiChatOptions.builder().model("gpt-4o").temperature(0.4).build()));
除了特定于模型的OpenAiChatOptions之外,您还可以使用一个可移植的ChatOptions实例,该实例使用ChatOptions#builder()创建。
功能调用
您可以使用OpenAiChatModel注册自定义Java函数,并让OpenAI模型智能地选择输出包含参数的JSON对象,以调用一个或多个已注册的函数。这是一种强大的技术,可以将LLM功能与外部工具和API连接起来。