ai-station/.venv/lib/python3.12/site-packages/literalai/evaluation/dataset_item.py

59 lines
1.6 KiB
Python

from dataclasses import dataclass
from typing import Dict, List, Optional, TypedDict
from literalai.my_types import Utils
class DatasetItemDict(TypedDict, total=False):
id: str
createdAt: str
datasetId: str
metadata: Dict
input: Dict
expectedOutput: Optional[Dict]
intermediarySteps: Optional[List[Dict]]
@dataclass(repr=False)
class DatasetItem(Utils):
"""
A `Dataset` item, containing `input`, `expectedOutput` and `metadata`.
"""
id: str
created_at: str
dataset_id: str
metadata: Dict
input: Dict
expected_output: Optional[Dict] = None
intermediary_steps: Optional[List[Dict]] = None
def to_dict(self):
"""
Dumps the contents of the object into a dictionary.
"""
return {
"id": self.id,
"createdAt": self.created_at,
"datasetId": self.dataset_id,
"metadata": self.metadata,
"input": self.input,
"expectedOutput": self.expected_output,
"intermediarySteps": self.intermediary_steps,
}
@classmethod
def from_dict(cls, dataset_item: DatasetItemDict) -> "DatasetItem":
"""
Builds a `DatasetItem` object from a dictionary.
"""
return cls(
id=dataset_item.get("id", ""),
created_at=dataset_item.get("createdAt", ""),
dataset_id=dataset_item.get("datasetId", ""),
metadata=dataset_item.get("metadata", {}),
input=dataset_item.get("input", {}),
expected_output=dataset_item.get("expectedOutput"),
intermediary_steps=dataset_item.get("intermediarySteps"),
)