mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-28 07:57:44 +00:00
dbe2cf12bb
* Init todo * Evaluation & dataset * Generate new data * dataset generation * add the result * Analysis * Factor update * Updates * Reformat analysis.py * CI fix * Revised Preprocessing & Supported Random Forest * Revised to support three models with feature * Further revised prompts * Slight Revision * docs: update contributors (#230) * Revised to support three models with feature * Further revised prompts * Slight Revision * feat: kaggle model and feature (#238) * update first version code * make hypothesis_gen and experiment_builder fit for both feature and model * feat: continue kaggle feature and model coder (#239) * use qlib docker to run qlib models * feature coder ready * model coder ready * fix CI * finish the first round of runner (#240) * Optimized the factor scenario and added the front-end. * fix a small bug * fix a typo * update the kaggle scenario * delete model_template folder * use experiment to run data preprocess script * add source data to scenarios * minor fix * minor bug fix * train.py debug * fixed a bug in train.py and added some TODOs * For Debugging * fix two small bugs in based_exp * fix some bugs * update preprocess * fix a bug in preprocess * fix a bug in train.py * reformat * Follow-up * fix a bug in train.py * fix a bug in workspace * fix a bug in feature duplication * fix a bug in feedback * fix a bug in preprocessed data * fix a bug om feature engineering * fix a ci error * Debugged & Connected * Fixed error on feedback & added other fixes * fix CI errors * fix a CI bug * fix: fix_dotenv_error (#257) * fix_dotenv_error * format with isort * Update rdagent/app/cli.py --------- Co-authored-by: you-n-g <you-n-g@users.noreply.github.com> * chore(main): release 0.2.1 (#249) Release-As: 0.2.1 * init a scenario for kaggle feature engineering * delete error codes * Delete rdagent/app/kaggle_feature/conf.py --------- Co-authored-by: Young <afe.young@gmail.com> Co-authored-by: Taozhi Wang <taozhi.mark.wang@gmail.com> Co-authored-by: you-n-g <you-n-g@users.noreply.github.com> Co-authored-by: cyncyw <47289405+taozhiwang@users.noreply.github.com> Co-authored-by: Xisen-Wang <xisen_application@163.com> Co-authored-by: Haotian Chen <113661982+Hytn@users.noreply.github.com> Co-authored-by: WinstonLiye <1957922024@qq.com> Co-authored-by: WinstonLiyt <104308117+WinstonLiyt@users.noreply.github.com> Co-authored-by: Linlang <30293408+SunsetWolf@users.noreply.github.com>
105 lines
3.7 KiB
Python
105 lines
3.7 KiB
Python
from abc import abstractmethod
|
|
from pathlib import Path
|
|
from typing import Tuple
|
|
|
|
from jinja2 import Environment, StrictUndefined
|
|
|
|
from rdagent.components.coder.model_coder.model import ModelExperiment
|
|
from rdagent.core.prompts import Prompts
|
|
from rdagent.core.proposal import (
|
|
Hypothesis,
|
|
Hypothesis2Experiment,
|
|
HypothesisGen,
|
|
Scenario,
|
|
Trace,
|
|
)
|
|
from rdagent.oai.llm_utils import APIBackend
|
|
|
|
ModelHypothesis = Hypothesis
|
|
|
|
prompt_dict = Prompts(file_path=Path(__file__).parent / "prompts.yaml")
|
|
|
|
|
|
class ModelHypothesisGen(HypothesisGen):
|
|
prompts: Prompts = prompt_dict
|
|
|
|
# The following methods are scenario related so they should be implemented in the subclass
|
|
@abstractmethod
|
|
def prepare_context(self, trace: Trace) -> Tuple[dict, bool]:
|
|
...
|
|
|
|
@abstractmethod
|
|
def convert_response(self, response: str) -> ModelHypothesis:
|
|
...
|
|
|
|
def gen(self, trace: Trace) -> ModelHypothesis:
|
|
context_dict, json_flag = self.prepare_context(trace)
|
|
|
|
system_prompt = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(ModelHypothesisGen.prompts["hypothesis_gen"]["system_prompt"])
|
|
.render(
|
|
targets="feature engineering and model building",
|
|
scenario=self.scen.get_scenario_all_desc(),
|
|
hypothesis_output_format=context_dict["hypothesis_output_format"],
|
|
hypothesis_specification=context_dict["hypothesis_specification"],
|
|
)
|
|
)
|
|
user_prompt = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(ModelHypothesisGen.prompts["hypothesis_gen"]["user_prompt"])
|
|
.render(
|
|
targets="feature engineering and model building",
|
|
hypothesis_and_feedback=context_dict["hypothesis_and_feedback"],
|
|
RAG=context_dict["RAG"],
|
|
)
|
|
)
|
|
|
|
resp = APIBackend().build_messages_and_create_chat_completion(user_prompt, system_prompt, json_mode=json_flag)
|
|
|
|
hypothesis = self.convert_response(resp)
|
|
|
|
return hypothesis
|
|
|
|
|
|
class ModelHypothesis2Experiment(Hypothesis2Experiment[ModelExperiment]):
|
|
prompts: Prompts = prompt_dict
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
|
|
@abstractmethod
|
|
def prepare_context(self, hypothesis: Hypothesis, trace: Trace) -> Tuple[dict, bool]:
|
|
...
|
|
|
|
@abstractmethod
|
|
def convert_response(self, response: str, trace: Trace) -> ModelExperiment:
|
|
...
|
|
|
|
def convert(self, hypothesis: Hypothesis, trace: Trace) -> ModelExperiment:
|
|
context, json_flag = self.prepare_context(hypothesis, trace)
|
|
system_prompt = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(ModelHypothesis2Experiment.prompts["hypothesis2experiment"]["system_prompt"])
|
|
.render(
|
|
targets="feature engineering and model building",
|
|
scenario=trace.scen.get_scenario_all_desc(),
|
|
experiment_output_format=context["experiment_output_format"],
|
|
)
|
|
)
|
|
user_prompt = (
|
|
Environment(undefined=StrictUndefined)
|
|
.from_string(ModelHypothesis2Experiment.prompts["hypothesis2experiment"]["user_prompt"])
|
|
.render(
|
|
targets="feature engineering and model building",
|
|
target_hypothesis=context["target_hypothesis"],
|
|
hypothesis_and_feedback=context["hypothesis_and_feedback"],
|
|
target_list=context["target_list"],
|
|
RAG=context["RAG"],
|
|
)
|
|
)
|
|
|
|
resp = APIBackend().build_messages_and_create_chat_completion(user_prompt, system_prompt, json_mode=json_flag)
|
|
|
|
return self.convert_response(resp, trace)
|