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
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
-
upper stream agent proxy call current agent proxy's
___on_agent_wakeup___
-
[
___on_agent_wakeup___
(anywhere)] current agent modify msg (msg =on_agent_wakeup
+arguments) andsend_to_real_agent
-
[
_begin_acquire_command
(agent_matrix/agent/agent.py)]: real agent receive msg and execute_handle_command
-
[
_handle_command
(agent_matrix/agent/agent.py)]: real agent receiveon_agent_wakeup
and executewakeup_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)
-
[
on_agent_wakeup
(agent_matrix/agent/agent.py)]: real agent receive and executeon_agent_wakeup
-
[
on_agent_fin
(agent_matrix/agent/agent.py)]: terminate agent task, prepare msg delivery, registerdownstream
tomsg
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 566281db10c0ec9327f93baa32770443b8265c460c9f1649d31edb9d2aa95762 |
|
MD5 | ee09f2c4d7a9384ea2732039c07ca97e |
|
BLAKE2b-256 | 4593342297e3e9f64c15ee30adc028f929a6a9465a8096822b2f2b53ae5c7bba |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cba22a8442fff492f3c704d984137c8630802ed73ff919416e082c3c98d34d0 |
|
MD5 | 64d682aee901506842596f65261e9567 |
|
BLAKE2b-256 | a7ed2ab004d14659786c3c582898c886af1a1621ed33cbd3bb83cebb230dbc6c |