Spaces:
Runtime error
Runtime error
Yago Bolivar
refactor: update tool classes to inherit from Tool base class for consistency and improved structure
bffd09a
| from smolagents.tools import Tool | |
| class TextReversalTool(Tool): | |
| name = "reverse_string_text" | |
| description = "Reverses the order of characters in a given string." | |
| inputs = {"text": {"type": "string", "description": "String to reverse"}} | |
| outputs = {"reversed_text": {"type": "string", "description": "Reversed string"}} # Changed "str" to "string" | |
| output_type = "string" # Changed "str" to "string" | |
| def forward(self, text: str) -> str: | |
| """ | |
| Reverses or processes reversed text, useful for decoding or analyzing reversed strings. | |
| """ | |
| return text[::-1] | |
| def __init__(self, *args, **kwargs): | |
| # Minimal __init__, can be expanded if needed | |
| super().__init__(*args, **kwargs) | |
| # self.is_initialized = False # If you need similar state tracking | |
| # For direct execution/testing of this tool | |
| if __name__ == '__main__': | |
| """Main function to demonstrate the text reversal tool.""" | |
| tool_instance = TextReversalTool() | |
| original_text = "hello world" | |
| # The 'forward' method is what gets called by the agent typically | |
| # For direct testing, you call it directly. | |
| reversed_text = tool_instance.forward(original_text) | |
| print(f"Original: {original_text}") | |
| print(f"Reversed: {reversed_text}") | |
| reversed_instruction = ".rewsna eht sa \"tfel\" drow eht fo etisoppo eht etirw ,ecnetnes siht dnatsrednu uoy fI" | |
| original_instruction = tool_instance.forward(reversed_instruction) | |
| print(f"Reversed Instruction: {reversed_instruction}") | |
| print(f"Original Instruction: {original_instruction}") | |
| # To make the tool discoverable as a standalone function if needed by some frameworks, | |
| # you can alias the forward method or provide a wrapper. | |
| # However, if smolagents expects a class instance, this is the primary way. | |
| reverse_string_text = TextReversalTool().forward | |
| # Or, if the agent system specifically looks for a function decorated with @tool, | |
| # and the class-based approach is for a different registration mechanism, | |
| # then the previous functional approach with direct attribute assignment was more aligned. | |
| # Given the context of app.py using `reverse_string_text` directly for `TextToolAgent`, | |
| # we might need to ensure this name is still callable as a function. | |
| # If `smolagents` uses the class directly, then `app.py` would need to instantiate `TextReversalTool` | |
| # and pass its instance or its `forward` method. | |
| # The current app.py imports `reverse_string_text` as a function. | |
| # Let's provide a callable instance for that: | |
| # reverse_string_text_tool_instance = TextReversalTool() | |
| # reverse_string_text = reverse_string_text_tool_instance.forward | |
| # This makes `reverse_string_text` callable as before. | |