with gr.Blocks(analytics_enabled=False) as demo:
local_storage = gr.State([])
gr.Markdown("# CloudSearch Image Search")
with gr.Tab("Upload Files"):
file_input = gr.File(file_count="multiple", label="支持 png,jpeg,jpg,webp 类型 ", file_types=['image'])
radio_input = gr.Radio([False, True], label="是否开启图像增强,开启后会调用大模型生成图像描述", value=True)
prompt = gr.Textbox(lines=1, label="Prompt", value='提取图中商品的关键词,直接输出结果')
upload_button = gr.Button("Uploads")
headers=["File", "Status"],
datatype=["str", "str"],
upload_button.click(upload_images, inputs=[file_input, prompt], outputs=[result])
with gr.Tab("Search Image"):
image_input = gr.Image(type="pil", sources=["upload"], height=450, width=450)
gr.Markdown("图片描述内容用来提供混合搜索。可以调用大模型生成图片描述,也可以手动填写内容,如果描述内容为空,则只进行图片搜索")
prompt = gr.Textbox(lines=1, label="Prompt", value='提取图中商品的关键词,直接输出结果')
generate_des_btn = gr.Button(value="生成图片描述")
description_input = gr.Textbox(lines=1, label="描述", value='')
temp_slider = gr.Slider(0, 100, value=1, step=0.1, interactive=True, label="文字描述搜索占比")
generate_des_btn.click(gen_image_description,inputs=[image_input, prompt],outputs=[description_input])
size = gr.Number(minimum=10, maximum=1000, step=10, value=10)
image_button = gr.Button("Search Image")
data_output = gr.Dataframe(
headers=["Id", "Score", "ImageUrl","Description"],
datatype=["str", "number", "str", "str"],
image_output = gr.Gallery(show_label=False, elem_id="gallery", columns=[4], object_fit="contain", height="auto")
image_button.click(search_images, inputs=[image_input, description_input, temp_slider, size], outputs=[data_output, image_output])
demo.launch(server_name="0.0.0.0", server_port=7860)