fix: return configured managed models from model list endpoint

This commit is contained in:
HenryZ-0302 2026-04-05 13:56:55 -07:00
parent 75f2676236
commit 7ae03c814f

View file

@ -6,6 +6,7 @@ import logger from './logger.js';
import { convertData, getOpenAIStreamChunkStop } from '../convert/convert.js';
import { ProviderStrategyFactory } from './provider-strategies.js';
import { getPluginManager } from '../core/plugin-manager.js';
import { getConfiguredSupportedModels, usesManagedModelList } from '../providers/provider-models.js';
// ==================== 网络错误处理 ====================
@ -822,6 +823,35 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
let clientModelList;
const buildConfiguredModelListResponse = (models, providerType, listEndpointType) => {
if (listEndpointType === ENDPOINT_TYPE.OPENAI_MODEL_LIST) {
return {
object: 'list',
data: models.map(model => ({
id: model,
object: 'model',
created: Math.floor(Date.now() / 1000),
owned_by: providerType
}))
};
}
if (listEndpointType === ENDPOINT_TYPE.GEMINI_MODEL_LIST) {
return {
models: models.map(model => ({
name: `models/${model}`,
baseModelId: model,
version: 'v1',
displayName: model,
description: `Model ${model} provided by ${providerType}`,
supportedGenerationMethods: ['generateContent', 'countTokens']
}))
};
}
return { data: [] };
};
// --- 核心逻辑: auto 路由模式下的模型聚合 ---
if (CONFIG.MODEL_PROVIDER === MODEL_PROVIDER.AUTO && providerPoolManager) {
logger.info(`[ModelList] Aggregating models for 'auto' mode...`);
@ -829,6 +859,12 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
} else {
// --- 单提供商逻辑 ---
const toProvider = CONFIG.MODEL_PROVIDER;
const configuredSupportedModels = getConfiguredSupportedModels(toProvider, CONFIG);
if (usesManagedModelList(toProvider) && configuredSupportedModels.length > 0) {
logger.info(`[ModelList] Returning configured supported models for ${toProvider}: ${configuredSupportedModels.join(', ')}`);
clientModelList = buildConfiguredModelListResponse(configuredSupportedModels, toProvider, endpointType);
} else {
// service 可能未在上层预先注入(例如仅改了路径 provider 前缀),这里兜底获取
let resolvedService = service;
@ -852,6 +888,7 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
} else {
logger.info(`[ModelList Convert] Model list format matches. No conversion needed.`);
}
}
}
// logger.info(`[ModelList Response] Sending model list to client: ${JSON.stringify(clientModelList)}`);