EDIT: I just did this now and tested locally, appears to work. But let's add to unit tests to be 100%, @narenedara and update your examples @efry0. I will add `Network' at a later date....it's just a list of chains anyway.
Since we likely want multiple deliberation structures that are all somewhat similar to Chain, I think instead of subclassing Chain we should have a BaseClass of which other deliberation structures are derived. So for example, other structures:
Ensemble: A group of agents whose responses are summarized at end. This is basically `Chain' but previous_responses always empty
Network: This is just a list of chains where one processes and then output is fed to another
Chain: What we currently have.
This is not as urgent as what we are currently working on. But we would want to think through what are the BASIC functionalities that will be common to every deliberation structure. I am thinking:
initialize agents
set combination instructions eg of moderator
set tasks of agents
a process' function that gets overwritten depending on specific deliberation structure. So for instance, forChain' it's what we already have. For Ensemble' it's basically what we have but there are noprevious_responses'. For Network we create lists of `Chains'
EDIT: I just did this now and tested locally, appears to work. But let's add to unit tests to be 100%, @narenedara and update your examples @efry0. I will add `Network' at a later date....it's just a list of chains anyway.
Since we likely want multiple deliberation structures that are all somewhat similar to Chain, I think instead of subclassing Chain we should have a BaseClass of which other deliberation structures are derived. So for example, other structures:
Ensemble
: A group of agents whose responses are summarized at end. This is basically `Chain' but previous_responses always emptyNetwork
: This is just a list of chains where one processes and then output is fed to anotherChain
: What we currently have.This is not as urgent as what we are currently working on. But we would want to think through what are the BASIC functionalities that will be common to every deliberation structure. I am thinking:
process' function that gets overwritten depending on specific deliberation structure. So for instance, for
Chain' it's what we already have. ForEnsemble' it's basically what we have but there are no
previous_responses'. For Network we create lists of `Chains'https://github.com/josh-ashkinaze/plurals/blob/main/plurals/deliberation.py