# app.py import streamlit as st from langchain.llms import Ollama from langchain.prompts import PromptTemplate from langchain.chains import LLMChain from textblob import TextBlob from dotenv import load_dotenv load_dotenv() def load_model(): model = Ollama(model='llama3.1:latest', temperature=0.2) return model def summarize_prompt(): return PromptTemplate( input_variables=["email"], template=( """ 1. Berdasarkan teks berikut, buat ringkasan singkat tentang tindakan utama yang dilakukan oleh user, ambil no resi pada text dalam format berikut: [Aksi User] 2. Berikan juga analisis sentimen percakapan user dengan salah satu label: - Positif - Negatif - Netral Teks: {email} Ringkasan: Aksi User: [Deskripsikan tindakan utama user berdasarkan teks] Sentimen: [Tentukan sentimen berdasarkan nada dan konteks teks] """ ) ) def simple_sentiment_analysis(text): blob = TextBlob(text) sentiment = blob.sentiment.polarity if sentiment > 0: return "Positif" elif sentiment < 0: return "Negatif" else: return "Netral" model = load_model() prompt = summarize_prompt() llm_chain = LLMChain(llm=model, prompt=prompt) def analyze_email(email): result = llm_chain.run(email=email) sentiment = simple_sentiment_analysis(email) return result + f"\nSentimen Percakapan: {sentiment}" # Streamlit UI st.title("Sentiment Analysis and User Action Summarizer") st.write("Enter an email or text below to analyze the user's action and sentiment:") user_input = st.text_area("Email/Text Input", "", height=200) if st.button("Analyze"): if user_input: analysis_result = analyze_email(user_input) st.subheader("Analysis Result:") st.text(analysis_result) else: st.warning("Please enter some text to analyze.")