Spaces:
Runtime error
Runtime error
| import requests | |
| import json | |
| from ..tool import Tool | |
| import os | |
| import sys | |
| from io import StringIO | |
| from typing import Dict, Optional | |
| class PythonREPL: | |
| """Simulates a standalone Python REPL.""" | |
| def __init__(self) -> None: | |
| self.globals: Optional[Dict] = globals() | |
| self.locals: Optional[Dict] = None | |
| def run(self, command: str) -> str: | |
| """Run command with own globals/locals and returns anything printed.""" | |
| old_stdout = sys.stdout | |
| sys.stdout = mystdout = StringIO() | |
| try: | |
| exec(command, self.globals, self.locals) | |
| sys.stdout = old_stdout | |
| output = mystdout.getvalue() | |
| except Exception as e: | |
| sys.stdout = old_stdout | |
| output = repr(e) | |
| print(output) | |
| return output | |
| def build_tool(config) -> Tool: | |
| tool = Tool( | |
| "Python REPL", | |
| "Run python code", | |
| name_for_model="Python REPL", | |
| description_for_model=( | |
| "A Python shell. Use this to execute python commands. " | |
| "Input should be a valid python command. " | |
| "If you want to see the output of a value, you should print it out " | |
| "with `print(...)`." | |
| ), | |
| logo_url="https://your-app-url.com/.well-known/logo.png", | |
| contact_email="hello@contact.com", | |
| legal_info_url="hello@legal.com", | |
| ) | |
| python_repl = PythonREPL() | |
| sanitize_input: bool = True | |
| def run_python(query: str): | |
| """Run python code in a REPL.""" | |
| if sanitize_input: | |
| query = query.strip().strip("```") | |
| return python_repl.run(query) | |
| return tool | |