File size: 4,493 Bytes
50be1ff
9162cf1
 
 
 
 
 
 
 
 
 
515f567
 
 
377f9ae
 
9162cf1
515f567
 
e04c223
69b8b9c
 
60bcd70
69b8b9c
 
5f1836d
69b8b9c
5f1836d
60bcd70
5f1836d
 
69b8b9c
60bcd70
69b8b9c
5f1836d
69b8b9c
5f1836d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60bcd70
5f1836d
515f567
 
 
 
 
 
 
 
 
 
 
 
 
50be1ff
515f567
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import streamlit as st
import os
import getpass
from langchain import PromptTemplate
from langchain import hub
from langchain.docstore.document import Document
from langchain.document_loaders import WebBaseLoader
from langchain.schema import StrOutputParser
from langchain.schema.prompt_template import format_document
from langchain.schema.runnable import RunnablePassthrough
from langchain.vectorstores import Chroma
import google.generativeai as genai
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.chains.llm import LLMChain
from langchain.chains import StuffDocumentsChain

GOOGLE_API_KEY=os.environ['GOOGLE_API_KEY']

st.title('Stock Market Insights')
st.sidebar.info("Know more about [NSE Tickers](https://www.google.com/search?q=nse+tickers+list&sca_esv=a6c39f4d03c5324c&sca_upv=1&rlz=1C1GCEB_enIN1011IN1011&sxsrf=ADLYWILQPbew-0SrvUUWpI8Y29_uOOgbvA%3A1716470016765&ei=AEFPZp-zLvzHp84P_ZWtuA0&oq=NSE+Tickers+&gs_lp=Egxnd3Mtd2l6LXNlcnAiDE5TRSBUaWNrZXJzICoCCAAyBRAAGIAEMggQABgWGAoYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHjIGEAAYFhgeMgYQABgWGB4yBhAAGBYYHjILEAAYgAQYhgMYigUyCxAAGIAEGIYDGIoFSIIbUL0PWL0PcAF4AZABAJgB8QKgAfECqgEDMy0xuAEByAEA-AEBmAICoAKKA8ICChAAGLADGNYEGEeYAwCIBgGQBgiSBwUxLjMtMaAHtQU&sclient=gws-wiz-serp)")
    
ticker_user = st.text_input("Enter Ticker for NSE Stocks","")
    
gemini_embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")

llm = ChatGoogleGenerativeAI(model="gemini-pro",google_api_key = GOOGLE_API_KEY)

if ticker_user!="":
    url1 = f"https://www.google.com/finance/quote/{ticker_user}:NSE?hl=en"
    url2 = f"https://in.tradingview.com/symbols/NSE-{ticker_user}/"
    # url3 = f"https://www.nseindia.com/get-quotes/equity?symbol={ticker_user}"

    loader = WebBaseLoader([url1,url2])
    docs = loader.load()

    
    st.divider()
    # llm_prompt_template = """You are an expert Stock Market Trader for stock market insights based on fundamental, analytical, profit based and company financials.
    # Based on the context below
    # {context}, Summarize the stock based on Historical data based on fundamental, price, news, sentiment , any red flags and suggest rating of the Stock in a 1 to 10 Scale"""
    
    llm_prompt_template = """You are an expert Stock Market Trader specializing in stock market insights derived from fundamental analysis, analytical trends, profit-based evaluations, and detailed company financials. Using your expertise, please analyze the stock based on the provided context below.
    
    Context:
    {context}
    
    Task:
    Summarize the stock based on its historical and current data.
    Evaluate the stock on the following parameters:
    1. Company Fundamentals: Assess the stock's intrinsic value, growth potential, and financial health.
    2. Current & Future Price Trends: Analyze historical price movements and current price trends.
    3. News and Sentiment: Review recent news articles, press releases, and social media sentiment.
    4. Red Flags: Identify any potential risks or warning signs.
    5. Provide a rating for the stock on a scale of 1 to 10.
    6. Advise if the stock is a good buy for the next 2 weeks.
    7. Suggest at what price we need to buy and hold or sell
    """
    
    st.sidebar.subheader('Prompt')
    user_prompt = st.sidebar.text_area("Enter Prompt",llm_prompt_template)
    
    llm_prompt = PromptTemplate.from_template(user_prompt)
    
    llm_chain = LLMChain(llm=llm,prompt=llm_prompt)
    stuff_chain = StuffDocumentsChain(llm_chain=llm_chain,document_variable_name="context")
    
    
    res = stuff_chain.invoke(docs)
    
    st.success('Response')
    st.write(res["output_text"])

# If there is no environment variable set for the API key, you can pass the API
# key to the parameter `google_api_key` of the `GoogleGenerativeAIEmbeddings`
# function: `google_api_key = "key"`.

# gemini_embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")

# # Save to disk
# vectorstore = Chroma.from_documents(
#                      documents=docs,                 # Data
#                      embedding=gemini_embeddings,    # Embedding model
#                      persist_directory="./chroma_db" # Directory to save data
#                      )

# vectorstore_disk = Chroma(
#                         persist_directory="./chroma_db",       # Directory of db
#                         embedding_function=gemini_embeddings   # Embedding model