-
Notifications
You must be signed in to change notification settings - Fork 183
Tool packages #76
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
Tool packages #76
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.
Co-Authored-By: root@a10k.co <root@a10k.co>
Co-Authored-By: root@a10k.co <root@a10k.co>
Co-Authored-By: root@a10k.co <root@a10k.co>
- Port implementation from crewAI-tools - Make functions framework-agnostic - Remove unnecessary framework-specific files - Update config.json with correct dependencies Co-Authored-By: root@a10k.co <root@a10k.co>
- Add back cta field to indicate Composio's extensive tool offerings - Update setup instructions to reference __init__.py Co-Authored-By: root@a10k.co <root@a10k.co>
Co-Authored-By: root@a10k.co <root@a10k.co>
…NNECT_ prefix Co-Authored-By: root@a10k.co <root@a10k.co>
…NNECT_ prefix Co-Authored-By: root@a10k.co <root@a10k.co>
…ment variables Co-Authored-By: root@a10k.co <root@a10k.co>
|
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 |
# Conflicts: # agentstack/generation/tool_generation.py # agentstack/packaging.py # agentstack/tools.py
bboynton97
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tl;dr
lgtm
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_bundledfrom ToolConfig as all tools are now bundled for namespacingagentstack.toolsis 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