{"record":{"id":"663b6028615ffb9e","repo":"spring-projects/spring-ai","slug":"both-maxtokens-and-maxcompletiontokens-are-set-op-663b60","errorCode":null,"errorMessage":"Both maxTokens and maxCompletionTokens are set. OpenAI API does not support setting both parameters simultaneously. As maxToken is deprecated, we will use maxCompletionToken (${maxCompletionTokens}).","messagePattern":"Both maxTokens and maxCompletionTokens are set\\. OpenAI API does not support setting both parameters simultaneously\\. As maxToken is deprecated, we will use maxCompletionToken \\((.+?)\\)\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java","lineNumber":944,"sourceCode":"\t\tpublic B logitBias(@Nullable Map<String, Integer> logitBias) {\n\t\t\tthis.logitBias = logitBias;\n\t\t\treturn self();\n\t\t}\n\n\t\tpublic B logprobs(@Nullable Boolean logprobs) {\n\t\t\tthis.logprobs = logprobs;\n\t\t\treturn self();\n\t\t}\n\n\t\tpublic B topLogprobs(@Nullable Integer topLogprobs) {\n\t\t\tthis.topLogprobs = topLogprobs;\n\t\t\treturn self();\n\t\t}\n\n\t\tpublic B maxCompletionTokens(@Nullable Integer maxCompletionTokens) {\n\t\t\tif (maxCompletionTokens != null && this.maxTokens != null) {\n\t\t\t\tif (logger.isWarnEnabled()) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\t\"Both maxTokens and maxCompletionTokens are set. OpenAI API does not support setting both parameters simultaneously. \"\n\t\t\t\t\t\t\t\t\t+ \"As maxToken is deprecated, we will use maxCompletionToken (\"\n\t\t\t\t\t\t\t\t\t+ maxCompletionTokens + \").\");\n\t\t\t\t}\n\t\t\t\tthis.maxTokens(null);\n\t\t\t}\n\t\t\tthis.maxCompletionTokens = maxCompletionTokens;\n\t\t\treturn self();\n\t\t}\n\n\t\tpublic B n(@Nullable Integer n) {\n\t\t\tthis.n = n;\n\t\t\treturn self();\n\t\t}\n\n\t\tpublic B outputModalities(@Nullable List<String> outputModalities) {\n\t\t\tthis.outputModalities = outputModalities;\n\t\t\treturn self();","sourceCodeStart":926,"sourceCodeEnd":962,"githubUrl":"https://github.com/spring-projects/spring-ai/blob/98a7beda4f29d80a71c5837eb4053b03a93a46f7/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java#L926-L962","documentation":"In OpenAiChatOptions.Builder.maxCompletionTokens(), setting maxCompletionTokens while maxTokens is already set triggers a warning that both parameters cannot be sent together to the OpenAI API. Since maxTokens is deprecated, the builder clears it via this.maxTokens(null) and the new maxCompletionTokens value wins. This ordering is the intended migration path.","triggerScenarios":"Calling OpenAiChatOptions.Builder.maxCompletionTokens(n) after maxTokens(m) was already set on the same builder (e.g. options inherited from legacy configuration).","commonSituations":"Modernizing old configuration from the deprecated maxTokens to maxCompletionTokens while both appear in the builder chain; programmatically overriding a preconfigured options object.","solutions":["Prefer this setter order (maxCompletionTokens after maxTokens) — the deprecated value is dropped automatically","Clean the configuration so only maxCompletionTokens is set, silencing the warning","Update any defaults/properties that still set maxTokens"],"exampleFix":"// before\nOpenAiChatOptions.builder().maxTokens(1024).maxCompletionTokens(2048).build(); // warns\n// after\nOpenAiChatOptions.builder().maxCompletionTokens(2048).build();","handlingStrategy":"validation","validationCode":"if (opts.getMaxTokens() != null && opts.getMaxCompletionTokens() != null) {\n    // maxCompletionTokens wins; clear maxTokens\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set only maxCompletionTokens in new code","Set maxCompletionTokens after maxTokens if both setters are invoked","Remove maxTokens from shared defaults"],"tags":["openai","options","deprecated","conflict"],"backgroundTag":"deprecated-api-usage","analyzedSha":"98a7beda4f29d80a71c5837eb4053b03a93a46f7","analyzedAt":"2026-09-11T14:15:49.441Z","contentChangedAt":"2026-09-11T14:15:49.441Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}