fix: return configured managed models from model list endpoint
This commit is contained in:
parent
75f2676236
commit
7ae03c814f
1 changed files with 37 additions and 0 deletions
|
|
@ -6,6 +6,7 @@ import logger from './logger.js';
|
||||||
import { convertData, getOpenAIStreamChunkStop } from '../convert/convert.js';
|
import { convertData, getOpenAIStreamChunkStop } from '../convert/convert.js';
|
||||||
import { ProviderStrategyFactory } from './provider-strategies.js';
|
import { ProviderStrategyFactory } from './provider-strategies.js';
|
||||||
import { getPluginManager } from '../core/plugin-manager.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;
|
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 路由模式下的模型聚合 ---
|
// --- 核心逻辑: auto 路由模式下的模型聚合 ---
|
||||||
if (CONFIG.MODEL_PROVIDER === MODEL_PROVIDER.AUTO && providerPoolManager) {
|
if (CONFIG.MODEL_PROVIDER === MODEL_PROVIDER.AUTO && providerPoolManager) {
|
||||||
logger.info(`[ModelList] Aggregating models for 'auto' mode...`);
|
logger.info(`[ModelList] Aggregating models for 'auto' mode...`);
|
||||||
|
|
@ -829,6 +859,12 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
|
||||||
} else {
|
} else {
|
||||||
// --- 单提供商逻辑 ---
|
// --- 单提供商逻辑 ---
|
||||||
const toProvider = CONFIG.MODEL_PROVIDER;
|
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 前缀),这里兜底获取
|
// service 可能未在上层预先注入(例如仅改了路径 provider 前缀),这里兜底获取
|
||||||
let resolvedService = service;
|
let resolvedService = service;
|
||||||
|
|
@ -852,6 +888,7 @@ export async function handleModelListRequest(req, res, service, endpointType, CO
|
||||||
} else {
|
} else {
|
||||||
logger.info(`[ModelList Convert] Model list format matches. No conversion needed.`);
|
logger.info(`[ModelList Convert] Model list format matches. No conversion needed.`);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// logger.info(`[ModelList Response] Sending model list to client: ${JSON.stringify(clientModelList)}`);
|
// logger.info(`[ModelList Response] Sending model list to client: ${JSON.stringify(clientModelList)}`);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue