Spaces:
Paused
Paused
| """ | |
| Data models for the Weave API. | |
| This module defines the data structures used across the Weave API client. | |
| """ | |
| from dataclasses import dataclass | |
| from datetime import datetime | |
| from enum import Enum | |
| from typing import Any, Dict, List, Optional, Union | |
| from pydantic import BaseModel, Field | |
| class SortDirection(str, Enum): | |
| """Sort direction options.""" | |
| ASC = "asc" | |
| DESC = "desc" | |
| class FilterOperator(str, Enum): | |
| """Operators for query filters.""" | |
| EQUALS = "$eq" | |
| GREATER_THAN = "$gt" | |
| GREATER_THAN_EQUAL = "$gte" | |
| LESS_THAN = "$lt" | |
| LESS_THAN_EQUAL = "$lte" | |
| CONTAINS = "$contains" | |
| class TimeRange: | |
| """Time range for filtering traces.""" | |
| start: Optional[datetime] = None | |
| end: Optional[datetime] = None | |
| class AttributeFilter: | |
| """Filter for trace attributes.""" | |
| path: str | |
| value: Any | |
| operator: FilterOperator = FilterOperator.EQUALS | |
| class QueryFilter: | |
| """Query filter parameters.""" | |
| display_name: Optional[str] = None | |
| op_name: Optional[str] = None | |
| op_name_contains: Optional[str] = None | |
| trace_id: Optional[str] = None | |
| trace_ids: Optional[List[str]] = None | |
| call_ids: Optional[List[str]] = None | |
| parent_ids: Optional[List[str]] = None | |
| status: Optional[str] = None | |
| time_range: Optional[TimeRange] = None | |
| latency: Optional[Dict[str, float]] = None | |
| attributes: Optional[List[AttributeFilter]] = None | |
| has_exception: Optional[bool] = None | |
| trace_roots_only: Optional[bool] = None | |
| class QueryParams: | |
| """Parameters for a Weave trace query.""" | |
| entity_name: str | |
| project_name: str | |
| filters: Optional[QueryFilter] = None | |
| sort_by: str = "started_at" | |
| sort_direction: SortDirection = SortDirection.DESC | |
| limit: Optional[int] = None | |
| offset: int = 0 | |
| include_costs: bool = True | |
| include_feedback: bool = True | |
| columns: Optional[List[str]] = None | |
| expand_columns: Optional[List[str]] = None | |
| truncate_length: Optional[int] = 200 | |
| return_full_data: bool = False | |
| metadata_only: bool = False | |
| class TraceCost: | |
| """Cost information for a model in a trace.""" | |
| prompt_tokens: int = 0 | |
| completion_tokens: int = 0 | |
| prompt_tokens_total_cost: float = 0.0 | |
| completion_tokens_total_cost: float = 0.0 | |
| total_cost: float = 0.0 | |
| class TokenCounts(BaseModel): | |
| """Token count information for traces.""" | |
| total_tokens: int = 0 | |
| input_tokens: int = 0 | |
| output_tokens: int = 0 | |
| average_tokens_per_trace: Union[int, float] = 0 | |
| class TraceMetadata(BaseModel): | |
| """Metadata about a collection of traces.""" | |
| total_traces: int = 0 | |
| token_counts: Dict[str, Union[int, float]] = Field(default_factory=dict) | |
| time_range: Dict[str, Optional[datetime]] = Field(default_factory=dict) | |
| status_summary: Dict[str, int] = Field(default_factory=dict) | |
| op_distribution: Dict[str, int] = Field(default_factory=dict) | |
| class WeaveTrace(BaseModel): | |
| """Representation of a Weave trace.""" | |
| id: str | |
| project_id: str | |
| op_name: str | |
| trace_id: str | |
| started_at: datetime | |
| display_name: Optional[str] = None | |
| parent_id: Optional[str] = None | |
| ended_at: Optional[datetime] = None | |
| inputs: Optional[Dict[str, Any]] = None | |
| output: Optional[Any] = None | |
| exception: Optional[str] = None | |
| attributes: Dict[str, Any] = Field(default_factory=dict) | |
| summary: Dict[str, Any] = Field(default_factory=dict) | |
| costs: Dict[str, TraceCost] = Field(default_factory=dict) | |
| feedback: Dict[str, Any] = Field(default_factory=dict) | |
| status: Optional[str] = None | |
| latency_ms: Optional[int] = None | |
| wb_run_id: Optional[str] = None | |
| wb_user_id: Optional[str] = None | |
| deleted_at: Optional[datetime] = None | |
| class Config: | |
| """Pydantic model configuration.""" | |
| arbitrary_types_allowed = True | |
| class QueryResult(BaseModel): | |
| """Result of a Weave trace query.""" | |
| metadata: TraceMetadata | |
| traces: Optional[List[Union[WeaveTrace, Dict[str, Any]]]] = None | |
| class Config: | |
| """Pydantic model configuration.""" | |
| arbitrary_types_allowed = True | |