# app.py import gradio as gr import torch import pandas as pd from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration import yfinance as yf # Load the fine-tuned RAG model and tokenizer tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-base") retriever = RagRetriever.from_pretrained("facebook/rag-sequence-base", index_name="custom") model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-base", retriever=retriever) # Function to fetch and preprocess ICICI Bank data def fetch_and_preprocess_data(): # Fetch ICICI Bank data using yfinance ticker = "ICICIBANK.NS" data = yf.download(ticker, start="2020-01-01", end="2023-01-01") # Calculate technical indicators data['MA_50'] = data['Close'].rolling(window=50).mean() data['MA_200'] = data['Close'].rolling(window=200).mean() return data # Function to analyze trading data using the RAG model def analyze_trading_data(question): # Fetch and preprocess data data = fetch_and_preprocess_data() # Prepare context for the RAG model context = ( f"ICICI Bank stock data:\n" f"Latest Close Price: {data['Close'].iloc[-1]:.2f}\n" f"50-Day Moving Average: {data['MA_50'].iloc[-1]:.2f}\n" f"200-Day Moving Average: {data['MA_200'].iloc[-1]:.2f}\n" ) # Combine question and context input_text = f"Question: {question}\nContext: {context}" # Tokenize the input inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True) # Generate the answer using the RAG model outputs = model.generate(inputs['input_ids']) # Decode the output to get the answer answer = tokenizer.decode(outputs[0], skip_special_tokens=True) return answer # Gradio interface iface = gr.Interface( fn=analyze_trading_data, inputs="text", outputs="text", title="ICICI Bank Trading Analysis", description="Ask any question about ICICI Bank's trading data and get a detailed analysis.", examples=[ "What is the current trend of ICICI Bank stock?", "Is the 50-day moving average above the 200-day moving average?", "What is the latest closing price of ICICI Bank?" ] ) # Launch the app iface.launch()