feat: add aiops payload query augmentation
This commit is contained in:
@@ -205,15 +205,33 @@ public class AiOpsService {
|
||||
|| !isBlank(request.getTimeRange());
|
||||
}
|
||||
|
||||
String buildKnowledgeRetrievalQuery(AIOpsRequest request) {
|
||||
if (request == null || !hasAlertPayload(request)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
StringBuilder query = new StringBuilder();
|
||||
appendQueryTerm(query, request.getAlertName());
|
||||
appendQueryTerm(query, request.getService());
|
||||
appendQueryTerm(query, request.getSeverity());
|
||||
appendQueryTerm(query, request.getDescription());
|
||||
appendQueryTerm(query, request.getTimeRange());
|
||||
appendQueryTerm(query, request.getUserRequest());
|
||||
return query.toString();
|
||||
}
|
||||
|
||||
String buildTaskPrompt(AIOpsRequest request) {
|
||||
StringBuilder prompt = new StringBuilder();
|
||||
prompt.append("你是企业级 SRE,接到了自动化告警排查任务。请结合工具调用,执行**规划→执行→再规划**的闭环,并最终按照固定模板输出《告警分析报告》。禁止编造虚假数据,如连续多次查询失败需诚实反馈无法完成的原因。");
|
||||
prompt.append("\n\n本次告警输入:\n");
|
||||
prompt.append(buildQuerySummary(request));
|
||||
if (hasAlertPayload(request)) {
|
||||
String knowledgeQuery = buildKnowledgeRetrievalQuery(request);
|
||||
prompt.append("\n\nAIOps scope mode: PAYLOAD_TARGETED\n");
|
||||
prompt.append("- The request includes an alert payload. Treat the supplied alert payload as the primary and only main diagnosis target.\n");
|
||||
prompt.append("- The final report must focus on the supplied alert fields such as alertName, service, severity, description, and timeRange.\n");
|
||||
prompt.append("- Recommended lookup_knowledge query: ").append(knowledgeQuery).append("\n");
|
||||
prompt.append("- If knowledge-base evidence is needed, call lookup_knowledge with the recommended query or a narrower query that preserves alertName and service.\n");
|
||||
prompt.append("- You may call queryPrometheusAlerts only to verify whether the supplied alert is still active or to identify related risk/context.\n");
|
||||
prompt.append("- If queryPrometheusAlerts returns unrelated active alerts, do not create full root-cause or remediation sections for them.\n");
|
||||
prompt.append("- Mention unrelated active alerts only briefly in a Related Risk section when they help explain the supplied alert.\n");
|
||||
@@ -316,6 +334,15 @@ public class AiOpsService {
|
||||
}
|
||||
}
|
||||
|
||||
private void appendQueryTerm(StringBuilder builder, String value) {
|
||||
if (!isBlank(value)) {
|
||||
if (!builder.isEmpty()) {
|
||||
builder.append(' ');
|
||||
}
|
||||
builder.append(value.trim());
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isBlank(String value) {
|
||||
return value == null || value.trim().isEmpty();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user