跳转至

Tool log

labridge.tools.base.tool_log

labridge.tools.base.tool_log.ToolLog

Bases: object

This class record the log of a specific tool. The log_to_user and references in log_to_system will be presented to the users.

PARAMETER DESCRIPTION
tool_name

The tool name.

TYPE: str

log_to_user

This log might be presented to the users.

TYPE: str

log_to_system

This log is more structured, specifically, it is a dictionary in JSON format. The keys 'operation_description' and 'references' are required. The values of references are either None or List[str], where the str is in JSON format.

TYPE: dict

Source code in labridge\tools\base\tool_log.py
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
class ToolLog(object):
	r"""
	This class record the log of a specific tool.
	The `log_to_user` and `references` in `log_to_system` will be presented to the users.

	Args:
		tool_name (str): The tool name.
		log_to_user (str): This log might be presented to the users.
		log_to_system (dict): This log is more structured, specifically, it is a dictionary in JSON format.
			The keys 'operation_description' and 'references' are required. The values of `references` are either
			None or List[str], where the `str` is in JSON format.
	"""
	def __init__(
		self,
		tool_name: str,
		log_to_user: Optional[str],
		log_to_system: Dict[str, Union[str, Optional[List[str]]]],
		tool_abort: Optional[bool] = False,
	):
		self.tool_name = tool_name
		self.log_to_user = log_to_user
		self.tool_abort = tool_abort

		for key in LOG_TO_SYSTEM_KEYS:
			if key not in log_to_system.keys():
				raise ValueError(f"The key {key} is required in the log_to_system.")

		ref = log_to_system[TOOL_REFERENCES]
		if ref and not isinstance(ref, list):
			raise ValueError(f"The value of '{TOOL_REFERENCES}' can only be list or None.")
		self.log_to_system = log_to_system

	@classmethod
	def construct(
		cls,
		tool_name: str,
		tool_op_description: str,
		tool_references: Optional[List[str]] = None,
		log_to_user: str = None,
		tool_abort: Optional[bool] = False,
	):
		return cls(
			tool_name=tool_name,
			log_to_user=log_to_user,
			log_to_system={
				TOOL_OP_DESCRIPTION: tool_op_description,
				TOOL_REFERENCES: tool_references,
			},
			tool_abort=tool_abort,
		)

	def dumps(self) -> str:
		r"""
		Dump to a string.

		Returns:
			str: the dumped string.
		"""
		logs = {
			"tool_name": self.tool_name,
			"log_to_user": self.log_to_user,
			"log_to_system": self.log_to_system,
			"tool_abort": self.tool_abort,
		}
		return json.dumps(logs)

	@classmethod
	def loads(
		cls,
		log_str: str,
	):
		r"""
		Load from a string.

		Args:
			log_str (str): The dumped string of a ToolLog object.

		Returns:
			The loaded ToolLog object.
		"""
		try:
			logs = json.loads(log_str)
			tool_name = logs["tool_name"]
			log_to_user = logs["log_to_user"]
			log_to_system = logs["log_to_system"]
			tool_abort = logs["tool_abort"]
			return cls(
				tool_name=tool_name,
				log_to_user=log_to_user,
				log_to_system=log_to_system,
				tool_abort=tool_abort,
			)
		except Exception:
			raise ValueError("Invalid tool log string.")

labridge.tools.base.tool_log.ToolLog.dumps()

Dump to a string.

RETURNS DESCRIPTION
str

the dumped string.

TYPE: str

Source code in labridge\tools\base\tool_log.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
def dumps(self) -> str:
	r"""
	Dump to a string.

	Returns:
		str: the dumped string.
	"""
	logs = {
		"tool_name": self.tool_name,
		"log_to_user": self.log_to_user,
		"log_to_system": self.log_to_system,
		"tool_abort": self.tool_abort,
	}
	return json.dumps(logs)

labridge.tools.base.tool_log.ToolLog.loads(log_str) classmethod

Load from a string.

PARAMETER DESCRIPTION
log_str

The dumped string of a ToolLog object.

TYPE: str

RETURNS DESCRIPTION

The loaded ToolLog object.

Source code in labridge\tools\base\tool_log.py
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
@classmethod
def loads(
	cls,
	log_str: str,
):
	r"""
	Load from a string.

	Args:
		log_str (str): The dumped string of a ToolLog object.

	Returns:
		The loaded ToolLog object.
	"""
	try:
		logs = json.loads(log_str)
		tool_name = logs["tool_name"]
		log_to_user = logs["log_to_user"]
		log_to_system = logs["log_to_system"]
		tool_abort = logs["tool_abort"]
		return cls(
			tool_name=tool_name,
			log_to_user=log_to_user,
			log_to_system=log_to_system,
			tool_abort=tool_abort,
		)
	except Exception:
		raise ValueError("Invalid tool log string.")