SelmaNajih001's picture
Update app.py
5ce8de1 verified
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
#from langchain.prompts import PromptTemplate
from langchain_core.prompts import PromptTemplate
from huggingface_hub import hf_hub_download
import os
from huggingface_hub import login
hf_token = os.environ["HF_TOKEN"]
login(token=hf_token)
model_name = "SelmaNajih001/GRPORagMinstral2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
pipe = pipeline(
"text-generation",
model=model_name,
tokenizer=model_name,
max_new_tokens=600,
temperature=0.0,
do_sample=False,
num_beams=6,
repetition_penalty=1.5,
return_full_text=False,
eos_token_id=tokenizer.eos_token_id
)
# Prompt template
prompt_template = """
You are a financial market analyst.
Before making a prediction, you must analyze the past, provided in the Context below.
Your goal is to identify similar historical situations and use them to infer what may happen next.
Your analysis must be comprehensive, covering macroeconomic, sectoral, and corporate-specific factors.
You should identify past periods that closely resemble the current environment (e.g., "high inflation + geopolitical conflict" or "rate hikes + tech earnings slump").
Base your reasoning on actual market reactions from those periods — specify which companies or sectors moved and how.
If multiple scenarios are possible, explain each one and why the market may react differently under varying conditions.
Explicitly name the historical reference period(s) used (e.g., "2008 financial crisis," "2020 pandemic crash and recovery," etc.).
Response Format:
-Chosen Stock or List of Stocks:
(name/names)
-Prediction(s):
(expected price change or direction)
-Explanation:
A concise, factual analysis linking the historical precedent to the current conditions.
Mention the relevant macroeconomic, sector, and corporate factors, explaining how they interacted in the past and why similar outcomes may occur again. "
Here the Context:
{context}
Question:
What could happen after: {question}
"""
prompt = PromptTemplate(template=prompt_template, input_variables=["context", "question"])
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/multi-qa-mpnet-base-dot-v1")
import tempfile
tmp_dir = tempfile.mkdtemp()
vectorstore = FAISS.load_local(
folder_path=".",
embeddings=embeddings,
allow_dangerous_deserialization=True
)
def analisi_finanziaria(query, k=3):
docs_found = vectorstore.similarity_search(query, k=k)
context = "\n".join([doc.page_content for doc in docs_found])
final_prompt = prompt.format(context=context, question=query)
# Genera risposta
result = pipe(final_prompt)[0]['generated_text']
return result
import gradio as gr
examples = [
"Trump imposes tariffs",
"Tesla announces a new affordable electric vehicle model",
"Nvidia releases new GPU technology",
"Apple launches Apple TV+ subscription service",
"Elon Musk created a new political party to run against Trump"
]
description_md = """
This tool analyzes financial events using a retrieval-augmented **language model**.
**How it works:**
- The model leverages historical events and news to provide predictions.
- For each input, similar past events are retrieved to give context.
- The output includes:
- **Chosen Stocks**: stocks likely impacted
- **Prediction**: expected price change
- **Explanation**: brief reasoning based on historical context
**Example use cases:**
- Market reactions to political events
- Corporate announcements and earnings reports
- Technological product launches
Click an example below to quickly test the model.
"""
# Gradio interface
iface = gr.Interface(
fn=analisi_finanziaria,
inputs=gr.Textbox(label="Enter financial event", placeholder="Type an event here..."),
outputs=gr.Textbox(label="Prediction"),
title="GRPO Financial Analyst",
description=description_md,
examples=[[e] for e in examples],
allow_flagging="never"
)
iface.launch()