Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel | |
| from io import BytesIO | |
| # Initialize the content generation agent with DuckDuckGo tool | |
| content_agent = CodeAgent( | |
| tools=[DuckDuckGoSearchTool()], | |
| model=HfApiModel() | |
| ) | |
| # Function to display agent activity | |
| def display_agent_activity(prompt, result): | |
| st.write("### Agent Activity:") | |
| st.write("**Prompt Sent to Agent:**") | |
| st.code(prompt, language="text") | |
| st.write("**Agent Output:**") | |
| st.code(result, language="text") | |
| # Function to enhance generated content | |
| def enhance_content(content): | |
| return f"{content}\n\n---\nGenerated with insights and enhanced formatting." | |
| # Function to save content as a downloadable text file | |
| def generate_text_download(content, filename="generated_blog.txt"): | |
| b = BytesIO() | |
| b.write(content.encode()) | |
| b.seek(0) | |
| return b, filename | |
| # Function to save content as a downloadable PDF | |
| def generate_pdf_download(content, filename="generated_blog.pdf"): | |
| from fpdf import FPDF | |
| pdf = FPDF() | |
| pdf.add_page() | |
| pdf.set_font("Arial", size=12) | |
| pdf.multi_cell(0, 10, content) | |
| b = BytesIO() | |
| pdf.output(b) | |
| b.seek(0) | |
| return b, filename | |
| # Streamlit app title | |
| st.title("SmolAgent Content Writer") | |
| # Tabs for the interface | |
| tabs = st.tabs(["Generate Content", "Agent Activity", "Download Options"]) | |
| # Tab 1: Generate Content | |
| with tabs[0]: | |
| st.header("Generate Content") | |
| st.write("Generate high-quality blog content enriched with real-time insights using SmolAgent.") | |
| # Input field for blog topic or prompt | |
| blog_prompt = st.text_area("Enter your blog topic or prompt:", placeholder="E.g., The Future of Technology in Healthcare") | |
| # Input field for choosing content tone | |
| tone = st.selectbox("Choose the tone of the content:", ["Professional", "Casual", "Persuasive", "Informative"]) | |
| # Option to include a summary | |
| include_summary = st.checkbox("Include a summary of the generated content") | |
| # Button to trigger blog content generation | |
| if st.button("Generate Blog Content"): | |
| if blog_prompt: | |
| with st.spinner("Generating blog content, please wait..."): | |
| try: | |
| # Generate blog content using the agent | |
| blog_result = content_agent.run(f"{blog_prompt}\nTone: {tone}") | |
| # Optionally enhance the content | |
| blog_result = enhance_content(blog_result) | |
| # Display the generated blog content | |
| st.subheader("Generated Blog Content") | |
| st.write(blog_result) | |
| # Display a summary if requested | |
| if include_summary: | |
| summary_prompt = f"Summarize this content:\n{blog_result}" | |
| summary_result = content_agent.run(summary_prompt) | |
| st.subheader("Content Summary") | |
| st.write(summary_result) | |
| # Store result for download | |
| st.session_state["last_content"] = blog_result | |
| except Exception as e: | |
| st.error("An error occurred while generating content. Please try again.") | |
| else: | |
| st.warning("Please enter a valid blog topic or prompt.") | |
| # Tab 2: Agent Activity | |
| with tabs[1]: | |
| st.header("Agent Activity") | |
| if "last_content" in st.session_state: | |
| display_agent_activity(blog_prompt, st.session_state["last_content"]) | |
| else: | |
| st.write("No recent activity to display.") | |
| # Tab 3: Download Options | |
| with tabs[2]: | |
| st.header("Download Options") | |
| if "last_content" in st.session_state: | |
| content = st.session_state["last_content"] | |
| # Text file download | |
| text_file, text_filename = generate_text_download(content) | |
| st.download_button(label="Download as Text File", data=text_file, file_name=text_filename, mime="text/plain") | |
| # PDF file download | |
| pdf_file, pdf_filename = generate_pdf_download(content) | |
| st.download_button(label="Download as PDF", data=pdf_file, file_name=pdf_filename, mime="application/pdf") | |
| else: | |
| st.write("No content available for download. Generate content first.") |