prototypes on open-agency architecture
Use LLM to help communities conduct Quadratic Funding more effectively.
- Each member creates a voter profile: expressing their general thoughts on the desired projects to be built, expectations for the community, and evaluations of previous projects using natural language.
- LLM generates a set of criteria based on the ideas of all members, and for each criteria LLM tries to score each project on behalf of every member of the community.
- LLM tries to conduct quadratic voting on behalf of each member for a group of projects based on these criteria scores (with a budget of 100 USD).
- A funding allocation is generated from the quadratic voting process.
- LLM simulates being each member, provides feedback on the funding allocation, and decides whether to modify their vote.
- Recalculate the funding allocation based on the modified votes.
- Repeat steps 5 and 6 until the funding allocation doesn't change significantly, at which point we consider it to have reached a dynamic equilibrium(or a fix point). This LLM-generated funding allocation can serve as a reference for the actual allocation.
- If new projects come up later, the APP can predict whether the community members are likely to be willing to fund them. Each member can inspect the vote/criteria score generated by LLM on their behalf and provide feedback to update their voter profile.
- for step one , we can let users directly enter their preferences or using a interactive chat interface
- for step two, there seem no better way than LLM doing everything, the scoring should be inspectable by human member and make changes give explanations(the explanation can be added to voter profile)
- for step three, there can be a determinist algorithm from criterian scoring to voting, but can also be done by LLM, the first stage, we do this using LLM, this process should also be inspectable. We can also train a neural network from criteria scoring to voting.
- using classic quadratic funding algorithm
- Using LLM all along: everyone(or every cluster if we want to do some clustering), read the final allocation, give some opinion to everyone else . everyone reads everyone else opinion, reference the final allocation and then decide whether they change their criteria score, vote(with some explanations). This part can be inspectable as well. We could create some vector representation for how everyone want others to change their votes or criteria scoring.
- using classic quadratic funding algorithm
- we need an algorithm to decide when to stop or just give a iteration limit
using nash bargaining rather than quadratic funding
the current process is
- LLM get criteria from human
- LLM got human weight of each criteria
- LLM rate projects for each criteria
- LLM generate vote for human and aggregate
- show vote of everyone DONE
- make vote result pair with projects
- seek objections
- summarize objections
- ask whether people change their votes(weights on criteria)
- compute new votes
File "/Users/yihan/LocalYihan/openAgency/open-agency/src/algorithms/voting/quadratic.py", line 8, in unNormalized = [sum([option[o] * user[o] for o in option.keys()]) ~~~~^^^ KeyError: 'local food production'
need better error checking and exception handling