AgentGraph / backend /models.py
wu981526092's picture
🚀 Deploy AgentGraph: Complete agent monitoring and knowledge graph system
c2ea5ed
"""
Pydantic models for request and response validation
"""
from typing import Optional, List, Dict, Any, Union
from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum
class KnowledgeGraphResponse(BaseModel):
"""Response model for knowledge graphs"""
files: List[str]
class PlatformStatsResponse(BaseModel):
"""Response model for platform statistics"""
total_graphs: int
total_entities: int
total_relations: int
entity_distribution: Dict[str, int]
relation_distribution: Dict[str, int]
recent_graphs: List[Dict[str, Any]]
# Context Document Models
class ContextDocumentType(str, Enum):
"""Enumeration of context document types."""
DOMAIN_KNOWLEDGE = "domain_knowledge"
SCHEMA = "schema"
DOCUMENTATION = "documentation"
GUIDELINES = "guidelines"
EXAMPLES = "examples"
class ContextDocument(BaseModel):
"""Context document model."""
id: str
title: str = Field(..., max_length=200, description="Document title")
document_type: ContextDocumentType
content: str = Field(..., max_length=100000, description="Document content")
file_name: Optional[str] = Field(None, description="Original file name if uploaded")
created_at: datetime
is_active: bool = Field(default=True, description="Whether document is active")
class CreateContextRequest(BaseModel):
"""Request model for creating context documents."""
title: str = Field(..., max_length=200, description="Document title")
document_type: ContextDocumentType
content: str = Field(..., max_length=100000, description="Document content")
file_name: Optional[str] = Field(None, description="Original file name if uploaded")
class UpdateContextRequest(BaseModel):
"""Request model for updating context documents."""
title: Optional[str] = Field(None, max_length=200, description="Document title")
document_type: Optional[ContextDocumentType] = None
content: Optional[str] = Field(None, max_length=100000, description="Document content")
is_active: Optional[bool] = None
class ContextDocumentResponse(BaseModel):
"""Response model for context document operations."""
success: bool
message: str
data: Optional[ContextDocument] = None
class ContextStats(BaseModel):
"""Statistics for context documents."""
total_count: int
active_count: int
by_type: Dict[ContextDocumentType, int]