Problem
KnowledgePoint model has two validation issues when used with LLM-extracted knowledge points:
document_id is required — LLM extraction doesn't produce this field, causing Field required [type=missing] error
prerequisites expects UUID list — LLM outputs prerequisite titles as strings (e.g., ["智能体的定义"]), causing uuid_parsing error
Steps to Reproduce
- Extract knowledge points from a document using
KnowledgeExtractorAgent
- Save results to
knowledge_points.json
- Load and validate with
KnowledgePoint.model_validate(kp)
- Pydantic raises validation errors
Expected
The model should be flexible enough to handle LLM-generated data.
Suggested Fix
- Make
document_id optional:
document_id: UUID | None = None
- Add a validator to coerce string prerequisites to UUIDs:
@field_validator("prerequisites", mode="before")
@classmethod
def coerce_prerequisites(cls, v: list) -> list[UUID]:
result = []
for item in v:
if isinstance(item, UUID):
result.append(item)
elif isinstance(item, str):
try:
result.append(UUID(item))
except ValueError:
result.append(uuid5(NAMESPACE_DNS, item))
return result
Environment
- Python 3.14, Windows 11, latest main branch
Problem
KnowledgePointmodel has two validation issues when used with LLM-extracted knowledge points:document_idis required — LLM extraction doesn't produce this field, causingField required [type=missing]errorprerequisitesexpects UUID list — LLM outputs prerequisite titles as strings (e.g.,["智能体的定义"]), causinguuid_parsingerrorSteps to Reproduce
KnowledgeExtractorAgentknowledge_points.jsonKnowledgePoint.model_validate(kp)Expected
The model should be flexible enough to handle LLM-generated data.
Suggested Fix
document_idoptional:Environment