67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
namespace Service.AI;
|
||
|
||
/// <summary>
|
||
/// 提示词模板引擎,处理占位符替换
|
||
/// </summary>
|
||
public class PromptTemplateEngine
|
||
{
|
||
/// <summary>
|
||
/// 替换模板中的占位符
|
||
/// </summary>
|
||
/// <param name="template">模板字符串,支持 {{key}} 格式的占位符</param>
|
||
/// <param name="placeholders">占位符字典,key 为占位符名称(不含 {{ }}),value 为替换值</param>
|
||
/// <returns>替换后的字符串</returns>
|
||
public static string ReplacePlaceholders(string template, Dictionary<string, string> placeholders)
|
||
{
|
||
if (string.IsNullOrEmpty(template) || placeholders == null || placeholders.Count == 0)
|
||
{
|
||
return template;
|
||
}
|
||
|
||
var result = template;
|
||
foreach (var placeholder in placeholders)
|
||
{
|
||
var key = placeholder.Key;
|
||
var value = placeholder.Value ?? string.Empty;
|
||
result = result.Replace($"{{{{{key}}}}}", value);
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 替换模板中的占位符(简化版本)
|
||
/// </summary>
|
||
/// <param name="template">模板字符串</param>
|
||
/// <param name="categoryName">分类名称</param>
|
||
/// <param name="categoryType">分类类型</param>
|
||
/// <param name="colorScheme">颜色方案</param>
|
||
/// <param name="styleStrength">风格强度(0.0-1.0)</param>
|
||
/// <returns>替换后的字符串</returns>
|
||
public static string ReplaceForIconGeneration(
|
||
string template,
|
||
string categoryName,
|
||
string categoryType,
|
||
string colorScheme,
|
||
double styleStrength)
|
||
{
|
||
var strengthDescription = styleStrength switch
|
||
{
|
||
>= 0.9 => "极度简约(仅保留最核心元素)",
|
||
>= 0.7 => "高度简约(去除所有装饰)",
|
||
>= 0.5 => "简约(保留必要细节)",
|
||
_ => "适中"
|
||
};
|
||
|
||
var placeholders = new Dictionary<string, string>
|
||
{
|
||
["category_name"] = categoryName,
|
||
["category_type"] = categoryType,
|
||
["color_scheme"] = colorScheme,
|
||
["style_strength"] = $"{styleStrength:F1} - {strengthDescription}"
|
||
};
|
||
|
||
return ReplacePlaceholders(template, placeholders);
|
||
}
|
||
}
|