chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Any, Optional
|
||||
|
||||
|
||||
class ExtractedEntity(BaseModel):
|
||||
"""A single entity extracted from text by the LLM."""
|
||||
|
||||
entity_name: str = Field(
|
||||
description="Name of the entity. Use title case for case-insensitive names."
|
||||
)
|
||||
entity_type: str = Field(description="Type/category of the entity.")
|
||||
entity_description: str = Field(
|
||||
description="Concise yet comprehensive description of the entity based on the input text."
|
||||
)
|
||||
|
||||
|
||||
class ExtractedRelationship(BaseModel):
|
||||
"""A single relationship between two entities extracted from text."""
|
||||
|
||||
source_entity: str = Field(
|
||||
description="Name of the source entity in the relationship."
|
||||
)
|
||||
target_entity: str = Field(
|
||||
description="Name of the target entity in the relationship."
|
||||
)
|
||||
relationship_keywords: str = Field(
|
||||
description="Comma-separated high-level keywords summarizing the relationship."
|
||||
)
|
||||
relationship_description: str = Field(
|
||||
description="Concise explanation of the relationship between source and target entities."
|
||||
)
|
||||
|
||||
|
||||
class EntityExtractionResult(BaseModel):
|
||||
"""Structured output format for entity and relationship extraction from text."""
|
||||
|
||||
entities: list[ExtractedEntity] = Field(
|
||||
default_factory=list,
|
||||
description="List of entities extracted from the input text.",
|
||||
)
|
||||
relationships: list[ExtractedRelationship] = Field(
|
||||
default_factory=list,
|
||||
description="List of relationships between entities extracted from the input text.",
|
||||
)
|
||||
|
||||
|
||||
class KnowledgeGraphNode(BaseModel):
|
||||
id: str
|
||||
labels: list[str]
|
||||
properties: dict[str, Any] # anything else goes here
|
||||
|
||||
|
||||
class KnowledgeGraphEdge(BaseModel):
|
||||
id: str
|
||||
type: Optional[str]
|
||||
source: str # id of source node
|
||||
target: str # id of target node
|
||||
properties: dict[str, Any] # anything else goes here
|
||||
|
||||
|
||||
class KnowledgeGraph(BaseModel):
|
||||
nodes: list[KnowledgeGraphNode] = []
|
||||
edges: list[KnowledgeGraphEdge] = []
|
||||
is_truncated: bool = False
|
||||
Reference in New Issue
Block a user