Add reflections as a background task

This commit is contained in:
Jenit Jain 2025-08-24 21:11:35 -07:00
parent 341d81079f
commit baf74ff197
4 changed files with 14 additions and 37 deletions

3
.gitignore vendored
View File

@ -8,4 +8,5 @@ eval_data/
*.egg-info/
.env
trading_agents/
web_app/frontend/node_modules/*
web_app/frontend/node_modules/*
*.pdf

BIN
docs/TradingAgentsGraph.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View File

@ -29,4 +29,5 @@ pydantic
python-multipart
python-jose[cryptography]
passlib[bcrypt]
python-dotenv
python-dotenv
pygraphviz

View File

@ -382,8 +382,8 @@ async def get_jobs():
return {"jobs": job_lst}
@app.post("/reflect-on-analysis/{symbol}/{date}")
async def reflect_on_analysis(symbol: str, date: str, request: dict):
@app.post("/reflect-on-analysis/{symbol}/{date}", response_model=AnalysisResponse)
async def reflect_on_analysis(symbol: str, date: str, request: dict, background_tasks: BackgroundTasks):
"""Get latest financial situation memory for a specific analysis"""
returns_losses = request.get("returns_losses")
if returns_losses is None:
@ -402,40 +402,15 @@ async def reflect_on_analysis(symbol: str, date: str, request: dict):
if not matching_job:
raise HTTPException(status_code=404, detail=f"No active job found for {symbol} on {date}")
matching_job.trading_agent.reflect_and_remember(returns_losses)
background_tasks.add_task(
matching_job.trading_agent.reflect_and_remember, returns_losses
)
try:
bull_memory = matching_job.trading_agent.bull_memory
bear_memory = matching_job.trading_agent.bear_memory
trader_memory = matching_job.trading_agent.trader_memory
invest_judge_memory = matching_job.trading_agent.invest_judge_memory
risk_manager_memory = matching_job.trading_agent.risk_manager_memory
reflections = {}
latest_entry = bull_memory.get_latest_situation()
reflections["bull_memory"] = latest_entry
latest_entry = bear_memory.get_latest_situation()
reflections["bear_memory"] = latest_entry
latest_entry = trader_memory.get_latest_situation()
reflections["trader_memory"] = latest_entry
latest_entry = invest_judge_memory.get_latest_situation()
reflections["invest_judge_memory"] = latest_entry
latest_entry = risk_manager_memory.get_latest_situation()
reflections["risk_manager_memory"] = latest_entry
return {
"symbol": symbol.upper(),
"date": date,
"job_id": matching_job.job_id,
"reflections": reflections
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error retrieving latest situation: {str(e)}")
return AnalysisResponse(
job_id=matching_job.job_id,
status="reflecting",
message=f"Reflecting on analysis for {symbol} on {date}"
)
@app.get("/config")
async def get_default_config():