This commit is contained in:
rookit
2026-04-27 17:32:42 +08:00
parent 6b41a913b8
commit 1ea734bedc
3 changed files with 9 additions and 9 deletions
@@ -1,4 +1,4 @@
你是一名资深 SOC / DFIR 事件调查分析师。你的任务是阅读输入的 Case 全量结构化数据,产出一份严格符合 `IncidentReport` Schema
你是一名资深 SOC / DFIR 事件调查分析师。你的任务是阅读输入的 Case 全量结构化数据,产出一份严格符合 `InvestigationReport` Schema
的调查报告。
你的目标不是简单复述字段,而是做基于证据的案件研判:判断这是否是真实安全事件、攻击者做了什么、做到哪一步、影响多大、应如何响应。
@@ -112,6 +112,6 @@ SOP-5 形成处置建议
最终要求:
- 输出必须完全符合 `IncidentReport` 结构。
- 输出必须完全符合 `InvestigationReport` 结构。
- 如果某些信息缺失,也要给出最合理、最克制的结论,不得留空。
- 在信息不足时,优先降低置信度并明确不确定性,而不是编造细节。
+4 -4
View File
@@ -49,7 +49,7 @@ class RemediationRecommendation(BaseModel):
priority: CasePriority = Field(description="该处置动作自身的执行优先级。")
class IncidentReport(BaseModel):
class InvestigationReport(BaseModel):
model_config = ConfigDict(use_enum_values=False)
severity: Severity = Field(description="AI 评估的事件严重程度,必须结合攻击链深度、权限水平、受影响范围和业务风险判断。")
@@ -92,8 +92,8 @@ class Playbook(BasePlaybook):
system_message,
HumanMessage(content=content)
]
llm = llm.with_structured_output(IncidentReport)
response: IncidentReport = llm.invoke(messages)
llm = llm.with_structured_output(InvestigationReport)
response: InvestigationReport = llm.invoke(messages)
report_payload = response.model_dump(mode="json")
comment_payload = {
@@ -108,7 +108,7 @@ class Playbook(BasePlaybook):
impact_ai=response.impact,
priority_ai=response.priority,
confidence_ai=response.confidence,
comment_ai=json.dumps(comment_payload, ensure_ascii=False, indent=2),
investigation_report_ai=json.dumps(comment_payload, ensure_ascii=False, indent=2),
)
Case.update(case_new)
print(report_payload)
+3 -3
View File
@@ -404,8 +404,8 @@ class AlertModel(BaseSystemModel):
class CaseModel(BaseSystemModel):
"""安全案件,多个告警聚合而成,安全人员与AI分析处理的核心对象"""
_AI_EXCLUDE_FIELDS: ClassVar[set[str]] = {"workbook", "summary_ai", "comment_ai", "attack_stage_ai", "severity_ai", "confidence_ai", "impact_ai",
"priority_ai", "verdict_ai"}
_AI_EXCLUDE_FIELDS: ClassVar[set[str]] = {"workbook", "summary_ai", "investigation_report_ai", "severity_ai", "confidence_ai", "impact_ai", "priority_ai",
"verdict_ai"}
# 系统自动生成字段
id: Optional[str] = Field(default=None, init=False, description="Record ID e.g. case_000001 (记录 ID e.g. case_000001,系统自动生成,无需手动赋值)")
@@ -454,7 +454,7 @@ class CaseModel(BaseSystemModel):
confidence_ai: Optional[Confidence] = Field(default=None, description="AI-assessed confidence (AI 评估置信度)")
impact_ai: Optional[Impact] = Field(default=None, description="AI-assessed impact (AI 评估影响)")
priority_ai: Optional[CasePriority] = Field(default=None, description="AI-assessed response priority (AI 评估响应优先级)")
comment_ai: Optional[str] = Field(default="", description="AI-generated comment (AI 生成的注释)")
investigation_report_ai: Optional[str] = Field(default="", description="AI-generated investigation report (AI 生成的调查报告)")
verdict_ai: Optional[CaseVerdict] = Field(default=None, description="AI-generated final verdict (AI 生成的最终判定结果)")
summary_ai: Optional[str] = Field(default="", description="AI-generated closure summary (AI 生成的结案摘要)")