Fact-Checking / factchecking_front.py
Iker's picture
Upload factchecking_front.py
2e94ecb verified
raw
history blame
4.93 kB
import gradio as gr
import os
import requests
import time
API_URL = "https://Iker-FactChecking-Backend.hf.space:7860" # Replace with your server's URL if different
API_KEY = os.getenv("API_KEY")
headers = {"X-API-Key": API_KEY, "Content-Type": "application/json"}
# Function to submit a fact-checking request
def submit_fact_check(article_topic, config):
endpoint = f"{API_URL}/fact-check"
payload = {"article_topic": article_topic, "config": config}
response = requests.post(endpoint, json=payload, headers=headers)
response.raise_for_status() # Raise an exception for HTTP errors
return response.json()["job_id"]
# Function to get the result of a fact-checking job
def get_fact_check_result(job_id):
endpoint = f"{API_URL}/result/{job_id}"
response = requests.get(endpoint, headers=headers)
response.raise_for_status() # Raise an exception for HTTP errors
return response.json()
def fact_checking(article_topic: str, config="pro"):
try:
job_id = submit_fact_check(article_topic, config.lower())
print(f"Fact-checking job submitted. Job ID: {job_id}")
# Poll for results
while True:
result = get_fact_check_result(job_id)
if result["status"] == "completed":
print("Fact-checking completed:")
print(result["result"])
break
elif result["status"] == "failed":
print("Fact-checking failed:")
print(result["error"])
break
else:
print("Fact-checking in progress. Waiting...")
time.sleep(2) # Wait for 2 seconds before checking again
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
return result
if __name__ == "__main__":
theme = gr.themes.Soft(
primary_hue="green",
secondary_hue="gray",
neutral_hue="neutral",
font=[
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
],
font_mono=[
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
gr.themes.GoogleFont("Poppins"),
],
).set(
body_text_color="*secondary_600",
button_border_width="*block_label_border_width",
button_primary_background_fill="*primary_600",
button_secondary_background_fill="*primary_500",
button_secondary_background_fill_hover="*primary_400",
button_secondary_border_color="*primary_500",
)
with gr.Blocks(
theme=theme,
title="🤖 Automated Fact-Checking Engine",
analytics_enabled=False,
) as demo:
gr_text = gr.Textbox(
label="Fact-Checking Statement",
# info="Write here the statement you want to fact-check",
show_label=False,
lines=1,
interactive=True,
placeholder="Los coches electricos contaminan más que los coches de gasolina",
)
gr_mode = gr.Radio(
label="Fact-Checking Mode",
info="Choose the fact-checking mode. The \"Turbo\" mode is faster and cheaper. The \"Pro\" mode is more accurate but more expensive.",
choices=["Pro", "Turbo"],
type="value",
default="Pro",
show_label=False,
interactive=True,
)
gr_play = gr.Button("Fact-Checking")
gr_output = gr.Markdown(
label="Fact-Checking Results",
visible=True,
)
gr_ft = gr.Textbox(
label="fact_checking",
info="String with fact checking text",
lines=1,
interactive=False,
visible=False,
)
gr_qa = gr.Textbox(
label="qa",
info="Questions and answers, first line is the question, second line is the answer, and so on",
lines=1,
interactive=False,
visible=False,
)
gr_citations = gr.Textbox(
label="citations",
info="Here you will see the citations, first line is the citation id, second line is the url, and so on",
lines=1,
interactive=False,
visible=False,
)
gr_image = gr.Textbox(
label="image",
info="Contains the image url",
interactive=False,
visible=False,
)
gr_play.click(
fact_checking,
inputs=[gr_text,gr_mode],
outputs=[gr_output, gr_ft, gr_qa, gr_citations, gr_image],
)
demo.queue(default_concurrency_limit=1)
demo.launch(auth=(os.getenv("GRADIO_USERNAME"), os.getenv("GRADIO_PASSWORD")))