

























@@ -4,8 +4,9 @@ import { collectProviderApiKeys, isApiKeyRateLimitError } from "./live-auth-keys
44import {
55resolveTransientProviderAttempts,
66resolveTransientProviderDelayMs,
7+resolveTransientProviderRetryOptions,
78shouldRetrySameKeyProviderOperation,
8-type TransientProviderRetryOptions,
9+type TransientProviderRetryConfig,
910} from "./provider-operation-retry.js";
10111112type ApiKeyRetryParams = {
@@ -20,7 +21,7 @@ type ExecuteWithApiKeyRotationOptions<T> = {
2021execute: (apiKey: string) => Promise<T>;
2122shouldRetry?: (params: ApiKeyRetryParams & { message: string }) => boolean;
2223onRetry?: (params: ApiKeyRetryParams & { message: string }) => void;
23-transientRetry?: TransientProviderRetryOptions;
24+transientRetry?: TransientProviderRetryConfig;
2425};
25262627function dedupeApiKeys(raw: string[]): string[] {
@@ -54,9 +55,10 @@ export async function executeWithApiKeyRotation<T>(
5455}
55565657let lastError: unknown;
58+const transientRetry = resolveTransientProviderRetryOptions(params.transientRetry);
5759 keyLoop: for (let apiKeyIndex = 0; apiKeyIndex < keys.length; apiKeyIndex += 1) {
5860const apiKey = keys[apiKeyIndex];
59-const maxOperationAttempts = resolveTransientProviderAttempts(params.transientRetry);
61+const maxOperationAttempts = resolveTransientProviderAttempts(transientRetry);
6062for (let attemptNumber = 1; attemptNumber <= maxOperationAttempts; attemptNumber += 1) {
6163try {
6264return await params.execute(apiKey);
@@ -76,9 +78,9 @@ export async function executeWithApiKeyRotation<T>(
7678}
77797880if (
79-!params.transientRetry ||
81+!transientRetry ||
8082!shouldRetrySameKeyProviderOperation({
81-options: params.transientRetry,
83+options: transientRetry,
8284 error,
8385 message,
8486provider: params.provider,
@@ -90,9 +92,9 @@ export async function executeWithApiKeyRotation<T>(
9092break keyLoop;
9193}
929493-const delayMs = resolveTransientProviderDelayMs(params.transientRetry, attemptNumber);
94-const sleep = params.transientRetry.sleep ?? sleepWithAbort;
95-await sleep(delayMs, params.transientRetry.signal);
95+const delayMs = resolveTransientProviderDelayMs(transientRetry, attemptNumber);
96+const sleep = transientRetry.sleep ?? sleepWithAbort;
97+await sleep(delayMs, transientRetry.signal);
9698}
9799}
98100}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。