Retry for openrouter on max_tokens overage (#2274)

This commit is contained in:
Neal Shah
2026-01-13 12:30:05 +05:30
committed by GitHub
parent 237a96c706
commit 989ee58f05
@@ -84,7 +84,7 @@ export class OpenRouterProvider implements IChatProvider {
messages = await OpenAIUtil.process_input_messages(messages);
const completion = await this.#openai.chat.completions.create({
const completionParams = {
messages,
model: modelIdForParams,
...(tools ? { tools } : {}),
@@ -95,7 +95,23 @@ export class OpenRouterProvider implements IChatProvider {
stream_options: { include_usage: true },
} : {}),
usage: { include: true },
} as ChatCompletionCreateParams);
} as ChatCompletionCreateParams;
let completion;
try {
completion = await this.#openai.chat.completions.create(completionParams);
} catch ( e: any ) {
// If you overestimate allowed max_tokens on openrouter then it will throw an error.
// Since we know the user has enough for the query anyways, we should reexecute the
// request without max_tokens.
if ( e && e.error && e.error.message && e.error.message.startsWith("This endpoint's maximum context length is ") ) {
delete completionParams.max_tokens;
completion = await this.#openai.chat.completions.create(completionParams);
} else {
console.log('Openarouter error: ', e.error.message);
throw e;
}
}
return OpenAIUtil.handle_completion_output({
usage_calculator: ({ usage }) => {