Prompt Builder - 高级特性
1. 优先级控制
多个 PromptBuilder 按 priority() 值从小到大排序执行:
@Component
public class HighPriorityBuilder implements PromptBuilder {
@Override
public int priority() {
return 10; // 先执行
}
// ...
}
@Component
public class LowPriorityBuilder implements PromptBuilder {
@Override
public int priority() {
return 100; // 后执行
}
// ...
}
合并规则:
systemTextToPrepend:按优先级顺序拼接systemTextToAppend:按优先级顺序拼接messagesToPrepend:按优先级顺序依次添加messagesToAppend:按优先级顺序依次添加
2. 条件匹配
通过 match() 方法实现条件性参与:
@Component
public class ConditionalPromptBuilder implements PromptBuilder {
@Override
public boolean match(ModelRequest request) {
// 只在首次模型调用时参与
Integer iteration = (Integer) request.getState().get("iteration_count");
return iteration == null || iteration == 0;
}
@Override
public PromptContribution build(ModelRequest request) {
return PromptContribution.builder()
.systemTextToPrepend("这是首次对话,请特别注意...")
.build();
}
}
常见匹配条件
// 根据用户输入内容匹配
public boolean match(ModelRequest request) {
String input = extractUserInput(request);
return input != null && input.contains("代码");
}
// 根据状态标志匹配
public boolean match(ModelRequest request) {
Boolean needsTools = (Boolean) request.getState().get("needs_tool");
return Boolean.TRUE.equals(needsTools);
}
// 根据已有工具匹配
public boolean match(ModelRequest request) {
return request.getTools() != null && !request.getTools().isEmpty();
}