Spaces:
Sleeping
Sleeping
import os | |
import time | |
import requests | |
import gradio as gr | |
from utils import get_url_list | |
from models import SubmitQuestionAndDocumentRequest, GetQuestionAndFactsResponse, SubmitQuestionAndDocumentsResponse | |
base_url = os.environ['CLERIC_API_ENDPOINT'] | |
def fetch_facts(question, call_log_urls): | |
if len(call_log_urls) == 0: | |
raise gr.Error('Please input call log.') | |
if len(question) == 0: | |
raise gr.Error('Please input question.') | |
urls = get_url_list(call_log_urls) | |
payload = SubmitQuestionAndDocumentRequest( | |
question=question, | |
documents=urls | |
).dict() | |
response = requests.post(f"{base_url}/submit_question_and_documents", json=payload) | |
response = SubmitQuestionAndDocumentsResponse(**response.json()) | |
if response.status != 'success': | |
raise gr.Error('Input error: ' + response.status) | |
start_time = time.time() | |
while True: | |
response = requests.get(f"{base_url}/get_question_and_facts") | |
if response.status_code != 200: | |
raise gr.Error('Server response error.') | |
data = GetQuestionAndFactsResponse(**response.json()) | |
if data.status == "done": | |
break | |
elif time.time() - start_time > 300: | |
return None | |
time.sleep(1) | |
return '\n'.join(data.facts) | |
with gr.Blocks() as demo: | |
gr.Markdown(""" | |
# Cleric Call Logs Summarize Agent | |
### Instructions: | |
1. Enter the URLs in the "Call Log URLs" text box, separating each URL with a new line. | |
2. Add your question related to these call logs. | |
3. Click the "Submit" button to proceed. | |
""") | |
error_box = gr.Textbox(label="Error", visible=False) | |
with gr.Row(equal_height=True): | |
call_logs_box = gr.Textbox(label='Call Log URLs', lines=10) | |
facts_box = gr.Textbox(label='Extracted Facts', lines=10) | |
question_box = gr.Textbox(label='Question') | |
submit_btn = gr.Button("Submit") | |
submit_btn.click( | |
fetch_facts, | |
inputs=[question_box, call_logs_box], | |
outputs=facts_box | |
) | |
demo.launch() | |