A RAG (Retrieval Augmented Generation) based chat application capable of providing realtime stock quotes, market insights, stock news, historical earnings as well as creating a meaningful visualization of that data on the fly.
![Screenshot 2025-01-31 at 12 20 10 PM](https://private-user-images.githubusercontent.com/62794227/408658229-5f7f96cc-b962-4e69-b5ff-ba025b54582c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxOTkyODksIm5iZiI6MTczOTE5ODk4OSwicGF0aCI6Ii82Mjc5NDIyNy80MDg2NTgyMjktNWY3Zjk2Y2MtYjk2Mi00ZTY5LWI1ZmYtYmEwMjViNTQ1ODJjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE0NDk0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYyYWNmYmIwMDI4NDU2ZWFjMmE0NmRmMDAxY2ExZDhhODQ0MGIxNjdjZGU3ZTFiNWU2ZTE3NjUxNDNlYWFhNDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nh8U59PCQxzE1_krqRPWXbkwfsjgetosH2ohOw37liQ)
![image](https://private-user-images.githubusercontent.com/62794227/410132389-7e8a7c89-8b3f-41d4-8c2a-6fa0d48572b3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxOTkyODksIm5iZiI6MTczOTE5ODk4OSwicGF0aCI6Ii82Mjc5NDIyNy80MTAxMzIzODktN2U4YTdjODktOGIzZi00MWQ0LThjMmEtNmZhMGQ0ODU3MmIzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE0NDk0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmZWQ1MDcxMWQ5ODBlN2EyNWM4NjE1MzEzZmU4NGE5ODQ0MDc0N2RmMmEzNTFjYThlNmZlYjI4ODEzOTlmNGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.559W0OsIVHSjvbf2CN2hODFKR2WFUHqdw_GTZqSEbDk)
Streamlit | Langchain | LangGraph | FastAPI | FinnHub
Three core components work together:
client.py
- Streamlit frontend with chat interfaceserver.py
- FastAPI backend handling AI processingllm.py
- LangGraph workflow with financial data tools
- Real-time stock data analysis
- Company recommendation trends visualization
- Earnings history and news summaries
- Conversational AI with financial expertise
- Python 3.12
- Conda package manager
- API keys for Finnhub and Azure OpenAI
# Create conda environment
conda create -y -p ./conda python=3.12
conda activate ./.conda
# Install dependencies
pip install -r requirements.txt
# Create .env file
touch .env
OPENAI_API_DEPLOYMENT=your-deployment-name
OPENAI_API_MODEL=your-model-name
AZURE_OPENAI_ENDPOINT=your-azure-endpoint
OPENAI_API_VERSION=2023-05-15
OPENAI_API_KEY=your-openai-key
FINNHUB_API_KEY=your-finnhub-key
- Start Server (in separate terminal)
uvicorn server:app --reload
- Start Client
streamlit run client.py
- Sample Queries:
Q. "Show me recommendation trends for apple"
Q. "What's the current price of tesla?"
Q. "Summarize recent news for microsoft"
Q. "Display earnings history for google"
- Client (Streamlit Frontend)
- Handles user interface and chat history
- Sends prompts to server via POST requests
- Visualizes responses using Streamlit charts
- Maintains session-based chat history
- Server (FastAPI Backend)
- Receives POST requests with user prompts
- Maintains conversation state using LangGraph
- Coordinates with financial data tools
- Returns AI-generated responses in JSON format
- LLM Workflow (LangGraph)
- Processes natural language queries using Azure OpenAI
- Routes to appropriate financial tools:
getStockData
: Company profilesgetStockRecommendation
: Analyst trendsgetCompanyNews
: Recent news summariesgetStockPrice
: Real-time quotesgetCompanyEarnings
: Historical performance
MIT License - Use responsibly with proper API key management. Always verify financial insights with professional advisors.