using LLama.Web.Common;
namespace LLama.Web
{
public static class Extensions
{
///
/// Combines the AntiPrompts list and AntiPrompt csv
///
/// The session configuration.
/// Combined AntiPrompts with duplicates removed
public static List GetAntiPrompts(this ISessionConfig sessionConfig)
{
return CombineCSV(sessionConfig.AntiPrompts, sessionConfig.AntiPrompt);
}
///
/// Combines the OutputFilters list and OutputFilter csv
///
/// The session configuration.
/// Combined OutputFilters with duplicates removed
public static List GetOutputFilters(this ISessionConfig sessionConfig)
{
return CombineCSV(sessionConfig.OutputFilters, sessionConfig.OutputFilter);
}
///
/// Combines a string list and a csv and removes duplicates
///
/// The list.
/// The CSV.
/// Combined list with duplicates removed
private static List CombineCSV(List list, string csv)
{
var results = list is null || list.Count == 0
? CommaSeparatedToList(csv)
: CommaSeparatedToList(csv).Concat(list);
return results
.Distinct()
.ToList();
}
private static List CommaSeparatedToList(string value)
{
if (string.IsNullOrEmpty(value))
return new List();
return value.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.ToList();
}
}
}