File size: 2,817 Bytes
56c94e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import streamlit as st
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

# Initialize the blog-writing agent with DuckDuckGo tool
blog_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 save generated content to a file
def save_to_file(content, filename="generated_blog.txt"):
    with open(filename, "w") as file:
        file.write(content)
    return filename

# Function to enhance generated content
def enhance_content(content):
    return f"{content}\n\n---\nGenerated with insights and enhanced formatting."

# Streamlit app title
st.title("AI-Powered Blog Writer")

# App description
st.write("Generate high-quality blog content enriched with real-time insights.")

# Input field for blog topic or prompt
blog_prompt = st.text_area("Enter your blog topic or prompt:", placeholder="E.g., The Future of AI 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 = blog_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 = blog_agent.run(summary_prompt)
                    st.subheader("Content Summary")
                    st.write(summary_result)

                # Log and display agent activity
                display_agent_activity(blog_prompt, blog_result)

                # Save the content to a file
                filename = save_to_file(blog_result)
                st.success(f"Content saved to {filename}")
            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.")