from transformers import Tool class WolframAlpha(Tool): name = "wolfram_alpha" description = ("This is a tool that uses WolframAlpha to compute any mathematical question. It takes one input query, and returns a verbose result in xml format, which includes the solution.") inputs = ["query"] outputs = ["result"] def __call__(self, query, output='xml', pod_format='plaintext'): base_url = 'http://api.wolframalpha.com/v2/query' output_opts = ['xml','json'] format_opts = ['plaintext', 'image', 'image,imagemap', 'mathml', 'sound', 'wav'] if output not in output_opts: return f"{output} is not a correct output parameter! It must be one of these: {output_opts}" if pod_format not in format_opts: return f"{pod_format} is not a correct pod_format parameter! It must be one of these: {format_opts}" params = { 'input': query, 'output': output, 'appid': CFG_appid, } print("About to response") response = requests.get(base_url, params=params) print("response:",response) if response.status_code == 200: if output == 'xml': return response.text elif output == 'json': # Remove unnecessary empty spaces return str(response.json()) else: return f"There was an error with the request, with response: {response}"