Skip to main content

Generating high-level intelligent agents via nesting basic LM agents

Project description

Agent Matrix

The Core Insight of This Project: Achieving Higher Intelligence via Nested Agents.

Initialize

image

flowchart LR
    launch --> |"method 1"| MASTER>"python master mind"]
    launch --> |"method 2"| UE2["Launch UE Client"]
    UE2 --> Redis3["Join Redis Network"]
    MASTER --> IF1{"Has UE ?"}
    IF1 -->|"Yes"| UE["Launch UE Client"]
    IF1 -->|"No"| UED["Download UE Client"]
    UED --> UE
    UE --> Redis2["Join Redis Network"]
    UE2 --> MASTER2>"python master mind"]
    MASTER --> Redis["Join Redis Network"]
    MASTER2 --> Redis["Join Redis Network"]
    Redis --> Wait["Wait Further Command"]
    Wait --> Begin(("Begin Tasks"))

python agent tick

flowchart TD
    PyAgent["Agent Init"] --> A["Wait Wake Up Condition 等待唤醒"]
    -->AAA
    subgraph AAA["Thread 新线程"]
        direction LR
        TT1["New Thread Begin 线程启动"]
        TT1 --> BBB
        TT1 --> TT2["Read UUID"] -->
        TT3["Read Call History"] -->
        TT4["LM Call Python Pre-process"] -->
        TT5["LM Call"] -->
        TT6["LM Call Python Post-process"] -->
        TT7["Redis Com and Final Render"] -->
        TT8["Select Next Agents To Wake Up"] -->
        TT9["Wake Up Other Agents"] -->
        TT10["Exit"]


        TT5 --> Ta
        Ta --> TT5
        subgraph BBB["Thread 新线程2"]
        Ta["Redis Com and Stream Render"]
        end

    end

unreal agent tick

flowchart TD
    subgraph Tick
        direction LR
        Tick_S["Tick Begin"] 
        --> Tick_A["Hear from Redis"]
        --> Tick_B["Update Status"]
        --> Tick_C["Read Event"]
        --> Tick_D["Do Event"]
    end

agent university base class

flowchart LR
    Z["X"]
    Z --> A["Basic LM Agent"]
    Z --> B["Internet Agent"]
    Z --> C["RAG Agent"]
    Z --> D["Python Code Exe Agent"]
    Z --> E["Memory Agent"]
    Z --> F["CoT Agent"]
    Z --> G["Screen Capture Agent"]
    Z --> H["Windows Exe Agent"]
    Z --> I["Shell Exe Agent"]
    Z --> J["Realtime Voice Read Agent"]
    Z --> J2["Realtime Speaker Agent"]

Agent Activation Call Cycle

  1. upper stream agent proxy call current agent proxy's ___on_agent_wakeup___

  2. [___on_agent_wakeup___ (anywhere)] current agent modify msg (msg = on_agent_wakeup+arguments) and send_to_real_agent

  3. [_begin_acquire_command (agent_matrix/agent/agent.py)]: real agent receive msg and execute _handle_command

  4. [_handle_command (agent_matrix/agent/agent.py)]: real agent receive on_agent_wakeup and execute wakeup_in_new_thread (in new thread)

    def wakeup_in_new_thread(self, msg):
        # deal with the message from upstream
        msg.num_step += 1
        if msg.level_shift == '↑':
            # Case 1:
            # - This agent must be a parent with at leat one child agent,
            #   and all its children have finished their tasks.
            #   It is time that this parent exam all the work done by its children
            #   and decide what to do next.
            downstream = self.on_children_fin(msg.kwargs, msg)
        else:
            # Case 2:
            # - If this agent is a parent (with at least one child agent),
            #   on_agent_wakeup will be called, and its children will handle more work afterwards.
            # - If this agent has no children,
            #   on_agent_wakeup will be called.
            downstream = self.on_agent_wakeup(msg.kwargs, msg)

        # deliver message to downstream
        # (don't worry, agent proxy will deal with it,
        # e.g. chosing the right downstream agent)
        self.on_agent_fin(downstream, msg)
  1. [on_agent_wakeup (agent_matrix/agent/agent.py)]: real agent receive and execute on_agent_wakeup

  2. [on_agent_fin (agent_matrix/agent/agent.py)]: terminate agent task, prepare msg delivery, register downstream to msg

    def on_agent_fin(self, downstream, msg):
        msg.src = self.agent_id
        msg.dst = self.proxy_id
        msg.command = "on_agent_fin"
        msg.kwargs = downstream
        # for switch agent, add downstream_override
        if downstream.get("downstream_override", None):
            msg.downstream_override = downstream["downstream_override"]
        # for groupchat agent, add children_select_override
        if downstream.get("children_select_override", None):
            msg.children_select_override = downstream["children_select_override"]
        if downstream.get("call_children_again", None):
            msg.call_children_again = downstream["call_children_again"]
        if downstream.get("dictionary_logger", None) and isinstance(downstream["dictionary_logger"], dict):
            msg.dictionary_logger.update(downstream["dictionary_logger"])
        # keep level shift unchanged
        msg.level_shift = msg.level_shift
        self._send_msg(msg)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-agent-matrix-0.1.4.tar.gz (99.5 kB view details)

Uploaded Source

Built Distribution

py_agent_matrix-0.1.4-py3-none-any.whl (145.1 kB view details)

Uploaded Python 3

File details

Details for the file py-agent-matrix-0.1.4.tar.gz.

File metadata

  • Download URL: py-agent-matrix-0.1.4.tar.gz
  • Upload date:
  • Size: 99.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/7.1.0 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.32.3 rfc3986/1.5.0 tqdm/4.66.4 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for py-agent-matrix-0.1.4.tar.gz
Algorithm Hash digest
SHA256 566281db10c0ec9327f93baa32770443b8265c460c9f1649d31edb9d2aa95762
MD5 ee09f2c4d7a9384ea2732039c07ca97e
BLAKE2b-256 4593342297e3e9f64c15ee30adc028f929a6a9465a8096822b2f2b53ae5c7bba

See more details on using hashes here.

File details

Details for the file py_agent_matrix-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: py_agent_matrix-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 145.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/7.1.0 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.32.3 rfc3986/1.5.0 tqdm/4.66.4 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for py_agent_matrix-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0cba22a8442fff492f3c704d984137c8630802ed73ff919416e082c3c98d34d0
MD5 64d682aee901506842596f65261e9567
BLAKE2b-256 a7ed2ab004d14659786c3c582898c886af1a1621ed33cbd3bb83cebb230dbc6c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page