Enhance API and Chat Actions with Improved Provider Handling

- Added logging to `getClientApi` for better debugging of provider input and standardized provider names.
- Updated `ChatActions` to handle lowercase provider IDs, converting them to TitleCase for consistency with the ServiceProvider enum.
- Implemented defaulting to OpenAI when provider ID is missing and added relevant logging for session updates.
- Enhanced logging in `useChatStore` to track API call preparations and provider configurations.
This commit is contained in:
AC
2025-04-06 17:03:18 +08:00
parent 78e8cb31c2
commit 04cbadb197
3 changed files with 126 additions and 18 deletions

View File

@@ -361,10 +361,45 @@ export function getHeaders(ignoreHeaders: boolean = false) {
}
export function getClientApi(provider: ServiceProvider | string): ClientApi {
switch (provider) {
console.log(
"[getClientApi] Received Provider (raw):",
provider,
"| Type:",
typeof provider,
);
// Standardize the provider name to match Enum case (TitleCase)
let standardizedProvider: ServiceProvider | string;
if (typeof provider === "string") {
// Convert known lowercase versions to their Enum equivalent
switch (provider.toLowerCase()) {
case "bedrock":
standardizedProvider = ServiceProvider.Bedrock;
break;
case "openai":
standardizedProvider = ServiceProvider.OpenAI;
break;
case "google":
standardizedProvider = ServiceProvider.Google;
break;
// Add other potential lowercase strings if needed
default:
standardizedProvider = provider; // Keep unknown strings as is
}
} else {
standardizedProvider = provider; // Already an Enum value
}
console.log("[getClientApi] Standardized Provider:", standardizedProvider);
switch (standardizedProvider) {
case ServiceProvider.Google:
console.log(
"[getClientApi] Returning ClientApi(ModelProvider.GeminiPro)",
);
return new ClientApi(ModelProvider.GeminiPro);
case ServiceProvider.Anthropic:
console.log("[getClientApi] Returning ClientApi(ModelProvider.Claude)");
return new ClientApi(ModelProvider.Claude);
case ServiceProvider.Baidu:
return new ClientApi(ModelProvider.Ernie);
@@ -387,9 +422,15 @@ export function getClientApi(provider: ServiceProvider | string): ClientApi {
case ServiceProvider.SiliconFlow:
return new ClientApi(ModelProvider.SiliconFlow);
case ServiceProvider.Bedrock:
case "AWS Bedrock":
console.log(
"[getClientApi] Returning ClientApi(ModelProvider.Bedrock) for",
standardizedProvider,
);
return new ClientApi(ModelProvider.Bedrock);
default:
console.log(
`[getClientApi] Provider '${provider}' (Standardized: '${standardizedProvider}') not matched, returning default GPT.`,
);
return new ClientApi(ModelProvider.GPT);
}
}