Lim0011's picture
Upload 251 files
85e3d20 verified
raw
history blame
1.28 kB
import dataclasses
from dataclasses import dataclass
from argparse import Namespace
import json
from typing import Any, Dict, List
class EnhancedJSONEncoder(json.JSONEncoder):
def default(self, o):
#if it is a function, use its string name
if dataclasses.is_dataclass(o):
return dataclasses.asdict(o)
elif hasattr(o, '__call__'):
return o.__name__
elif isinstance(o, Namespace):
return vars(o)
return super().default(o)
class TooLongPromptError(Exception):
pass
class LLMError(Exception):
pass
class EnvException(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return self.message
@dataclass(frozen=True)
class ActionInfo:
name: str
description: str
usage: dict
return_value: str
function: str
is_primitive: bool = False
@dataclass(frozen=True)
class Action:
name: str
args: Dict[str, Any]
@dataclass(frozen=True)
class Step:
action: Action
observation: str # What was returned
timestamp: float # When the action was taken
@dataclass(frozen=True)
class Trace:
steps: List[Step]
low_level_steps: List[Step]
action_infos: Dict[str, ActionInfo]
task_description: str