import gradio as gr
import base64
import requests
import os
import json
MAINTENANCE_NOTICE1 = 'Hint 1: If the app report "Something went wrong, connection error out", please turn off your proxy and retry.\nHint 2: If you upload a large size of image like 10MB, it may take some time to upload and process. Please be patient and wait.'
default_chatbox = []
NOTES = 'This app is adapted from https://modelscope.cn/models/Fengshenbang/Ziya-Visual-Lyrics-14B. It would be recommended to check out the repo if you want to see the detail of our model. And most of the codes attach to this demo are modify from Lyrics.'
def post(
input_text,
image_path,
temperature,
top_p,
result_previous,
hidden_image
):
# 服务的URL
with open(image_path,'rb') as f:
image_prompt = base64.b64encode(f.read())
service_url = os.getenv('URL_PATH')
# 准备请求数据
data = {
'image_strs': image_prompt,
'prompt': input_text
}
# 发送请求
print("In the fn")
response = requests.post(service_url, data=data)
print(response.json())
result_text = []
result_text.append((input_text, response.json()))
print(result_text)
return "", result_text, None
def clear_fn(value):
return "", default_chatbox, None
def clear_fn2(value):
return default_chatbox
def io_fn(a, b, c):
print(f"call io_fn")
return a, b
gr.close_all()
examples = []
with open("./examples/example_inputs.jsonl") as f:
for line in f:
data = json.loads(line)
examples.append(data)
def main():
with gr.Blocks(css='style.css') as demo:
with gr.Row():
with gr.Column(scale=4.5):
with gr.Group():
input_text = gr.Textbox(label='Input Text', placeholder='Please enter text prompt below and press ENTER.')
with gr.Row():
run_button = gr.Button('Generate')
clear_button = gr.Button('Clear')
img_path = gr.Image(type="filepath", label="Image Prompt", value=None)
with gr.Row():
temperature = gr.Slider(maximum=1, value=0.7, minimum=0, label='Temperature')
top_p = gr.Slider(maximum=1, value=0.1, minimum=0, label='Top P')
with gr.Group():
with gr.Row():
with gr.Column(scale=7):
maintenance_notice = gr.Markdown(MAINTENANCE_NOTICE1)
with gr.Column(scale=2):
change_button = gr.Button('Change hint to English', visible=False)
with gr.Column(scale=5.5):
result_text = gr.components.Chatbot(label='Multi-round conversation History', value=[]).style(height=550)
hidden_image_hash = gr.Textbox(visible=False)
gr_examples = gr.Examples(examples=[[example["text"], example["image"]] for example in examples],
inputs=[input_text, img_path],
label="Example Inputs (Click to insert an examplet into the input box)",
examples_per_page=3)
print(gr.__version__)
run_button.click(fn=post,inputs=[input_text, img_path, temperature, top_p, result_text, hidden_image_hash],
outputs=[input_text, result_text, hidden_image_hash])
input_text.submit(fn=post,inputs=[input_text, img_path, temperature, top_p, result_text, hidden_image_hash],
outputs=[input_text, result_text, hidden_image_hash])
clear_button.click(fn=clear_fn, inputs=clear_button, outputs=[input_text, result_text, img_path])
img_path.upload(fn=clear_fn2, inputs=clear_button, outputs=[result_text])
img_path.clear(fn=clear_fn2, inputs=clear_button, outputs=[result_text])
demo.queue(concurrency_count=10)
demo.launch(server_name="0.0.0.0")
if __name__ == '__main__':
print('start service')
os.system("pip uninstall -y gradio")
os.system("pip install gradio==3.29.0")
print(gr.__version__)
main()