Open wayne-wang-1119 opened 1 year ago
ive been thinking about this: what is the essential difference between having a shared memo where the agents do not communicate with each other and having an individualized memo where the agents talk to each other to understand what the other is up to
some conclusion i have for now:
while True
loop that is iterating before stop condition is met, which is the software has met its demands, my concern is a shared full memo would make gpt hallucinate and entirely diminish the point of having the agents interact with each other in a protocol, because they are just sequentially finishing tasks, with better prompts as a suggestion of how to "better" frame some answers, but if we choose to have a manager agent and the agents access only condensed version memo, they are more focused on their own trace, with some understanding of what is happening in the big picture, but this could slow the service down because of having that manager agent as additional async layer or bottleneck. btw, I thought of it as having a schizophrenic worker of different identities that has full memory to work on our software or a company like what we have in our society. Which is preferable?
also btw, having a manager agent definitely helps with tasking because we are expanding to lots of agents, what if some of them are too alike?
Communicating through messages are probably better.
i agree. also we are exploding notion they are 99% used lol
MetaGPT: chunker: https://github.com/geekan/MetaGPT/blob/45e3f954455df71470181d4c84705e4f824edea3/metagpt/utils/text.py#L29C27-L29C27
main method being used: https://github.com/geekan/MetaGPT/blob/45e3f954455df71470181d4c84705e4f824edea3/metagpt/software_company.py#L53
essentially, a company has k tokens as investments meaning running the service in total k times (similar to your while loop but their stop condition is by how many token)
Get this, each company can "hire roles" which is each company can include roles like engineer, product, into a list of roles and they will listen to a published message, which comes from the previous step, and you are probably thinking this: the message is kept in the memory, look here: https://github.com/geekan/MetaGPT/blob/45e3f954455df71470181d4c84705e4f824edea3/metagpt/environment.py#L45
Each role, get a template and use it to send to gpt4, like this: https://github.com/geekan/MetaGPT/blob/45e3f954455df71470181d4c84705e4f824edea3/metagpt/roles/role.py#L22 And they each publish message to "environment", which the memory from the previous step, they collectively share a memory and act upon it with their own "personality" from role.py
One problem: they let the gpt to decide which "stage" it wants to come in to help, from the memory, not agent based but more like one agent playing multiple roles at different times and plug in details in that process as different roles...