| 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" " | |
| 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) | |