Closed evangriffiths closed 2 months ago
I would point out that the skill library from the Voyager paper would be a good place to start thinking about how to implement this.
Another problem to solve is prompt injections; if anyone can add a tool with arbitrary description, it's a good opportunity to be malicious. So, somehow, filtering out these functions would be nice.
This TODO comment in the PR #360 indicates that the logic in the FunctionsConfig
class might need improvement: https://github.com/gnosis/prediction-market-agent/pull/360/files#diff-74c5f5f5e5e5e5e5e5e5e5e5e5e5e5e5R43
Resolved with https://github.com/gnosis/prediction-market-agent/pull/360. Can create a new issue for adding/deselecting for MoT when we get closer to it
Currently our general agent has two configurations: 'just born' and 'trader agent'. They are only differentiated on system prompt, but they should also be differentiated based on the functions that they register to their engine.
This will be required for sure if the agent has access to a 'marketplace of tools', where it's going to have to select/deselect tools autonomously, but we're already starting to add tools that aren't necessarily related to prediction markets (e.g. https://github.com/gnosis/prediction-market-agent/pull/349), so this becomes relevant now.
I think the configs should look like this:
The trader agent has a static list of functions, but these are only the subset related to prediction markets
The 'just born' agent starts with a limited subset (e.g. Learn*, Reasoning, ...). Then it should have a selection process to pick the functions it wants to register with its engine. Some ideas of what this could look like:
Add new
AgentFunctions
:SelectFunction
/DeslectFunction
and let the agent choose itselfUse openai inference api, but not microchain, and after every call to update its system prompt, the agent re-runs a prompt to get the relevant functions.
...