Im a beginner in gradio but how can i create a blip vqa chatbot in gradio? I would take a image from the webcam and send the question, and get the response? Currently my code needs a file, not a image from webcam and there are still errors such as tuple can not be read? The processor and model are defined by the way.
import gradio as gr
from PIL import Image
import numpy as np
def add_text(history, text):
history = history + [(text, None)]
return history, gr.update(value=“”, interactive=False)
def add_file(history, file):
history = history + [((file.name,), None)]
return history
def bot(history):
history[-1][0] = question
raw_image = image.open(image)
text = “a photography of”
inputs = processor2(raw_image, text, return_tensors=“pt”)
out = model2.generate(**inputs)
return (processor2.decode(out[0], skip_special_tokens=True))
#response = “That’s cool!”
#history[-1][1] = response
#return history
with gr.Blocks() as demo:
chatbot = gr.Chatbot(, elem_id=“chatbot”).style(height=750)
with gr.Row():
with gr.Column(scale=0.85):
txt = gr.Textbox(
show_label=False,
placeholder="Enter text and press enter, or upload an image",
).style(container=False)
with gr.Column(scale=0.15, min_width=0):
btn = gr.UploadButton("📁", file_types=["image", "video", "audio"])
txt_msg = txt.submit(add_text, [chatbot, txt], [chatbot, txt], queue=False).then(
bot, chatbot, chatbot
)
txt_msg.then(lambda: gr.update(interactive=True), None, [txt], queue=False)
file_msg = btn.upload(add_file, [chatbot, btn], [chatbot], queue=False).then(
bot, chatbot, chatbot
)
demo.launch()
It would be awesome if someone helped!