Self-evolving agentic architecture
This project is based on a self-evolving agentic architecture, which is led by an architect, and acts on feedback received from a feedback agent (in this case, manifesting Warren Buffet).
Core trick
An architect agent rewrites the analyst graph each round based on a feedback agent's critique of the valuation output.
Description
This project is based on a self-evolving agentic architecture, which is led by an architect, and acts on feedback received from a feedback agent (in this case, manifesting Warren Buffet). The objective is to identify an optimal agentic architecture for stock valuation automatically. This might save AI engineers a lot of time doing manual research and trying different architectures.
README excerpt
# Warren Buffett Stock Valuation Framework
A dynamic self-organizing multi-agent system built with **Python**, **LangGraph**, **LangChain**, and **Google Gemini**.
## Features
- **Architect Agent**: Dynamically designs a team of analysts tailored to the stock.
- **Tool-Equipped Subagents**: Subagents use `yfinance` and `Tavily` to gather financial data and news.
- **Local Data Storage**: All gathered research and iteration states are saved to `data/SYMBOL/YYYY-MM-DD/`.
- **Warren Buffett Feedback**: Iterative assessment of the architecture based on value investing principles.
- **Dynamic Execution**: Runs research agents and synthesizes their findings into a final report.
- **Architecture Visualizer**: A FastAPI frontend to visualize the evolution of the graph and agent prompts across iterations.
- **Configurable Models**: Centralized configurations via `config.yaml` to specify iterations and model parameters.
## Setup & Running
1. Ensure you have `uv` installed for dependency management.
2. `cp .env.example .env` (Add your **Google Gemini** and Tavily API keys)
3. Run the backend framework:
```bash
PYTHONPATH=. uv run python backend/main.py
```
4. In a separate terminal, run the visualizer frontend:
```bash
uv run python frontend/visualizer.py
```
Access the visualizer at `http://localhost:8000`
## Project Structure
- `backend/`:
- `main.py`: Entry point for the framework.
- `graph.py`: LangGraph state machine definition.
- `schema.py`: P