File size: 2,688 Bytes
4ec96a9
 
15639ec
4ec96a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae7cfd6
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
import streamlit as st
from PIL import Image
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain_groq import ChatGroq  # Groq model for predictions

# Set the title and subtitle
st.title('Bike Purchase Predictions')
st.subheader("Get details and purchase suggestions for your bike.")

# Initialize Groq API with your API key
LLM = ChatGroq(
    temperature=0.6,
    groq_api_key='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'  # Replace with your actual Groq API key
)

# Upload image of bike
uploaded_image = st.file_uploader("Upload an image of the Bike", type=["jpg", "jpeg", "png"])

# Input fields for bike details
kilometres = st.number_input("Kilometres driven", min_value=0)
owner = st.text_input("Owner")
purchase_year = st.number_input("Purchased Year", min_value=1900, max_value=2025)
brand_model = st.text_input("Brand and Model")

# Define a function to process file and make a prediction based on the uploaded bike image and details
def process_file_and_search(uploaded_file, kilometres, owner, purchase_year, brand_model):
    if uploaded_file is not None:
        # Display the uploaded bike image
        c_image = Image.open(uploaded_file)
        st.image(c_image, caption="Uploaded Bike Image", use_column_width=True)
        
        # Create the prompt for Groq model
        prompt = f"Based on the uploaded bike image and the following details:\n" \
                 f"1. Kilometres driven: {kilometres}\n" \
                 f"2. Owner: {owner}\n" \
                 f"3. Purchased Year: {purchase_year}\n" \
                 f"4. Brand and Model: {brand_model}\n" \
                 f"This is an Indian app, Predict the details of the bike. Should the bike be purchased? What is its in INDIA expected price? Provide the reasons for your suggestions."

        # Define the prompt template for the model
        B = PromptTemplate(input=['image', 'kilometres', 'owner', 'purchase_year', 'brand_model'], template=prompt)
        
        # Format the prompt with the uploaded file and other details
        D = B.format(image=uploaded_file, kilometres=kilometres, owner=owner, purchase_year=purchase_year, brand_model=brand_model)
        
        try:
            # Invoke the LLM (Groq model) with the formatted prompt
            E = LLM.invoke(D)
            # Display the result from the model
            st.write("Prediction Result:")
            st.write(E.content)
        except Exception as e:
            st.error(f"Error: {e}")

# Display the result when the submit button is clicked
if st.button('Submit'):
    process_file_and_search(uploaded_file,kilometres,owner,purchase_year,brand_model)