Image_Caption / app.py
yashasgupta's picture
Update app.py
c6077a4 verified
raw
history blame
1.59 kB
import streamlit as st
from PIL import Image
import base64
import os
from langchain.llms import OpenAI
from langchain.prompts import ChatPromptTemplate
# Set up environment variable for OpenAI API key
os.environ["OPENAI_API_KEY"] = os.getenv("k3")
# Initialize OpenAI with LangChain
llm = OpenAI(api_key=os.environ["OPENAI_API_KEY"], model="cyberagent/llava-calm2-siglip", temperature=0)
# Prompt template for image captioning
caption_template = """
You are an expert image captioner. Given an image in base64 format, provide a descriptive caption for the image.
Image (base64): {image_base64}
Caption:
"""
prompt = ChatPromptTemplate.from_messages([("system", caption_template)])
def generate_caption(image):
# Convert the image to base64
buffered = BytesIO()
image.save(buffered, format="JPEG")
img_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8')
# Create the prompt
formatted_prompt = prompt.format(image_base64=img_base64)
# Generate the caption using OpenAI
response = llm(formatted_prompt)
return response.choices[0].text.strip()
st.title("Image Captioning Application :robot_face:")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image.", use_column_width=True)
if st.button("Generate Caption"):
with st.spinner("Generating caption..."):
caption = generate_caption(image)
st.write("Caption: ")
st.write(caption)