parent
f4cf551c23
commit
f132ea932a
@ -1,91 +0,0 @@
|
|||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
from loguru import logger
|
|
||||||
from typing import Tuple, Union, List
|
|
||||||
from e2b_code_interpreter import CodeInterpreter
|
|
||||||
|
|
||||||
# load_dotenv()
|
|
||||||
|
|
||||||
|
|
||||||
# Helper function to lazily install the package if not found
|
|
||||||
def lazy_install(package: str) -> None:
|
|
||||||
try:
|
|
||||||
__import__(package)
|
|
||||||
except ImportError:
|
|
||||||
logger.warning(f"{package} not found. Installing now...")
|
|
||||||
subprocess.check_call(
|
|
||||||
[sys.executable, "-m", "pip", "install", package]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Ensure e2b_code_interpreter is installed lazily
|
|
||||||
lazy_install("e2b_code_interpreter")
|
|
||||||
|
|
||||||
|
|
||||||
def code_interpret(
|
|
||||||
code_interpreter: CodeInterpreter, code: str
|
|
||||||
) -> Union[Tuple[List[str], List[str]], None]:
|
|
||||||
"""
|
|
||||||
Runs AI-generated code using the provided CodeInterpreter and logs the process.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
code_interpreter (CodeInterpreter): An instance of the CodeInterpreter class.
|
|
||||||
code (str): The code string to be executed.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Union[Tuple[List[str], List[str]], None]: A tuple of (results, logs) if successful,
|
|
||||||
or None if an error occurred.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
ValueError: If the code or code_interpreter is invalid.
|
|
||||||
"""
|
|
||||||
if not isinstance(code_interpreter, CodeInterpreter):
|
|
||||||
logger.error("Invalid CodeInterpreter instance provided.")
|
|
||||||
raise ValueError(
|
|
||||||
"code_interpreter must be an instance of CodeInterpreter."
|
|
||||||
)
|
|
||||||
if not isinstance(code, str) or not code.strip():
|
|
||||||
logger.error("Invalid code provided.")
|
|
||||||
raise ValueError("code must be a non-empty string.")
|
|
||||||
|
|
||||||
logger.info(
|
|
||||||
f"\n{'='*50}\n> Running the following AI-generated code:\n{code}\n{'='*50}"
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
exec_result = code_interpreter.notebook.exec_cell(
|
|
||||||
code,
|
|
||||||
# on_stderr=lambda stderr: logger.error(f"[Code Interpreter stderr] {stderr}"),
|
|
||||||
# on_stdout=lambda stdout: logger.info(f"[Code Interpreter stdout] {stdout}")
|
|
||||||
)
|
|
||||||
|
|
||||||
if exec_result.error:
|
|
||||||
logger.error(
|
|
||||||
f"[Code Interpreter error] {exec_result.error}"
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
logger.success("Code executed successfully.")
|
|
||||||
# return exec_result.results, exec_result.logs
|
|
||||||
# return exec_result.results
|
|
||||||
prompt = f"{exec_result.results}: {exec_result.logs}"
|
|
||||||
return prompt
|
|
||||||
|
|
||||||
except Exception:
|
|
||||||
logger.exception(
|
|
||||||
"An error occurred during code interpretation."
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
# # from e2b_code_interpreter import CodeInterpreter
|
|
||||||
|
|
||||||
# interpreter = CodeInterpreter()
|
|
||||||
# code = "print('Hello, World!')"
|
|
||||||
|
|
||||||
# result = code_interpret(interpreter, code)
|
|
||||||
|
|
||||||
# if result:
|
|
||||||
# results = result
|
|
||||||
# print("Execution Results:", results)
|
|
||||||
# # print("Execution Logs:", logs)
|
|
Loading…
Reference in new issue