Reason behind the Tool design #22
Replies: 1 comment 2 replies
-
Hello, great question! I have weighed the pros and cons a lot here, and of course neither solution is perfect, but I believe taking full ownership of the tool is the lesser of two evils for several reasons:
On top of those, many people have slightly different needs or expectations, take for example a search tool:
All of that also potentially influences the actual agents of course, in some cases, since the more free/configurable your input&output is, the harder it will be for AI agents to adhere to the schema, especially if you are working with local/opensource models I strongly believe that the potential for reducing maintenance complexity both for the framework maintainers and its users is huge! Now, as per your remark about a community provided agent depending on a tool, this is actually impossible! So, this means in practice that if I create an agent for a search tool, that search tool is going to have a "query" property. But if I want to replace it with another search tool that has "queries" (plural) and a "num_queries" and a "category", none of that is an issue, you just swap the schema. |
Beta Was this translation helpful? Give feedback.
-
Hi, I'm just finding out about Instructor and atomic-agents sounds like a really interesting way to use it. I love the focus on small composable parts and that it's designed to allow you to swap things out along the way.
I just have one concern that leaves me a bit hesitant to dive in more. The design of Tools. I'm really surprised that it's designed as a 'copy file into your source' method. I understand that means you can fully customize everything, but it also means any bug or future updates are immediately my responsibility. Even if it's just updating for a new python version it seems to me very problematic to throw packaging to the wind and make every user responsible for the upkeep of tools.
Especially with the ability to monkey patch so easily in python, wouldn't it be better to have a repository of tools, that can be updated and let users fork, patch, or submit new tools if they need to adjust functionality?
I assumed the atomic nature would make community provided agents and tools very useful. But if an agent depends on a tool that is effectively forked doesn't that mean that agents can't be combined together easily?
Beta Was this translation helpful? Give feedback.
All reactions