import os from typing import Any, Dict, Optional from autogen import ConversableAgent from loguru import logger from swarms import Agent class AutogenAgentWrapper(Agent): """ Wrapper class for the ConversableAgent that provides additional functionality. """ def __init__( self, name: str, llm_config: Dict[str, Any], *args: Any, **kwargs: Any, ): """ Initialize the AutogenAgentWrapper. Args: name (str): The name of the agent. llm_config (Dict[str, Any]): The configuration for the ConversableAgent. *args: Additional positional arguments. **kwargs: Additional keyword arguments. """ super().__init__(*args, **kwargs) self.name = name self.autogen_agent = ConversableAgent( name=name, llm_config=llm_config, code_execution_config=False, function_map=None, human_input_mode="NEVER", ) def run(self, task: str, *args: Any, **kwargs: Any) -> Optional[str]: """ Run the AutogenAgentWrapper. Args: task (str): The task to be performed by the agent. *args: Additional positional arguments. **kwargs: Additional keyword arguments. Returns: Optional[str]: The response generated by the agent, or None if an error occurred. """ try: messages = [{"content": task, "role": "user"}] response = self.autogen_agent.generate_reply(messages) logger.info("Task: %s, Response: %s", task, response) return response except Exception as e: logger.error("An error occurred: %s", str(e)) return None llm_config = { "config_list": [ {"model": "gpt-4", "api_key": os.environ.get("OPENAI_API_KEY")} ] } autogen_wrapper = AutogenAgentWrapper("AutogenAssistant", llm_config) result = autogen_wrapper.run("Tell me a joke about programming.") print(result)