code: import langchain
  from langchain_openai import AzureChatOpenAI
  from langchain.memory import ConversationBufferMemory, ReadOnlySharedMemory
  from langchain.prompts.chat import MessagesPlaceholder
  
  from tech_agents.command import Command, check_command
  from tech_agents.dispatcher import MainDispatcherAgent
  from tech_agents.template import default_value
  
  
  class MainAgent:
      llm: AzureChatOpenAI
      memory: ConversationBufferMemory
      chat_history: MessagesPlaceholder
      verbose: bool
  
      """
      MainAgentクラスは、メインのエージェントを表すクラスです。
      このクラスは、AzureChatOpenAI、ConversationBufferMemory、MessagesPlaceholderなどの属性を持ちます。
      メインエージェントは、指定された入力に対してAgentクラスを実行します。
      """
  
      def __init__(
          self,
          llm: AzureChatOpenAI = default_value.default_llm,
          memory: ConversationBufferMemory = default_value.default_memory,
          chat_history: MessagesPlaceholder = default_value.default_chat_history,
          verbose: bool = False,
      ):
          """
          MainAgentクラスのコンストラクタです。
          デフォルトの引数を使用して、AzureChatOpenAI、ConversationBufferMemory、MessagesPlaceholder、verboseを初期化します。
          
          インスタンス化
          ------------
          main_agent = MainAgent(
              llm=あなたの使用したいLLM,
              memory=あなたの使用したいメモリ,
              chat_history=あなたの使用したい会話履歴,
              verbose=デバッグモードを有効にするかどうか
          )
          
          実行
          ------------
          message = "こんにちは"
          output = main_agent.run(message)
          print(output)
          
          """
  
          # 引数の初期化
          self.llm = llm
          self.memory = memory
          self.chat_history = chat_history
          self.verbose = verbose
  
          # メモリの読み取り専用化
          self.readonly_memory = ReadOnlySharedMemory(memory=self.memory)
          # デバッグモードの設定
          langchain.debug = self.verbose
  
      def run(self, user_message: str) -> str:
          """
          メインエージェントを実行するメソッドです。
          Agentクラスを生成し、指定された入力を渡して実行します。
          """
  
          param = check_command(user_message)
          if param.check_command_bool:
              CommandAgent = Command(
                  llm=self.llm,
                  memory=self.memory,
                  readonly_memory=self.readonly_memory,
                  chat_history=self.chat_history,
                  verbose=self.verbose
              )
              return CommandAgent.run(param.command, user_message)
          
          main_agent = MainDispatcherAgent(
              llm=self.llm,
              memory=self.memory,
              readonly_memory=self.readonly_memory,
              chat_history=self.chat_history,
              verbose=self.verbose
          )
          return main_agent.run(user_message)
  
apis: langchain.memory.ReadOnlySharedMemory
extract_api: [((1669, 1709), 'langchain.memory.ReadOnlySharedMemory', 'ReadOnlySharedMemory', ([], {'memory': 'self.memory'}), '(memory=self.memory)\n', (1689, 1709), False, 'from langchain.memory import ConversationBufferMemory, ReadOnlySharedMemory\n'), ((1926, 1953), 'tech_agents.command.check_command', 'check_command', (['user_message'], {}), '(user_message)\n', (1939, 1953), False, 'from tech_agents.command import Command, check_command\n'), ((2341, 2491), 'tech_agents.dispatcher.MainDispatcherAgent', 'MainDispatcherAgent', ([], {'llm': 'self.llm', 'memory': 'self.memory', 'readonly_memory': 'self.readonly_memory', 'chat_history': 'self.chat_history', 'verbose': 'self.verbose'}), '(llm=self.llm, memory=self.memory, readonly_memory=self.\n    readonly_memory, chat_history=self.chat_history, verbose=self.verbose)\n', (2360, 2491), False, 'from tech_agents.dispatcher import MainDispatcherAgent\n'), ((2018, 2156), 'tech_agents.command.Command', 'Command', ([], {'llm': 'self.llm', 'memory': 'self.memory', 'readonly_memory': 'self.readonly_memory', 'chat_history': 'self.chat_history', 'verbose': 'self.verbose'}), '(llm=self.llm, memory=self.memory, readonly_memory=self.\n    readonly_memory, chat_history=self.chat_history, verbose=self.verbose)\n', (2025, 2156), False, 'from tech_agents.command import Command, check_command\n')]