def llm_call(input_variable: Variable, engine: EngineLM, 
             response_role_description: str = None, system_prompt: Variable = None):
    """A functional version of the LLMCall.
    The simple LLM call function. This function will call the LLM with the input and return the response, also register the grad_fn for backpropagation.
    
    :param input_variable: The input variable (aka prompt) to use for the LLM call.
    :type input_variable: Variable
    :param response_role_description: Role description for the LLM response, defaults to VARIABLE_OUTPUT_DEFAULT_ROLE
    :type response_role_description: str, optional
    :return: response sampled from the LLM
    :rtype: Variable
    :param engine: engine to use for the LLM call
    :type engine: EngineLM
    :param input_role_description: role description for the input variable, defaults to VARIABLE_INPUT_DEFAULT_ROLE
    :type input_role_description: str, optional
    :param system_prompt: system prompt to use for the LLM call, default depends on the engine.
    :type system_prompt: Variable, optional
    
    >>> from textgrad import Variable, get_engine
    >>> from textgrad.autograd.functional import llm_call
    >>> engine = get_engine("gpt-3.5-turbo")
    >>> prompt = Variable("What is the capital of France?", role_description="prompt to the LM")
    >>> response = llm_call(prompt, engine=engine) 
    # This returns something like Variable(data=The capital of France is Paris., grads=)
    
    """
    return LLMCall(engine=engine, system_prompt=system_prompt)(input_variable, response_role_description)
A functional version of the LLMCall.
    The simple LLM call function. This function will call the LLM with the input and return the response, also register the grad_fn for backpropagation.
    
    :param input_variable: The input variable (aka prompt) to use for the LLM call.
    :type input_variable: Variable
    :param response_role_description: Role description for the LLM response, defaults to VARIABLE_OUTPUT_DEFAULT_ROLE
    :type response_role_description: str, optional
    :return: response sampled from the LLM
    :rtype: Variable
    :param engine: engine to use for the LLM call
    :type engine: EngineLM
    :param input_role_description: role description for the input variable, defaults to VARIABLE_INPUT_DEFAULT_ROLE
    :type input_role_description: str, optional
    :param system_prompt: system prompt to use for the LLM call, default depends on the engine.
    :type system_prompt: Variable, optional
    
    >>> from textgrad import Variable, get_engine
    >>> from textgrad.autograd.functional import llm_call
    >>> engine = get_engine("gpt-3.5-turbo")
    >>> prompt = Variable("What is the capital of France?", role_description="prompt to the LM")
    >>> response = llm_call(prompt, engine=engine) 
    # This returns something like Variable(data=The capital of France is Paris., grads=)
    
    
textgrad/autograd/functional.py