How to create blip vqa chatbot with webcam in gradio?

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 + [((,), None)]
return history

def bot(history):
history[-1][0] = question
raw_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(
            placeholder="Enter text and press enter, or upload an image",
    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

It would be awesome if someone helped!