diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..4129138 Binary files /dev/null and b/.DS_Store differ diff --git a/agentstack/.DS_Store b/agentstack/.DS_Store new file mode 100644 index 0000000..f03cb10 Binary files /dev/null and b/agentstack/.DS_Store differ diff --git a/agentstack/templates/.DS_Store b/agentstack/templates/.DS_Store new file mode 100644 index 0000000..a838d61 Binary files /dev/null and b/agentstack/templates/.DS_Store differ diff --git a/agentstack/templates/crewai/.DS_Store b/agentstack/templates/crewai/.DS_Store new file mode 100644 index 0000000..1c6434b Binary files /dev/null and b/agentstack/templates/crewai/.DS_Store differ diff --git a/agentstack/templates/crewai/tools/.DS_Store b/agentstack/templates/crewai/tools/.DS_Store new file mode 100644 index 0000000..b6a8294 Binary files /dev/null and b/agentstack/templates/crewai/tools/.DS_Store differ diff --git a/agentstack/templates/crewai/tools/exa_tool.py b/agentstack/templates/crewai/tools/exa_tool.py new file mode 100644 index 0000000..9eb2e19 --- /dev/null +++ b/agentstack/templates/crewai/tools/exa_tool.py @@ -0,0 +1,35 @@ +from crewai_tools import tool +from exa_py import Exa +from dotenv import load_dotenv +import os + +load_dotenv() + +# Check out our docs for more info! https://docs.exa.ai/ +@tool("Exa search and get contents") +def search_and_contents(question: str) -> str: + """ + Tool using Exa's Python SDK to run semantic search and return result highlights. + Args: + question: The search query or question to find information about + Returns: + Formatted string containing titles, URLs, and highlights from the search results + """ + exa = Exa(api_key=os.getenv('EXA_API_KEY')) + + response = exa.search_and_contents( + question, + type="neural", + use_autoprompt=True, + num_results=3, + highlights=True + ) + + parsedResult = ''.join([ + f'{eachResult.title}' + f'{eachResult.url}' + f'{"".join(eachResult.highlights)}' + for (idx, eachResult) in enumerate(response.results) + ]) + + return parsedResult diff --git a/agentstack/tools/.DS_Store b/agentstack/tools/.DS_Store new file mode 100644 index 0000000..1f7dd4b Binary files /dev/null and b/agentstack/tools/.DS_Store differ diff --git a/agentstack/tools/exa.json b/agentstack/tools/exa.json new file mode 100644 index 0000000..45690ac --- /dev/null +++ b/agentstack/tools/exa.json @@ -0,0 +1,7 @@ +{ + "name": "exa", + "package": "poetry add exa_py", + "env": "EXA_API_KEY=...", + "tools": ["search_and_contents"], + "cta": "Get your Exa API key at https://dashboard.exa.ai/api-keys" +} \ No newline at end of file diff --git a/agentstack/tools/tools.json b/agentstack/tools/tools.json index 4a917cb..6f405f0 100644 --- a/agentstack/tools/tools.json +++ b/agentstack/tools/tools.json @@ -6,6 +6,11 @@ "name": "firecrawl", "url": "https://www.firecrawl.dev/" }], + "sandboxing": [ + { + "name":"e2b", + "url": "https://e2b.dev/" + }], "storage": [{ "name": "mem0", "url": "https://github.com/mem0ai/mem0" @@ -38,5 +43,9 @@ "vision": [{ "name": "vision", "url": "AgentStack core tool" + }], + "web-retrieval": [{ + "name": "exa", + "url": "https://exa.ai" }] }