| from pydantic import BaseModel, Field |
| from typing import List, Dict, Any, Optional |
| from datetime import datetime |
|
|
|
|
| class FileInfo(BaseModel): |
| """Information about the file being processed.""" |
| name: str = Field(description="File name") |
| type: str = Field(description="File type/extension") |
| size_mb: float = Field(description="File size in MB") |
| path: str = Field(description="Full file path") |
|
|
|
|
| class SimplifiedAgentConfig(BaseModel): |
| """Simplified configuration for agent creation without complex nesting.""" |
| instructions: str = Field(description="Single string instructions") |
| requirement_type: str = Field(default="standard", description="Type of requirements") |
| custom_notes: List[str] = Field(default_factory=list, description="Simple notes") |
|
|
|
|
| class ProcessingPlan(BaseModel): |
| """Simplified processing plan for document analysis.""" |
| |
| document_type: str = Field(description="Document type (financial, legal, technical, etc.)") |
| analysis_objective: str = Field(description="Primary analysis objective") |
| complexity: str = Field(default="moderate", description="Complexity level") |
| processing_strategy: str = Field(description="Overall processing strategy") |
| |
| |
| agent_configs: Dict[str, str] = Field( |
| default_factory=dict, |
| description="Simple agent configuration summaries" |
| ) |
| |
| |
| data_fields: List[str] = Field(description="List of suggested data fields to extract") |
| validation_rules: List[str] = Field(default_factory=list, description="Validation rules") |
| output_formats: List[str] = Field(default_factory=list, description="Required output formats") |
| |
| |
| requirements: List[str] = Field(default_factory=list, description="Processing requirements") |
| notes: str = Field(default="", description="Additional notes") |
|
|
|
|
| class AgentConfiguration(BaseModel): |
| """Configuration for a dynamically created agent.""" |
| instructions: List[str] = Field(description="Specific instructions for this agent") |
| custom_prompt_template: Optional[str] = Field(default="", description="Custom prompt template for this agent") |
| special_requirements: List[str] = Field(default_factory=list, description="Special requirements or constraints") |
|
|
|
|
| class DataPoint(BaseModel): |
| """Individual data point extracted from document.""" |
| field_name: str = Field(description="Name of the data field") |
| value: str = Field(description="Value of the field") |
| data_type: Optional[str] = Field(default="", description="Type of data (text, number, date, etc.)") |
| category: Optional[str] = Field(default="", description="Category or section this data belongs to") |
| unit: Optional[str] = Field(default="", description="Unit of measurement if applicable") |
| period: Optional[str] = Field(default="", description="Time period if applicable") |
| confidence_score: float = Field(description="Confidence score for the extraction (0-1)") |
| source_location: Optional[str] = Field(default="", description="Location in document where data was found") |
|
|
|
|
| class ExtractedData(BaseModel): |
| """Structured data extracted from the document.""" |
| data_points: List[DataPoint] = Field(description="List of extracted data points") |
| extraction_notes: str = Field(default="", description="Notes about the extraction process") |
| confidence_score: float = Field(description="Overall confidence score for the extraction") |
| extraction_timestamp: datetime = Field(default_factory=datetime.now, description="When extraction was performed") |
| document_summary: Optional[str] = Field(default="", description="Brief summary of the document content") |
|
|
|
|
| class DataInsight(BaseModel): |
| """Individual insight from data analysis.""" |
| insight_type: str = Field(description="Type of insight (trend, comparison, etc.)") |
| description: str = Field(description="Description of the insight") |
| supporting_data: List[str] = Field(description="Data points that support this insight") |
| importance_level: str = Field(description="Importance level (high, medium, low)") |
|
|
|
|
| class DataCategory(BaseModel): |
| """A category of organized data.""" |
| category_name: str = Field(description="Name of the data category") |
| data_points: Dict[str, str] = Field(description="Key-value pairs of data in this category") |
| |
| class ArrangedData(BaseModel): |
| """Organized and analyzed data.""" |
| organized_categories: List[DataCategory] = Field( |
| description="Data organized into logical categories" |
| ) |
| insights: List[DataInsight] = Field(description="Insights generated from the data") |
| summary: str = Field(description="Summary of the arranged data") |
| arrangement_notes: str = Field(description="Notes about the arrangement process") |
|
|
|
|
| class CodeGenerationResult(BaseModel): |
| """Result of code generation and execution.""" |
| generated_code: str = Field(description="The generated Python code") |
| execution_result: str = Field(description="Result of code execution") |
| output_files: List[str] = Field(description="List of output files created") |
| execution_success: bool = Field(description="Whether code execution was successful") |
| error_messages: List[str] = Field(default_factory=list, description="Any error messages encountered") |
|
|
|
|
| class DocumentAnalysisResult(BaseModel): |
| """Complete result of document analysis team workflow.""" |
| document_type: str = Field(description="Type of document analyzed") |
| analysis_objective: str = Field(description="Original analysis objective") |
| processing_summary: str = Field(description="Summary of the entire processing workflow") |
| |
| |
| planning_notes: str = Field(description="Notes from the planning stage") |
| prompts_created: str = Field(description="Summary of prompts and schemas created") |
| data_extracted: str = Field(description="Summary of data extraction results") |
| data_arranged: str = Field(description="Summary of data arrangement and insights") |
| code_generated: str = Field(description="Summary of code generation and execution") |
| |
| |
| key_findings: List[str] = Field(description="Key findings from the analysis") |
| output_files_created: List[str] = Field(description="List of output files created") |
| success: bool = Field(description="Whether the analysis completed successfully") |
| recommendations: List[str] = Field(default_factory=list, description="Recommendations based on analysis") |
|
|
|
|
| class ExtractionField(BaseModel): |
| """Individual field specification for data extraction.""" |
| field_name: str = Field(description="Name of the field to extract") |
| field_type: str = Field(description="Type of data (text, number, date, etc.)") |
| description: str = Field(description="Description of what this field represents") |
| required: bool = Field(default=True, description="Whether this field is required") |
|
|
| class AgentPrompt(BaseModel): |
| """Prompt configuration for a specific agent.""" |
| agent_name: str = Field(description="Name of the agent") |
| specialized_instructions: List[str] = Field(description="Specialized instructions for this agent") |
| input_requirements: List[str] = Field(description="What input this agent needs") |
| output_requirements: List[str] = Field(description="What output this agent should produce") |
| success_criteria: List[str] = Field(description="Criteria for successful completion") |
|
|
| class PromptsAndSchemas(BaseModel): |
| """Prompts and schemas for all agents in the workflow.""" |
| |
| extraction_prompt: str = Field(description="Optimized prompt for data extraction") |
| extraction_fields: List[ExtractionField] = Field( |
| description="List of fields to extract from the document" |
| ) |
| arrangement_rules: List[str] = Field(description="Rules for organizing extracted data") |
| validation_criteria: List[str] = Field(description="Criteria for validating extracted data") |
| |
| |
| agent_prompts: List[AgentPrompt] = Field(description="Specialized prompts for each agent") |
| workflow_coordination: List[str] = Field(description="Instructions for coordinating between agents") |
| quality_assurance: List[str] = Field(description="Quality assurance guidelines for all agents") |