import gradio as gr import joblib import re import pandas as pd from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser # 1. Translator translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-fr") def translate_text(text): return translator(text)[0]['translation_text'] # 2. Sentiment Analysis sentiment = pipeline("sentiment-analysis") def analyze_sentiment(text): return sentiment(text)[0] # 3. Financial Analyst (LangChain with OpenAI, requires API key) def financial_analysis(text, api_key): chat = ChatOpenAI(api_key=api_key) template = "Analyze the financial context of this text:\n\n{text}" prompt = PromptTemplate.from_template(template) chain = LLMChain(llm=chat, prompt=prompt, output_parser=StrOutputParser()) return chain.run({"text": text}) # 4. Personal Info Detection def detect_pii(text): pii_patterns = { "email": r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+", "phone": r"\+?\d[\d\-\s]{8,}\d", "credit_card": r"\b(?:\d[ -]*?){13,16}\b" } found = {} for label, pattern in pii_patterns.items(): matches = re.findall(pattern, text) if matches: found[label] = matches return found or "No personal information found." # 5. Telco Customer Churn Prediction model = joblib.load("model.joblib") def churn_prediction(gender, SeniorCitizen, Partner, tenure, MonthlyCharges): input_df = pd.DataFrame([[gender, SeniorCitizen, Partner, tenure, MonthlyCharges]], columns=["gender", "SeniorCitizen", "Partner", "tenure", "MonthlyCharges"]) prediction = model.predict(input_df)[0] return "Churn" if prediction == 1 else "Not Churn" # Gradio UI setup with gr.Blocks() as demo: with gr.Tab("Translator"): input_text = gr.Textbox(label="Input Text") output_text = gr.Textbox(label="Translated Text") translate_button = gr.Button("Translate") translate_button.click(fn=translate_text, inputs=input_text, outputs=output_text) with gr.Tab("Sentiment Analysis"): sentiment_input = gr.Textbox(label="Text") sentiment_output = gr.Textbox(label="Sentiment") sentiment_button = gr.Button("Analyze") sentiment_button.click(fn=analyze_sentiment, inputs=sentiment_input, outputs=sentiment_output) with gr.Tab("Financial Analyst"): finance_input = gr.Textbox(label="Financial Text") api_key_input = gr.Textbox(label="OpenAI API Key", type="password") finance_output = gr.Textbox(label="Analysis") finance_button = gr.Button("Analyze") finance_button.click(fn=financial_analysis, inputs=[finance_input, api_key_input], outputs=finance_output) with gr.Tab("PII Detector"): pii_input = gr.Textbox(label="Text") pii_output = gr.JSON(label="Detected PII") pii_button = gr.Button("Detect") pii_button.click(fn=detect_pii, inputs=pii_input, outputs=pii_output) with gr.Tab("Telco Churn Predictor"): gender = gr.Dropdown(choices=["Male", "Female"], label="Gender") senior = gr.Dropdown(choices=[0, 1], label="Senior Citizen") partner = gr.Dropdown(choices=["Yes", "No"], label="Partner") tenure = gr.Number(label="Tenure (months)") charges = gr.Number(label="Monthly Charges") churn_output = gr.Textbox(label="Prediction") churn_button = gr.Button("Predict") churn_button.click(fn=churn_prediction, inputs=[gender, senior, partner, tenure, charges], outputs=churn_output) demo.launch()