| """Pydantic schemas for Agent4EO.""" |
| from typing import Any, Dict, List, Literal, Optional |
| from pydantic import BaseModel, Field |
|
|
|
|
| class SampleSpec(BaseModel): |
| """Specification for a curated EO sample.""" |
| title: str |
| paths: List[str] |
| meta: Optional[Dict[str, Any]] = None |
|
|
| class ToolResult(BaseModel): |
| """Result from an EO tool execution.""" |
| raster_path: str |
| preview_png: str |
| histogram_png: Optional[str] = None |
| metrics: Dict[str, float] |
| extras: Dict[str, Any] = Field(default_factory=dict) |
|
|
|
|
| class Interpretation(BaseModel): |
| """LLM-generated interpretation of EO results.""" |
| headline: str = Field(description="One-sentence summary") |
| bullets: List[str] = Field( |
| description="Key findings; each must include at least one numeric value" |
| ) |
| caveats: List[str] = Field( |
| default_factory=list, description="0-2 limitations or notes") |
|
|