-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP Tool packages #76
base: main
Are you sure you want to change the base?
Conversation
lets save this for 0.3 because it will require the project upgrade script. we can merge it now though and create a 0.2 branch for bug fixes and small features |
…implementations to remain completely generic. Reimplemented some tools to work with all frameworks instead of just importing from crewai-tools. Removed `tools_bundled` from ToolCOnfig as all tools are now bundled for namespacing. `agentstack.tools` is not part of the public API and is to be used inside a user project to access tools.
…riding existing variables. More robust stripping on parse, too.
- Port implementation from crewAI-tools - Make functions framework-agnostic - Remove unnecessary framework-specific files - Update config.json with correct dependencies Co-Authored-By: [email protected] <[email protected]>
- Add back cta field to indicate Composio's extensive tool offerings - Update setup instructions to reference __init__.py Co-Authored-By: [email protected] <[email protected]>
…NNECT_ prefix Co-Authored-By: [email protected] <[email protected]>
…NNECT_ prefix Co-Authored-By: [email protected] <[email protected]>
…ment variables Co-Authored-By: [email protected] <[email protected]>
one challenge with this implementation is that by not copying the tool into the user's project, we remove the ability for them to modify the tool to best fit their use-case. So for Composio for example, there are a number of ways in which the tool can be adjusted for a specific implementation. additionally, bundling all tools isn't the best idea. if a tool provider exports 20 tools and the developer only wants one of them, it consumes additional context to give the LLM all 20 tools, as well as creating the opportunity for the LLM to pick the wrong tool. |
…ntstack.tools` package
totally. it does have tradeoffs, but adds a few more bonuses:
will think about this. I wanted to incorporate namespacing so it was clear which tool the function was coming from. previously, installing a tool added all of the functions inside the tool package. after playing with the |
We can add an I've been thinking about how we handle custom tools in templates. Still don't have a bright idea, but it would be cool to still be able to package up a project with custom tools and share the template.
allowing the user to select which functions they're installing, in addition to the tool, using the new interactive
just make the branching inside the framework ast editability a bit more complex, but very doable. moving the installed tools from |
Tool Packages
This PR introduces a new way of packaging tools in AgentStack. Tools are now wrapped in a framework-specific layer to allow for our implementations to remain completely generic. Some tools have been reimplemented to work with all frameworks instead of just importing from crewai-tools.
Core Changes
tools_bundled
from ToolConfig as all tools are now bundled for namespacingagentstack.tools
is not part of the public API and is to be used inside a user project to access toolsDirectory Search Implementation
As part of this effort, the directory search tool has been reimplemented as framework-agnostic functions:
search_directory(directory: str, query: str)
: Search any directorysearch_fixed_directory(query: str)
: Search preconfigured directoryEnvironment Variables
DIRECTORY_SEARCH_PATH
: Optional. Path to directory for fixed directory search.Composio Tool Implementation
The composio tool has been reimplemented as framework-agnostic functions:
execute_action
: Execute specified Composio actions with parametersget_action_schema
: Retrieve schema for Composio actionsfind_actions_by_use_case
: Find actions based on use casefind_actions_by_tags
: Locate actions by specified tagsEnvironment Variables
COMPOSIO_API_KEY
: Required. API key for Composio service access.Stripe Tool Implementation
The Stripe tool has been reimplemented as framework-agnostic functions:
Environment Variables
STRIPE_SECRET_KEY
: Required. API key for Stripe service access.Link to Devin run: https://app.devin.ai/sessions/24be273939424e7eacea38661326111e