Prompts 解析流程设计思路 - 8种高效方法解析大模型提示词
· 阅读需 5 分钟
针对 IPrompt_v3_for_promptsFactory[] 数据结构的解析,我们可以采用以下几种思路来将其转化为精准的大模型提示词:
- 模块拼接法
- 结构化组装法
- 优先级排序法
- 条件动态组装法
- 标签过滤增强法
- 历史感知递归解析法
- 模型特定优化法
- 交互式构建法
1. 模板化拼接法
根据不同的类型,使用预定义的模板字符串进行拼接:
function parsePrompts(prompts: IPrompt_v3_for_promptsFactory[]): string {
const selectedPrompts = prompts.filter((p) => p.status === 'selected');
let finalPrompt = '';
// 按类型分组并按特定顺序拼接
const context = selectedPrompts.filter((p) => p.type === EPrompt_v3_for_promptsFactory_type.CONTEXT);
if (context.length) finalPrompt += `## Background\n${context.map((p) => p.title).join('\n')}\n\n`;
const role = selectedPrompts.filter((p) => p.type === EPrompt_v3_for_promptsFactory_type.ROLE);
if (role.length) finalPrompt += `## Your Role\n${role.map((p) => p.title).join('\n')}\n\n`;
// 依此类推处理其他类型...
return finalPrompt;
}
2. 结构化组装法
将不同类型的提示组织成结构化的 JSON 对象,然后根据预定义的模式转换为文本:
function parsePrompts(prompts: IPrompt_v3_for_promptsFactory[]): string {
const selectedPrompts = prompts.filter((p) => p.status === 'selected');
const promptStructure = {
context: selectedPrompts.filter((p) => p.type === EPrompt_v3_for_promptsFactory_type.CONTEXT),
role: selectedPrompts.filter((p) => p.type === EPrompt_v3_for_promptsFactory_type.ROLE),
// 其他类型...
};
return convertStructureToText(promptStructure);
}
3. 优先级排序法
根据不同类型的重要性和逻辑顺序进行排序,然后拼接:
function parsePrompts(prompts: IPrompt_v3_for_promptsFactory[]): string {
const selectedPrompts = prompts.filter((p) => p.status === 'selected');
// 定义类型优先级
const typePriority = {
[EPrompt_v3_for_promptsFactory_type.CONTEXT]: 1,
[EPrompt_v3_for_promptsFactory_type.ROLE]: 2,
[EPrompt_v3_for_promptsFactory_type.OBJECTIVE]: 3,
// 其他类型优先级...
};
// 按优先级排序
selectedPrompts.sort((a, b) => typePriority[a.type] - typePriority[b.type]);
// 拼接最终提示词
return selectedPrompts.map((p) => `[${p.type}]: ${p.title}`).join('\n\n');
}
4. 条件动态组装法
根据存在的提示类型动态调整组装策略:
function parsePrompts(prompts: IPrompt_v3_for_promptsFactory[]): string {
const selectedPrompts = prompts.filter((p) => p.status === 'selected');
let finalPrompt = '';
// 检查是否有特定类型
const hasRole = selectedPrompts.some((p) => p.type === EPrompt_v3_for_promptsFactory_type.ROLE);
const hasObjective = selectedPrompts.some((p) => p.type === EPrompt_v3_for_promptsFactory_type.OBJECTIVE);
// 根据存在的类型动态调整模板
if (hasRole && hasObjective) {
// 角色导向的任务模板
finalPrompt = constructRoleBasedPrompt(selectedPrompts);
} else if (hasObjective) {
// 目标导向的任务模板
finalPrompt = constructObjectiveBasedPrompt(selectedPrompts);
} else {
// 默认模板
finalPrompt = constructDefaultPrompt(selectedPrompts);
}
return finalPrompt;
}
5. 标签 过滤增强法
利用标签(tags)属性进行更精细的过滤和增强:
function parsePrompts(prompts: IPrompt_v3_for_promptsFactory[]): string {
const selectedPrompts = prompts.filter((p) => p.status === 'selected');
// 根据标签分组
const promptsByTag = {};
selectedPrompts.forEach((p) => {
if (p.tags) {
p.tags.forEach((tag) => {
if (!promptsByTag[tag]) promptsByTag[tag] = [];
promptsByTag[tag].push(p);
});
}
});
// 根据标签组合构建特定的提示词部分
// ...
return finalPrompt;
}