text: suffix=suffix,    input_variables=["objective", "task", "context", "agent_scratchpad"],)Define the BabyAGI Controllerâ€‹BabyAGI composes the chains defined above in a (potentially-)infinite loop.def get_next_task(    task_creation_chain: LLMChain,    result: Dict,    task_description: str,    task_list: List[str],    objective: str,) -> List[Dict]:    """Get the next task."""    incomplete_tasks = ", ".join(task_list)    response = task_creation_chain.run(        result=result,        task_description=task_description,        incomplete_tasks=incomplete_tasks,        objective=objective,    )    new_tasks = response.split("\n")    return [{"task_name": task_name} for task_name in new_tasks if task_name.strip()]def prioritize_tasks(    task_prioritization_chain: LLMChain,    this_task_id: int,    task_list: List[Dict],    objective: str,) -> List[Dict]:    """Prioritize tasks."""    task_names = [t["task_name"] for t in task_list]    next_task_id = int(this_task_id) + 1    response = task_prioritization_chain.run(        task_names=task_names, next_task_id=next_task_id, objective=objective    )    new_tasks = response.split("\n")    prioritized_task_list = []    for task_string in new_tasks:        if not task_string.strip():