code: def evaluate_call(call, state, tools):
      if not isinstance(call.func, ast.Name):
          raise InterpretorError(
              f"It is not permitted to evaluate other functions than the provided tools (tried to execute {call.func} of "
              f"type {type(call.func)}."
          )
      func_name = call.func.id
      if func_name not in tools:
          raise InterpretorError(
              f"It is not permitted to evaluate other functions than the provided tools (tried to execute {call.func.id})."
          )
  
      func = tools[func_name]
      # Todo deal with args
      args = [evaluate_ast(arg, state, tools) for arg in call.args]
      kwargs = {
          keyword.arg: evaluate_ast(keyword.value, state, tools)
          for keyword in call.keywords
      }
      return func(*args, **kwargs)
  
file_path: transformers/src/transformers/tools/python_interpreter.py
imports: import ast
  import difflib
  from collections.abc import Mapping
  from typing import Any, Callable, Dict
label_desc: Use image node_id 4 for calling a global function with example usage: evaluate_call(call, state, tools) and returns: func