MCPcopy Index your code
hub / github.com/codeaashu/claude-code / getModelMaxOutputTokens

Function getModelMaxOutputTokens

src/utils/context.ts:149–210  ·  view source on GitHub ↗
(model: string)

Source from the content-addressed store, hash-verified

147 * Returns the model's default and upper limit for max output tokens.
148 */
149export function getModelMaxOutputTokens(model: string): {
150 default: number
151 upperLimit: number
152} {
153 let defaultTokens: number
154 let upperLimit: number
155
156 if (process.env.USER_TYPE === 'ant') {
157 const antModel = resolveAntModel(model.toLowerCase())
158 if (antModel) {
159 defaultTokens = antModel.defaultMaxTokens ?? MAX_OUTPUT_TOKENS_DEFAULT
160 upperLimit = antModel.upperMaxTokensLimit ?? MAX_OUTPUT_TOKENS_UPPER_LIMIT
161 return { default: defaultTokens, upperLimit }
162 }
163 }
164
165 const m = getCanonicalName(model)
166
167 if (m.includes('opus-4-6')) {
168 defaultTokens = 64_000
169 upperLimit = 128_000
170 } else if (m.includes('sonnet-4-6')) {
171 defaultTokens = 32_000
172 upperLimit = 128_000
173 } else if (
174 m.includes('opus-4-5') ||
175 m.includes('sonnet-4') ||
176 m.includes('haiku-4')
177 ) {
178 defaultTokens = 32_000
179 upperLimit = 64_000
180 } else if (m.includes('opus-4-1') || m.includes('opus-4')) {
181 defaultTokens = 32_000
182 upperLimit = 32_000
183 } else if (m.includes('claude-3-opus')) {
184 defaultTokens = 4_096
185 upperLimit = 4_096
186 } else if (m.includes('claude-3-sonnet')) {
187 defaultTokens = 8_192
188 upperLimit = 8_192
189 } else if (m.includes('claude-3-haiku')) {
190 defaultTokens = 4_096
191 upperLimit = 4_096
192 } else if (m.includes('3-5-sonnet') || m.includes('3-5-haiku')) {
193 defaultTokens = 8_192
194 upperLimit = 8_192
195 } else if (m.includes('3-7-sonnet')) {
196 defaultTokens = 32_000
197 upperLimit = 64_000
198 } else {
199 defaultTokens = MAX_OUTPUT_TOKENS_DEFAULT
200 upperLimit = MAX_OUTPUT_TOKENS_UPPER_LIMIT
201 }
202
203 const cap = getModelCapability(model)
204 if (cap?.max_tokens && cap.max_tokens >= 4_096) {
205 upperLimit = cap.max_tokens
206 defaultTokens = Math.min(defaultTokens, upperLimit)

Callers 5

getStoredSessionCostsFunction · 0.85
addToTotalModelUsageFunction · 0.85
DoctorFunction · 0.85

Calls 3

resolveAntModelFunction · 0.85
getCanonicalNameFunction · 0.85
getModelCapabilityFunction · 0.85

Tested by

no test coverage detected