You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
from swarms import (
|
|
Agent as SwarmsAgent,
|
|
) # Import the base Agent class from Swarms
|
|
from griptape.structures import Agent as GriptapeAgent
|
|
from griptape.tools import (
|
|
WebScraperTool,
|
|
FileManagerTool,
|
|
PromptSummaryTool,
|
|
)
|
|
|
|
|
|
# Create a custom agent class that inherits from SwarmsAgent
|
|
class GriptapeSwarmsAgent(SwarmsAgent):
|
|
def __init__(self, *args, **kwargs):
|
|
# Initialize the Griptape agent with its tools
|
|
self.agent = GriptapeAgent(
|
|
input="Load {{ args[0] }}, summarize it, and store it in a file called {{ args[1] }}.",
|
|
tools=[
|
|
WebScraperTool(off_prompt=True),
|
|
PromptSummaryTool(off_prompt=True),
|
|
FileManagerTool(),
|
|
],
|
|
*args,
|
|
**kwargs,
|
|
# Add additional settings
|
|
)
|
|
|
|
# Override the run method to take a task and execute it using the Griptape agent
|
|
def run(self, task: str) -> str:
|
|
# Extract URL and filename from task (you can modify this parsing based on task structure)
|
|
url, filename = task.split(
|
|
","
|
|
) # Example of splitting task string
|
|
# Execute the Griptape agent with the task inputs
|
|
result = self.agent.run(url.strip(), filename.strip())
|
|
# Return the final result as a string
|
|
return str(result)
|
|
|
|
|
|
# Example usage:
|
|
griptape_swarms_agent = GriptapeSwarmsAgent()
|
|
output = griptape_swarms_agent.run(
|
|
"https://griptape.ai, griptape.txt"
|
|
)
|
|
print(output)
|