fix: fix some bugs in RD-Agent(Q) (#1143)

* fix some bugs in RD-Agent(Q)

* fix factor from report

* fix ci
This commit is contained in:
Yuante Li
2025-08-01 13:20:09 +08:00
committed by GitHub
parent bd8a16d92f
commit 7134a51afa
4 changed files with 22 additions and 5 deletions
+19 -2
View File
@@ -12,7 +12,7 @@ from rdagent.components.document_reader.document_reader import (
load_and_process_pdfs_by_langchain,
)
from rdagent.core.conf import RD_AGENT_SETTINGS
from rdagent.core.proposal import Hypothesis
from rdagent.core.proposal import Hypothesis, HypothesisFeedback
from rdagent.log import rdagent_logger as logger
from rdagent.oai.llm_utils import APIBackend
from rdagent.scenarios.qlib.experiment.factor_experiment import QlibFactorExperiment
@@ -136,8 +136,25 @@ class FactorReportLoop(FactorRDLoop, metaclass=LoopMeta):
logger.log_object(exp.sub_workspace_list, tag="coder result")
return exp
def feedback(self, prev_out: dict[str, Any]):
e = prev_out.get(self.EXCEPTION_KEY, None)
if e is not None:
feedback = HypothesisFeedback(
observations=str(e),
hypothesis_evaluation="",
new_hypothesis="",
reason="",
decision=False,
)
logger.log_object(feedback, tag="feedback")
self.trace.hist.append((prev_out["direct_exp_gen"]["exp_gen"], feedback))
else:
feedback = self.summarizer.generate_feedback(prev_out["running"], self.trace)
logger.log_object(feedback, tag="feedback")
self.trace.hist.append((prev_out["running"], feedback))
def main(report_folder=None, path=None, all_duration: str | None = None, checkout: bool = True):
def main(report_folder=None, path=None, all_duration=None, checkout=True):
"""
Auto R&D Evolving loop for fintech factors (the factors are extracted from finance reports).
@@ -145,7 +145,7 @@ class QlibFactorRunner(CachedRunner[QlibFactorExperiment]):
"lr": str(sota_training_hyperparameters.get("lr", "2e-4")),
"early_stop": str(sota_training_hyperparameters.get("early_stop", 10)),
"batch_size": str(sota_training_hyperparameters.get("batch_size", 256)),
"weight_decay": str(sota_training_hyperparameters.get("weight_decay", 0.0)),
"weight_decay": str(sota_training_hyperparameters.get("weight_decay", 0.0001)),
}
)
sota_model_type = sota_model_exp.sub_tasks[0].model_type
@@ -65,7 +65,7 @@ class QlibModelRunner(CachedRunner[QlibModelExperiment]):
env_to_use.update(
{
"n_epochs": str(training_hyperparameters.get("n_epochs", "100")),
"lr": str(training_hyperparameters.get("lr", "1e-3")),
"lr": str(training_hyperparameters.get("lr", "2e-4")),
"early_stop": str(training_hyperparameters.get("early_stop", 10)),
"batch_size": str(training_hyperparameters.get("batch_size", 256)),
"weight_decay": str(training_hyperparameters.get("weight_decay", 0.0001)),
@@ -61,7 +61,7 @@ class QlibQuantHypothesisGen(FactorAndModelHypothesisGen):
# ========= LLM ==========
elif QUANT_PROP_SETTING.action_selection == "llm":
hypothesis_and_feedback = (
T("scenarios.qlib.prompts:hypothesis_and_feedback").render(trace=trace)
T("scenarios.qlib.prompts:hypothesis_and_feedback").r(trace=trace)
if len(trace.hist) > 0
else "No previous hypothesis and feedback available since it's the first round."
)