Optimized the keys to remove data type

This commit is contained in:
Thorsten Sommer 2025-11-13 16:38:58 +01:00
parent ca50aecae1
commit 42d67d512e
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108

View File

@ -528,7 +528,7 @@ public abstract class BaseProvider : IProvider, ISecretId
/// (case-insensitive). The parameters stream, model, and messages are removed by default.</param> /// (case-insensitive). The parameters stream, model, and messages are removed by default.</param>
protected IDictionary<string, object> ParseApiParameters( protected IDictionary<string, object> ParseApiParameters(
string additionalUserProvidedParameters, string additionalUserProvidedParameters,
params IEnumerable<string> keysToRemove) params List<string> keysToRemove)
{ {
try try
{ {
@ -536,16 +536,15 @@ public abstract class BaseProvider : IProvider, ISecretId
var jsonDoc = JsonSerializer.Deserialize<JsonElement>(json, JSON_SERIALIZER_OPTIONS); var jsonDoc = JsonSerializer.Deserialize<JsonElement>(json, JSON_SERIALIZER_OPTIONS);
var dict = this.ConvertToDictionary(jsonDoc); var dict = this.ConvertToDictionary(jsonDoc);
// Some keys are always removed because we always set them // Some keys are always removed because we set them:
var finalKeysToRemove = keysToRemove?.ToList() ?? []; keysToRemove.Add("stream");
finalKeysToRemove.Add("stream"); keysToRemove.Add("model");
finalKeysToRemove.Add("model"); keysToRemove.Add("messages");
finalKeysToRemove.Add("messages");
var removeSet = new HashSet<string>(finalKeysToRemove, StringComparer.OrdinalIgnoreCase); // Remove the specified keys (case-insensitive):
var toRemove = dict.Keys.Where(k => removeSet.Contains(k)).ToList(); var removeSet = new HashSet<string>(keysToRemove, StringComparer.OrdinalIgnoreCase);
foreach (var k in toRemove) foreach (var key in removeSet)
dict.Remove(k); dict.Remove(key);
return dict; return dict;
} }