DannyAI's picture
Upload 34 files
e6583bf verified
raw
history blame
2.56 kB
import gradio as gr
from shared import ResearchState
from graph_article.graph_article import article_graph
from graph_web.graph_web import web_graph
from pydantic import ValidationError
import os
CREDITS_EXCEEDED_MSG = (
"You have exceeded your monthly included credits for Inference Providers. "
"Subscribe to PRO to get 20x more monthly included credits."
)
def generate_abstract(title, category):
if not title or not category:
return "Please enter both title and category."
try:
init_state = ResearchState(input=title, category=category)
final_state = article_graph.invoke(init_state)
if final_state.get("final_abstract"):
return final_state["final_abstract"]
else:
return "No abstract was accepted by the critic."
except Exception as e:
err_str = str(e)
if CREDITS_EXCEEDED_MSG in err_str:
return CREDITS_EXCEEDED_MSG
return f"Error: {err_str}"
def summarize_webpage(url):
if not url:
return "Please enter a URL."
try:
init_state = ResearchState(url=url)
final_state = web_graph.invoke(init_state)
return final_state.get("summary", "No summary available.")
except ValidationError as ve:
return f"Invalid URL: {ve}"
except Exception as e:
err_str = str(e)
if CREDITS_EXCEEDED_MSG in err_str:
return CREDITS_EXCEEDED_MSG
return f"Error: {err_str}"
with gr.Blocks() as demo:
gr.Markdown("# Agentic Research Abstract Generator and Web Content Summariser Agent With LangGraph")
with gr.Tab("Generate Research Abstract"):
title_input = gr.Textbox(label="Research Title", lines=1)
category_input = gr.Textbox(label="Category", lines=1)
abstract_output = gr.Textbox(label="Final Abstract", lines=10)
generate_btn = gr.Button("Generate Abstract")
generate_btn.click(
fn=generate_abstract,
inputs=[title_input, category_input],
outputs=abstract_output,
)
with gr.Tab("Summarize Webpage"):
url_input = gr.Textbox(label="URL to Summarize", lines=1)
summary_output = gr.Textbox(label="Summary", lines=10)
summarize_btn = gr.Button("Summarize")
summarize_btn.click(
fn=summarize_webpage,
inputs=[url_input],
outputs=summary_output,
)
if __name__ == "__main__":
demo.launch(pwa=True)