Merge pull request #172 from ZqinKing/main

feat: 在日志中添加凭证自定义名称(customName)以增强可读性
This commit is contained in:
何夕2077 2026-01-06 21:27:00 +08:00 committed by GitHub
commit a8a1301da7
3 changed files with 17 additions and 9 deletions

View file

@ -362,7 +362,8 @@ export const serviceInstances = {};
// 服务适配器工厂
export function getServiceAdapter(config) {
console.log(`[Adapter] getServiceAdapter, provider: ${config.MODEL_PROVIDER}, uuid: ${config.uuid}`);
const customNameDisplay = config.customName ? ` (${config.customName})` : '';
console.log(`[Adapter] getServiceAdapter, provider: ${config.MODEL_PROVIDER}, uuid: ${config.uuid}${customNameDisplay}`);
const provider = config.MODEL_PROVIDER;
const providerKey = config.uuid ? provider + config.uuid : provider;
if (!serviceInstances[providerKey]) {
@ -393,4 +394,4 @@ export function getServiceAdapter(config) {
}
}
return serviceInstances[providerKey];
}
}

View file

@ -177,7 +177,7 @@ export async function handleUnifiedResponse(res, responsePayload, isStream) {
}
}
export async function handleStreamRequest(res, service, model, requestBody, fromProvider, toProvider, PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, pooluuid) {
export async function handleStreamRequest(res, service, model, requestBody, fromProvider, toProvider, PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, pooluuid, customName) {
let fullResponseText = '';
let fullResponseJson = '';
let fullOldResponseJson = '';
@ -234,7 +234,8 @@ export async function handleStreamRequest(res, service, model, requestBody, from
// 流式请求成功完成统计使用次数错误次数重置为0
if (providerPoolManager && pooluuid) {
console.log(`[Provider Pool] Increasing usage count for ${toProvider} (${pooluuid}) after successful stream request`);
const customNameDisplay = customName ? `, ${customName}` : '';
console.log(`[Provider Pool] Increasing usage count for ${toProvider} (${pooluuid}${customNameDisplay}) after successful stream request`);
providerPoolManager.markProviderHealthy(toProvider, {
uuid: pooluuid
});
@ -266,7 +267,7 @@ export async function handleStreamRequest(res, service, model, requestBody, from
}
export async function handleUnaryRequest(res, service, model, requestBody, fromProvider, toProvider, PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, pooluuid) {
export async function handleUnaryRequest(res, service, model, requestBody, fromProvider, toProvider, PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, pooluuid, customName) {
try{
// The service returns the response in its native format (toProvider).
const needsConversion = getProtocolPrefix(fromProvider) !== getProtocolPrefix(toProvider);
@ -289,7 +290,8 @@ export async function handleUnaryRequest(res, service, model, requestBody, fromP
// 一元请求成功完成统计使用次数错误次数重置为0
if (providerPoolManager && pooluuid) {
console.log(`[Provider Pool] Increasing usage count for ${toProvider} (${pooluuid}) after successful unary request`);
const customNameDisplay = customName ? `, ${customName}` : '';
console.log(`[Provider Pool] Increasing usage count for ${toProvider} (${pooluuid}${customNameDisplay}) after successful unary request`);
providerPoolManager.markProviderHealthy(toProvider, {
uuid: pooluuid
});
@ -400,6 +402,8 @@ export async function handleContentGenerationRequest(req, res, service, endpoint
}
console.log(`[Content Generation] Model: ${model}, Stream: ${isStream}`);
let actualCustomName = CONFIG.customName;
// 2.5. 如果使用了提供商池,根据模型重新选择提供商(支持 Fallback
// 注意:这里使用 skipUsageCount: true因为初次选择时已经增加了 usageCount
if (providerPoolManager && CONFIG.providerPools && CONFIG.providerPools[CONFIG.MODEL_PROVIDER]) {
@ -409,6 +413,7 @@ export async function handleContentGenerationRequest(req, res, service, endpoint
service = result.service;
toProvider = result.actualProviderType;
actualUuid = result.uuid || pooluuid;
actualCustomName = result.serviceConfig?.customName || CONFIG.customName;
// 如果发生了模型级别的 fallback需要更新请求使用的模型
if (result.actualModel && result.actualModel !== model) {
@ -443,9 +448,9 @@ export async function handleContentGenerationRequest(req, res, service, endpoint
// 5. Call the appropriate stream or unary handler, passing the provider info.
if (isStream) {
await handleStreamRequest(res, service, model, processedRequestBody, fromProvider, toProvider, CONFIG.PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, actualUuid);
await handleStreamRequest(res, service, model, processedRequestBody, fromProvider, toProvider, CONFIG.PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, actualUuid, actualCustomName);
} else {
await handleUnaryRequest(res, service, model, processedRequestBody, fromProvider, toProvider, CONFIG.PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, actualUuid);
await handleUnaryRequest(res, service, model, processedRequestBody, fromProvider, toProvider, CONFIG.PROMPT_LOG_MODE, PROMPT_LOG_FILENAME, providerPoolManager, actualUuid, actualCustomName);
}
}

View file

@ -252,7 +252,9 @@ export async function getApiService(config, requestedModel = null, options = {})
serviceConfig = deepmerge(config, selectedProviderConfig);
delete serviceConfig.providerPools; // 移除 providerPools 属性
config.uuid = serviceConfig.uuid;
console.log(`[API Service] Using pooled configuration for ${config.MODEL_PROVIDER}: ${serviceConfig.uuid}${requestedModel ? ` (model: ${requestedModel})` : ''}`);
config.customName = serviceConfig.customName;
const customNameDisplay = serviceConfig.customName ? ` (${serviceConfig.customName})` : '';
console.log(`[API Service] Using pooled configuration for ${config.MODEL_PROVIDER}: ${serviceConfig.uuid}${customNameDisplay}${requestedModel ? ` (model: ${requestedModel})` : ''}`);
} else {
const errorMsg = `[API Service] No healthy provider found in pool for ${config.MODEL_PROVIDER}${requestedModel ? ` supporting model: ${requestedModel}` : ''}`;
console.error(errorMsg);