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) { 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 provider = config.MODEL_PROVIDER;
const providerKey = config.uuid ? provider + config.uuid : provider; const providerKey = config.uuid ? provider + config.uuid : provider;
if (!serviceInstances[providerKey]) { if (!serviceInstances[providerKey]) {
@ -393,4 +394,4 @@ export function getServiceAdapter(config) {
} }
} }
return serviceInstances[providerKey]; 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 fullResponseText = '';
let fullResponseJson = ''; let fullResponseJson = '';
let fullOldResponseJson = ''; let fullOldResponseJson = '';
@ -234,7 +234,8 @@ export async function handleStreamRequest(res, service, model, requestBody, from
// 流式请求成功完成统计使用次数错误次数重置为0 // 流式请求成功完成统计使用次数错误次数重置为0
if (providerPoolManager && pooluuid) { 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, { providerPoolManager.markProviderHealthy(toProvider, {
uuid: pooluuid 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{ try{
// The service returns the response in its native format (toProvider). // The service returns the response in its native format (toProvider).
const needsConversion = getProtocolPrefix(fromProvider) !== getProtocolPrefix(toProvider); const needsConversion = getProtocolPrefix(fromProvider) !== getProtocolPrefix(toProvider);
@ -289,7 +290,8 @@ export async function handleUnaryRequest(res, service, model, requestBody, fromP
// 一元请求成功完成统计使用次数错误次数重置为0 // 一元请求成功完成统计使用次数错误次数重置为0
if (providerPoolManager && pooluuid) { 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, { providerPoolManager.markProviderHealthy(toProvider, {
uuid: pooluuid uuid: pooluuid
}); });
@ -400,6 +402,8 @@ export async function handleContentGenerationRequest(req, res, service, endpoint
} }
console.log(`[Content Generation] Model: ${model}, Stream: ${isStream}`); console.log(`[Content Generation] Model: ${model}, Stream: ${isStream}`);
let actualCustomName = CONFIG.customName;
// 2.5. 如果使用了提供商池,根据模型重新选择提供商(支持 Fallback // 2.5. 如果使用了提供商池,根据模型重新选择提供商(支持 Fallback
// 注意:这里使用 skipUsageCount: true因为初次选择时已经增加了 usageCount // 注意:这里使用 skipUsageCount: true因为初次选择时已经增加了 usageCount
if (providerPoolManager && CONFIG.providerPools && CONFIG.providerPools[CONFIG.MODEL_PROVIDER]) { if (providerPoolManager && CONFIG.providerPools && CONFIG.providerPools[CONFIG.MODEL_PROVIDER]) {
@ -409,6 +413,7 @@ export async function handleContentGenerationRequest(req, res, service, endpoint
service = result.service; service = result.service;
toProvider = result.actualProviderType; toProvider = result.actualProviderType;
actualUuid = result.uuid || pooluuid; actualUuid = result.uuid || pooluuid;
actualCustomName = result.serviceConfig?.customName || CONFIG.customName;
// 如果发生了模型级别的 fallback需要更新请求使用的模型 // 如果发生了模型级别的 fallback需要更新请求使用的模型
if (result.actualModel && result.actualModel !== model) { 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. // 5. Call the appropriate stream or unary handler, passing the provider info.
if (isStream) { 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 { } 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); serviceConfig = deepmerge(config, selectedProviderConfig);
delete serviceConfig.providerPools; // 移除 providerPools 属性 delete serviceConfig.providerPools; // 移除 providerPools 属性
config.uuid = serviceConfig.uuid; 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 { } else {
const errorMsg = `[API Service] No healthy provider found in pool for ${config.MODEL_PROVIDER}${requestedModel ? ` supporting model: ${requestedModel}` : ''}`; const errorMsg = `[API Service] No healthy provider found in pool for ${config.MODEL_PROVIDER}${requestedModel ? ` supporting model: ${requestedModel}` : ''}`;
console.error(errorMsg); console.error(errorMsg);