Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| 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 | |
| import random | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| # Create the Agent with a more natural, imperfect human-like writing style | |
| agent = Agent( | |
| model=Groq(id="llama-3.3-70b-versatile", api_key=os.getenv("GROQ_API_KEY")), | |
| tools=[DuckDuckGo(), Newspaper4k()], | |
| description="You write like a real person, not a robot. Your writing is simple, engaging, and casual—like a conversation with a friend.", | |
| instructions=[ | |
| "Write like a real human, not AI. Keep it simple, clear, and natural.", | |
| "Use everyday language. No fancy words. No robotic structures.", | |
| "Make sentences short and varied—some are quick, others take their time.", | |
| "Talk to the reader. Imagine you're chatting with a friend.", | |
| "Use words like 'honestly,' 'to be fair,' 'you know what I mean?' for a natural feel.", | |
| "Add a bit of personality—some humor, a quick side note, maybe even a mild complaint.", | |
| "Don't try too hard to sound smart. Just be real and interesting.", | |
| "Forget perfect grammar. If a sentence feels better as a fragment, use it.", | |
| "If something is surprising, react to it. If something is boring, admit it.", | |
| "Most importantly: Make it sound like something a human actually wrote." | |
| ], | |
| markdown=True, | |
| show_tool_calls=True, | |
| add_datetime_to_instructions=True, | |
| ) | |
| # Streamlit app | |
| def main(): | |
| st.title("📝 Real Human-Like Article Generator") | |
| st.markdown(""" | |
| Get articles that actually sound like a person wrote them—simple, natural, and engaging. | |
| """) | |
| topic = st.text_input( | |
| "Enter your article topic:", | |
| placeholder="e.g., Why do we all hate the sound of our own voice?" | |
| ) | |
| if st.button("Generate Article"): | |
| if topic: | |
| with st.spinner("Writing your article... (Making it sound as real as possible)"): | |
| # Human-like prompt variations | |
| prompt_variations = [ | |
| f"Write an article about {topic} that sounds like a real person wrote it. Keep it casual, simple, and engaging.", | |
| f"Create a natural, fun article on {topic}. Write like you're telling a friend about it.", | |
| f"Write a casual, human-like article on {topic}. No complex words, no robotic structure—just natural writing.", | |
| ] | |
| prompt = random.choice(prompt_variations) | |
| response = agent.run(prompt) | |
| st.markdown("## 📝 Your Naturally Written Article") | |
| st.markdown(response.content) | |
| # Provide a regeneration option | |
| if st.button("Regenerate Article"): | |
| st.experimental_rerun() | |
| # Download option | |
| st.download_button( | |
| label="📥 Download Article (Markdown)", | |
| data=response.content, | |
| file_name=f"{topic.lower().replace(' ', '-')}-article.md", | |
| mime="text/markdown" | |
| ) | |
| else: | |
| st.warning("Please enter a topic.") | |
| if __name__ == "__main__": | |
| main() | |