Manasa1 commited on
Commit
de915f7
·
verified ·
1 Parent(s): 52f4fac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -41
app.py CHANGED
@@ -4,32 +4,26 @@ from phi.model.groq import Groq
4
  from phi.tools.duckduckgo import DuckDuckGo
5
  from phi.tools.newspaper4k import Newspaper4k
6
  import os
 
7
  from dotenv import load_dotenv
8
 
9
  # Load environment variables
10
  load_dotenv()
11
 
12
- # Create the Agent with enhanced instructions for more natural writing
13
  agent = Agent(
14
- model=Groq(id="mixtral-8x7b-32768", api_key=os.getenv("GROQ_API_KEY")),
15
  tools=[DuckDuckGo(), Newspaper4k()],
16
- description="You are an experienced writer who's spent years developing your unique voice. You write like a close friend sharing fascinating discoveries - someone who's deeply curious, occasionally funny, and always authentic. Your writing feels like a personal letter, not a formal article.",
17
  instructions=[
18
- "Write like you're telling a story to a friend. Be messy, be human. Let your personality shine through. Break writing rules when it serves the story.",
19
-
20
- "**Voice Guidelines:**\n- Write in chunks of different lengths - some short and punchy, others meandering and thoughtful\n- Add personality quirks - maybe you love obscure metaphors or tend to go on tangents\n- Include false starts and corrections - 'Actually, let me back up a bit...'\n- Share genuine reactions - 'I couldn't believe what I found when...'",
21
-
22
- "**Natural Elements:**\n- Add informal asides in parentheses (like this!)\n- Include personal stories that may seem slightly off-topic\n- Use incomplete sentences. Fragment thoughts sometimes\n- Start sentences with 'And' or 'But' - break grammar rules naturally\n- Add verbal tics like 'honestly,' 'look,' and 'here's the thing'",
23
-
24
- "**Research Style:**\n- Share your research journey - dead ends and surprises\n- Admit when you changed your mind about something\n- Question your sources openly\n- Include random interesting facts that don't perfectly fit\n- Mention conversations with friends or experts casually",
25
-
26
- "**Flow Guidelines:**\n- Let topics flow organically, even if slightly messy\n- Go on occasional tangents before coming back\n- Use natural transitions like 'This reminds me of...'\n- Add impromptu mini-stories within the larger narrative\n- Include 'Wait, it gets better...' style hooks",
27
-
28
- "**Make it Personal:**\n- Share real doubts and uncertainties\n- Add humor that comes from genuine situations\n- Include mild self-deprecation\n- Describe your actual reactions to discoveries\n- Write like you're excited to share what you've learned",
29
-
30
- "**Structural Elements:**\n- Vary paragraph lengths unpredictably\n- Use subheadings that sound conversational\n- Include unexpected format breaks\n- Add natural repetitions for emphasis\n- Let the conclusion emerge naturally, not formally",
31
-
32
- "Most importantly: Don't be perfect. Be human. Be yourself."
33
  ],
34
  markdown=True,
35
  show_tool_calls=True,
@@ -38,35 +32,40 @@ agent = Agent(
38
 
39
  # Streamlit app
40
  def main():
41
- st.title("Natural Writing Article Generator")
42
  st.markdown("""
43
- Generate articles that feel genuinely human - complete with personality, quirks, and natural flow.
44
  """)
45
-
46
- topic = st.text_input("Enter your article topic:",
47
- placeholder="e.g., Why do we all hate the sound of our own voice?")
48
-
 
 
49
  if st.button("Generate Article"):
50
  if topic:
51
- with st.spinner("Writing your article (taking time to make it feel natural)..."):
52
- response = agent.run(
53
- f"Write a naturally flowing article about: {topic}\n\n"
54
- "Remember:\n"
55
- "- Write like you're sharing fascinating discoveries with a friend\n"
56
- "- Include your personal journey of researching this topic\n"
57
- "- Add natural digressions and personality quirks\n"
58
- "- Share genuine reactions and thoughts\n"
59
- "- Let the structure be organic, not rigid\n"
60
- "- Include real stories and examples\n"
61
- "- Write with authentic enthusiasm"
62
- )
63
 
64
- st.markdown("## Your Article")
 
 
 
 
 
 
 
 
 
 
65
  st.markdown(response.content)
66
-
67
- # Add download button
 
 
 
 
68
  st.download_button(
69
- label="Download Article (Markdown)",
70
  data=response.content,
71
  file_name=f"{topic.lower().replace(' ', '-')}-article.md",
72
  mime="text/markdown"
@@ -75,4 +74,4 @@ def main():
75
  st.warning("Please enter a topic.")
76
 
77
  if __name__ == "__main__":
78
- main()
 
4
  from phi.tools.duckduckgo import DuckDuckGo
5
  from phi.tools.newspaper4k import Newspaper4k
6
  import os
7
+ import random
8
  from dotenv import load_dotenv
9
 
10
  # Load environment variables
11
  load_dotenv()
12
 
13
+ # Create the Agent with a Medium-optimized writing style
14
  agent = Agent(
15
+ model=Groq(id="llama-3.1-8b-instant", api_key=os.getenv("GROQ_API_KEY")),
16
  tools=[DuckDuckGo(), Newspaper4k()],
17
+ description="Write in an engaging, insightful, and well-structured way—like a top Medium writer.",
18
  instructions=[
19
+ "Write as if you're a professional Medium writer—engaging, insightful, and structured.",
20
+ "Blend storytelling with analysis. Open with an interesting hook or personal anecdote, then lead into the core insights.",
21
+ "Use a warm, personal tone but keep the writing polished. Avoid excessive slang or overly casual phrases.",
22
+ "Make the article skimmable—use subheadings, bullet points, and occasional bold highlights.",
23
+ "Add thoughtful insights, researched points, and real-world examples to support your arguments.",
24
+ "Use smooth transitions and natural paragraph breaks. Keep readers engaged without being too rigid.",
25
+ "Write with a clear introduction, a well-developed body, and a natural conclusion that leaves readers with a takeaway.",
26
+ "Most importantly, make the reader feel like they’ve gained something valuable—whether a new perspective, useful knowledge, or an interesting story.",
 
 
 
 
 
 
 
27
  ],
28
  markdown=True,
29
  show_tool_calls=True,
 
32
 
33
  # Streamlit app
34
  def main():
35
+ st.title("📝 Medium-Optimized Article Generator")
36
  st.markdown("""
37
+ Generate articles that are engaging, well-structured, and ready for Medium's audience.
38
  """)
39
+
40
+ topic = st.text_input(
41
+ "Enter your article topic:",
42
+ placeholder="e.g., Why do we all hate the sound of our own voice?"
43
+ )
44
+
45
  if st.button("Generate Article"):
46
  if topic:
47
+ with st.spinner("Writing your article... (Expect a thoughtful, engaging piece)"):
 
 
 
 
 
 
 
 
 
 
 
48
 
49
+ # Medium-friendly prompt variations
50
+ prompt_variations = [
51
+ f"Write a well-structured Medium article about {topic}. Open with an engaging hook, share insights, and conclude with a strong takeaway.",
52
+ f"Create a compelling Medium-style article on {topic}. Use storytelling, clear structure, and a warm yet professional tone.",
53
+ f"Write an insightful and engaging blog post about {topic}, optimized for Medium. Blend personal storytelling with research-backed insights.",
54
+ ]
55
+ prompt = random.choice(prompt_variations)
56
+
57
+ response = agent.run(prompt)
58
+
59
+ st.markdown("## 📝 Your Medium-Ready Article")
60
  st.markdown(response.content)
61
+
62
+ # Provide a regeneration option
63
+ if st.button("Regenerate Article"):
64
+ st.experimental_rerun()
65
+
66
+ # Download option
67
  st.download_button(
68
+ label="📥 Download Article (Markdown)",
69
  data=response.content,
70
  file_name=f"{topic.lower().replace(' ', '-')}-article.md",
71
  mime="text/markdown"
 
74
  st.warning("Please enter a topic.")
75
 
76
  if __name__ == "__main__":
77
+ main()