sync
This commit is contained in:
@@ -587,7 +587,10 @@ export async function handler(
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (retry.retryCount !== MAX_FAILOVER_RETRIES) {
|
// Use fallback provider if max retries reached
|
||||||
|
const fallbackProvider = allProviders.find((provider) => provider.id === modelInfo.fallbackProvider)
|
||||||
|
if (retry.retryCount === MAX_FAILOVER_RETRIES) return fallbackProvider
|
||||||
|
|
||||||
let topPriority = Infinity
|
let topPriority = Infinity
|
||||||
const providers = allProviders
|
const providers = allProviders
|
||||||
.filter((provider) => provider.weight !== 0)
|
.filter((provider) => provider.weight !== 0)
|
||||||
@@ -625,7 +628,7 @@ export async function handler(
|
|||||||
h = (h * 31 + stickyId.charCodeAt(i)) | 0 // 32-bit int
|
h = (h * 31 + stickyId.charCodeAt(i)) | 0 // 32-bit int
|
||||||
}
|
}
|
||||||
const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1
|
const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1
|
||||||
const provider = providers[index || 0]
|
const provider = providers[index || 0] ?? fallbackProvider
|
||||||
|
|
||||||
// sticky provider does not exist => use selected provider
|
// sticky provider does not exist => use selected provider
|
||||||
if (!stickyProviderId) return provider
|
if (!stickyProviderId) return provider
|
||||||
@@ -647,10 +650,6 @@ export async function handler(
|
|||||||
if (!preferBudgetProvider && !preferTpsProvider) return stickProvider
|
if (!preferBudgetProvider && !preferTpsProvider) return stickProvider
|
||||||
|
|
||||||
return provider
|
return provider
|
||||||
}
|
|
||||||
|
|
||||||
// fallback provider
|
|
||||||
return allProviders.find((provider) => provider.id === modelInfo.fallbackProvider)
|
|
||||||
})()
|
})()
|
||||||
|
|
||||||
if (!modelProvider) throw new ModelError(t("zen.api.error.noProviderAvailable"))
|
if (!modelProvider) throw new ModelError(t("zen.api.error.noProviderAvailable"))
|
||||||
|
|||||||
Reference in New Issue
Block a user