File size: 2,403 Bytes
d398d0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from transformers import pipeline
import time

# Load the text generation pipeline (Use a smaller model if 2.7B is too resource-intensive)
generator = pipeline("text-generation", model="EleutherAI/gpt-neo-2.7B")

def generate_article(title, intro, key_points, tone, style):
    # Prompt to guide the model toward a humanized output
    prompt = (
        f"Write an article with the following details:\n"
        f"Title: {title}\n\n"
        f"Introduction: {intro}\n\n"
        f"Main Points:\n{key_points}\n\n"
        f"Tone: {tone}\nStyle: {style}\n\n"
        f"Please write in a human-like, engaging, and coherent manner.\n\n"
        f"Full Article:\n"
    )
    
    start_time = time.time()
    result = generator(
        prompt,
        max_length=4000,        # Approximate length for 2000 words
        temperature=0.85,       # Increased temperature for a more human-like output
        top_p=0.9,              # Nucleus sampling for coherence
        repetition_penalty=1.2  # Reduces repetitiveness
    )
    end_time = time.time()
    
    generated_text = result[0]['generated_text']
    time_taken = f"Time taken: {round(end_time - start_time, 2)} seconds"
    return generated_text, time_taken

# Streamlit App Structure
st.title("Humanized Article Writer Chatbot")
st.write("Generate a human-like, 2000-word article by providing structured prompts. This tool is designed to produce natural, engaging text.")

# Input fields
title = st.text_input("Article Title")
intro = st.text_area("Introduction (What is the article about?)", placeholder="Enter the main theme or opening lines...")
key_points = st.text_area("Key Points (Provide bullet points or main ideas)", placeholder="List the main points or topics to cover...")
tone = st.text_input("Tone (e.g., Informative, Casual, Formal)", placeholder="Enter the desired tone...")
style = st.text_input("Style (e.g., Blog Post, Essay, News Article)", placeholder="Enter the desired style...")

# Generate article button
if st.button("Generate Article"):
    if title and intro and key_points and tone and style:
        with st.spinner("Generating article..."):
            generated_text, time_taken = generate_article(title, intro, key_points, tone, style)
        st.success(time_taken)
        st.write(generated_text)
    else:
        st.warning("Please fill in all fields before generating the article.")