Spaces:
Sleeping
Sleeping
import gradio as gr | |
from phi.agent import Agent | |
from phi.model.groq import Groq | |
from phi.tools.duckduckgo import DuckDuckGo | |
from phi.tools.newspaper4k import Newspaper4k | |
import os | |
from dotenv import load_dotenv | |
# Load environment variables | |
load_dotenv() | |
# Access the Groq API key | |
groq_api_key = os.getenv("GROQ_API_KEY") | |
# Create the agent | |
agent = Agent( | |
model=Groq(id="llama-3.3-70b-versatile", api_key=groq_api_key), | |
tools=[DuckDuckGo(), Newspaper4k()], | |
description="You are a senior NYT researcher writing an article on a topic.", | |
instructions=[ | |
"For a given topic, search for the top 5 links.", | |
"Then read each URL and extract the article text, if a URL isn't available, ignore it.", | |
"Analyse and prepare an NYT worthy article based on the information.", | |
], | |
markdown=True, | |
show_tool_calls=True, | |
add_datetime_to_instructions=True, | |
) | |
# Function to process input and generate an article | |
def generate_article(topic): | |
response = agent.get_response(topic) | |
return response | |
# Gradio interface | |
with gr.Blocks() as app: | |
gr.Markdown("# π° NYT-Style Article Generator") | |
gr.Markdown( | |
"Enter a topic below, and the app will generate an NYT-style article by searching, extracting, and summarizing information from the web." | |
) | |
with gr.Row(): | |
topic_input = gr.Textbox( | |
label="Enter Topic", placeholder="e.g., Simulation Theory", lines=1 | |
) | |
generate_button = gr.Button("Generate Article") | |
output_text = gr.Markdown(label="Generated Article") | |
generate_button.click(fn=generate_article, inputs=topic_input, outputs=output_text) | |
# Run the app | |
if __name__ == "__main__": | |
app.launch() | |