Source code for oscopilot.agents.base_agent

import re
import json
from oscopilot.utils import get_os_version


[docs] class BaseAgent: """ BaseAgent serves as the foundational class for all agents types within the system. This class initializes the core attributes common across different agents, providing a unified interface for further specialization. Attributes include a language learning model, the execution environments, an action library, and a maximum iteration limit for agents operations. Attributes: llm: Placeholder for a language learning model, initialized as None. environments: The execution environments for the agents, initialized as None. action_lib: A library of actions available to the agents, initialized as None. max_iter: The maximum number of iterations the agents can perform, initialized as None. """ def __init__(self): """ Initializes a new instance of BaseAgent with default values for its attributes. """ self.system_version = get_os_version()
[docs] def extract_information(self, message, begin_str='[BEGIN]', end_str='[END]'): """ Extracts substrings from a message that are enclosed within specified begin and end markers. Args: message (str): The message from which information is to be extracted. begin_str (str): The marker indicating the start of the information to be extracted. end_str (str): The marker indicating the end of the information to be extracted. Returns: list[str]: A list of extracted substrings found between the begin and end markers. """ result = [] _begin = message.find(begin_str) _end = message.find(end_str) while not (_begin == -1 or _end == -1): result.append(message[_begin + len(begin_str):_end]) message = message[_end + len(end_str):] _begin = message.find(begin_str) _end = message.find(end_str) return result
[docs] def extract_json_from_string(self, text): """ Identifies and extracts JSON data embedded within a given string. This method searches for JSON data within a string, specifically looking for JSON blocks that are marked with ```json``` notation. It attempts to parse and return the first JSON object found. Args: text (str): The text containing the JSON data to be extracted. Returns: dict: The parsed JSON data as a dictionary if successful. str: An error message indicating a parsing error or that no JSON data was found. """ # Improved regular expression to find JSON data within a string json_regex = r'```json\s*\n\{[\s\S]*?\n\}\s*```' # Search for JSON data in the text matches = re.findall(json_regex, text) # Extract and parse the JSON data if found if matches: # Removing the ```json and ``` from the match to parse it as JSON json_data = matches[0].replace('```json', '').replace('```', '').strip() try: # Parse the JSON data parsed_json = json.loads(json_data) return parsed_json except json.JSONDecodeError as e: return f"Error parsing JSON data: {e}" else: return "No JSON data found in the string."