|
|
from .base_agent import BaseAgent |
|
|
from prompt.constants import modeling_methods |
|
|
from prompt.template import (TASK_ANALYSIS_PROMPT, TASK_RESULT_PROMPT, TASK_ANSWER_PROMPT, |
|
|
TASK_FORMULAS_PROMPT, TASK_FORMULAS_CRITIQUE_PROMPT, TASK_FORMULAS_IMPROVEMENT_PROMPT, |
|
|
TASK_MODELING_PROMPT, TASK_MODELING_CRITIQUE_PROMPT, TASK_MODELING_IMPROVEMENT_PROMPT) |
|
|
|
|
|
class Task(BaseAgent): |
|
|
def __init__(self, llm): |
|
|
super().__init__(llm) |
|
|
|
|
|
def analysis(self, task_description: str, user_prompt: str = ''): |
|
|
prompt = TASK_ANALYSIS_PROMPT.format(task_description=task_description, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
def formulas_actor(self, data_summary: str, task_description: str, task_analysis: str, user_prompt: str = ''): |
|
|
prompt = TASK_FORMULAS_PROMPT.format(data_summary=data_summary, task_description=task_description, task_analysis=task_analysis, modeling_methods=modeling_methods, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
def formulas_critic(self, data_summary: str, task_description: str, task_analysis: str, modeling_formulas: str): |
|
|
prompt = TASK_FORMULAS_CRITIQUE_PROMPT.format(data_summary=data_summary, task_description=task_description, task_analysis=task_analysis, modeling_formulas=modeling_formulas).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
def formulas_improvement(self, data_summary: str, task_description: str, task_analysis: str, modeling_formulas: str, modeling_formulas_critique: str, user_prompt: str = ''): |
|
|
prompt = TASK_FORMULAS_IMPROVEMENT_PROMPT.format(data_summary=data_summary, task_description=task_description, task_analysis=task_analysis, modeling_formulas=modeling_formulas, modeling_formulas_critique=modeling_formulas_critique, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
def formulas(self, data_summary: str, task_description: str, task_analysis: str, round: int = 1, user_prompt: str = ''): |
|
|
formulas = self.formulas_actor(data_summary, task_description, task_analysis, user_prompt) |
|
|
for i in range(round): |
|
|
print(f'FORMULAS Round {i+1}') |
|
|
formulas_critique = self.formulas_critic(data_summary, task_description, task_analysis, formulas) |
|
|
formulas = self.formulas_improvement(data_summary, task_description, task_analysis, formulas, formulas_critique, user_prompt) |
|
|
return formulas |
|
|
|
|
|
def modeling_actor(self, data_summary: str, task_description: str, task_analysis: str, formulas: str, user_prompt: str = ''): |
|
|
prompt = TASK_MODELING_PROMPT.format(data_summary=data_summary, task_description=task_description, task_analysis=task_analysis, modeling_formulas=formulas, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def modeling(self, data_summary: str, task_description: str, task_analysis: str, formulas: str, round: int = 1, user_prompt: str = ''): |
|
|
return self.modeling_actor(data_summary, task_description, task_analysis, formulas, user_prompt) |
|
|
|
|
|
def result(self, task_description: str, task_analysis: str, task_formulas: str, task_modeling: str, user_prompt: str = ''): |
|
|
prompt = TASK_RESULT_PROMPT.format(task_description=task_description, task_analysis=task_analysis, task_formulas=task_formulas, task_modeling=task_modeling, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|
|
|
def answer(self, task_description: str, task_analysis: str, task_formulas: str, task_modeling: str, task_result: str, user_prompt: str = ''): |
|
|
prompt = TASK_ANSWER_PROMPT.format(task_description=task_description, task_analysis=task_analysis, task_formulas=task_formulas, task_modeling=task_modeling, task_result=task_result, user_prompt=user_prompt).strip() |
|
|
return self.llm.generate(prompt) |
|
|
|