Spaces:
Sleeping
Sleeping
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) |