import gradio as gr import os from functools import partial from get_answer import get_answer from logs import save_logs import gdown from config import folder_id, json_url_id json_url_id = os.environ.get("json_url_id") download_url = f'https://drive.google.com/uc?id={json_url_id}' output = 'secret_google_service_account.json' gdown.download(download_url, output, quiet=False) def stream(query,additional_information = ""): resp, description, images = get_answer(query, additional_information) answer = "" listing = "" for img in images: listing += f"![]({img}) " listing += f"\n---\n{description}" yield "" , listing for chunk in resp: if chunk.choices[0].delta.content is not None: answer = answer + chunk.choices[0].delta.content yield answer, listing save_logs(query, answer, folder_id=folder_id) title = "" with gr.Blocks(title=title,theme='nota-ai/theme',css="footer {visibility: hidden}") as demo: gr.Markdown(f"## {title}") with gr.Row(): with gr.Column(scale=6): with gr.Row(): with gr.Column(scale=8): url_input = gr.Textbox(placeholder="https://www.ebay.fr/itm/123", lines=1, label="Link to listing") additional_infomration = gr.Textbox(placeholder="Perfume samples are forbidden", lines=1, label="Missed interpretation? Add any additional information") with gr.Column(scale=1): chat_submit_button = gr.Button(value="Submit ▶") with gr.Row(): with gr.Column(scale=1): listing = gr.Markdown("Waiting for link...") with gr.Column(scale=3): compliance_output = gr.Markdown("Waiting for link...") fn_chat = stream chat_submit_button.click(fn=fn_chat, inputs=[url_input, additional_infomration], outputs=[compliance_output, listing]) demo.launch(max_threads=40, share=True)