FlowcharttoText / app.py
rahul5035's picture
Update app.py
fdcaf03 verified
raw
history blame
No virus
1.89 kB
import streamlit as st
import subprocess
from PIL import Image
import requests
from io import BytesIO
from transformers import AutoModel, AutoTokenizer
import torch
torch.cuda.empty_cache()
# Load the model and tokenizer on CPU
model = AutoModel.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5-int4', trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-Llama3-V-2_5-int4', trust_remote_code=True)
model.eval()
# Title of the app
st.title("Streamlit App with Image URL and Prompts")
# Text area for image URL
image_url = st.text_area("Enter Image URL:")
# Text area for system prompt input
system_prompt = st.text_area("Enter System Prompt:")
# Text area for user prompt input
question = st.text_area("Enter User Prompt:")
# Button to submit and display the image
if st.button("Submit"):
if image_url:
try:
subprocess.run(['wget', image_url, "-O", 'flowchart.png'])
response = requests.get(image_url)
img = Image.open(BytesIO(response.content))
st.image(img, caption="Image from URL")
except Exception as e:
st.error(f"Error loading image. Please submit another image URL with a .png or .jpg extension: {e}")
else:
st.warning("Please enter an image URL.")
# Model code
if system_prompt and question:
image = Image.open('flowchart.png').convert('RGB')
msgs = [{'role': 'user', 'content': question}]
res = model.chat(
image=image,
msgs=msgs,
tokenizer=tokenizer,
sampling=True, # if sampling=False, beam_search will be used by default
temperature=0.7,
system_prompt=system_prompt # pass system_prompt if needed
)
st.text_area("Output:", value=res, height=200)
else:
st.warning("Please enter both system prompt and user prompt.")