heysho's picture
Update app.py
c356634 verified
raw
history blame
3.09 kB
import traceback
import streamlit as st
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
PROMPT = """
## Task: Analyze customer reviews for our product, the 'Review Analyzer'. Focus on extracting key points that a potential buyer would find helpful. Include sentiment analysis to determine overall customer satisfaction.
## Websites for Review: Please collect reviews from popular platforms like Facebook, Instagram, and other relevant forums based on the product's market presence.
## Objective: The goal is to provide potential customers with a clear and concise summary of what current users think about the product. Highlight the most praised features, common issues, and general sentiment.
## Additional: Summarize the analysis in about 200 words, indicating the sources of the reviews and the number of posts analyzed. Ensure the summary is straightforward and easy to understand, tailored to assist in making purchasing decisions.
- Brand: {brand},
- Product:{product},
- Region: {region}
"""
def init_page():
st.set_page_config(
page_title="Product Review Checker AI Agent",
page_icon="๐Ÿ”"
)
st.header("Product Review Checker AI Agent๐Ÿ”")
def select_model(temperature=0):
models = ("GPT-4o","GPT-4o-mini", "Claude 3.5 Sonnet", "Gemini 1.5 Pro")
model_choice = st.radio("Choose a model:", models)
if model_choice == "GPT-4o":
return ChatOpenAI(temperature=temperature, model_name="gpt-4o")
elif model_choice == "GPT-4o-mini":
return ChatOpenAI(temperature=temperature, model_name="gpt-4o-mini")
elif model_choice == "Claude 3.5 Sonnet":
return ChatAnthropic(temperature=temperature, model_name="claude-3-5-sonnet-20240620")
elif model_choice == "Gemini 1.5 Pro":
return ChatGoogleGenerativeAI(temperature=temperature, model="gemini-1.5-pro-latest")
def init_chain():
llm = select_model()
prompt = ChatPromptTemplate.from_messages([
("user", PROMPT),
])
output_parser = StrOutputParser()
chain = prompt | llm | output_parser
return chain
def main():
init_page()
# Style adjustments (optional, remove if not needed)
st.markdown("""<style>.st-emotion-cache-15ecox0 { display: none !important; }
@media (max-width: 50.5rem) {.st-emotion-cache-13ln4jf {max-width: calc(0rem + 100vw);}}
</style>""",unsafe_allow_html=True,)
chain = init_chain()
if chain:
brand = st.text_input("Enter the brand name (e.g., Nike)", key="brand")
product = st.text_input("Enter the product name (e.g., Air Force One shoes)", key="product")
region = st.text_input("Enter your region (e.g., USA)", key="region", value="USA")
if st.button("Submit"):
result = chain.stream({"brand": brand, "product": product, "region": region})
st.write(result)
if __name__ == '__main__':
main()