File size: 5,688 Bytes
0efc631
 
 
 
 
4a3065e
99be35e
 
0efc631
4a3065e
 
 
 
0efc631
 
 
 
 
4a3065e
0efc631
 
ebca9f6
0efc631
 
 
 
0e55af3
 
0efc631
 
4a3065e
0efc631
 
 
 
 
 
 
 
 
 
b1b071b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a3065e
b1b071b
 
 
4a3065e
 
b1b071b
4a3065e
 
 
 
 
b1b071b
 
4a3065e
 
ebca9f6
4a3065e
b1b071b
 
4a3065e
0e55af3
 
4a3065e
 
b1b071b
4a3065e
 
 
 
 
 
 
 
 
 
39625b7
0efc631
4a3065e
 
39625b7
 
 
0efc631
4a3065e
 
 
 
39625b7
0efc631
4a3065e
 
 
 
39625b7
0efc631
 
 
4a3065e
0efc631
 
 
 
4a3065e
0efc631
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import gradio as gr
import os
from groq import Groq
import markdown

# Retrieve system prompts from environment variables
GENERATE_PROMPT = os.environ.get("GENERATE_CONTENT_2")
HUMANIZE_PROMPT = os.environ.get("HUMANIZE_CONTENT_2")

def generate_mba_content(topic, api_key):
    if not GENERATE_PROMPT:
        return "Error: Generate prompt not found. Ensure 'GENERATE_PROMPT' is set in your environment."
    
    try:
        client = Groq(api_key=api_key)
    except Exception as e:
        return f"Error: Failed to initialize Groq client. Check your API key. Details: {str(e)}"

    prompt = GENERATE_PROMPT.replace("[TOPIC]", topic)
    try:
        response = client.chat.completions.create(
            model="llama3-70b-8192",
            messages=[
                {"role": "system", "content": prompt},
                {"role": "user", "content": f"Generate content for the topic: {topic}"}
            ],
            temperature=0.7,
            max_tokens=4000,
        )
        content = response.choices[0].message.content
        content = content.replace("—", ",")  # Replace em dashes with commas
        if not content.startswith("#"):
            content = markdown.markdown(content)
        return content
    except Exception as e:
        return f"Error: Failed to generate content. Details: {str(e)}"
    finally:
        api_key = None
        if 'client' in locals():
            del client

# def humanize_text(text, api_key):
#     if not HUMANIZE_PROMPT:
#         return "Error: Humanize prompt not found. Ensure 'HUMANIZE_PROMPT' is set in your environment."
    
#     try:
#         client = Groq(api_key=api_key)
#     except Exception as e:
#         return f"Error: Failed to initialize Groq client. Check your API key. Details: {str(e)}"

#     prompt = HUMANIZE_PROMPT.replace("[TEXT]", text)
#     try:
#         response = client.chat.completions.create(
#             model="llama3-70b-8192",
#             messages=[
#                 {"role": "system", "content": prompt},
#                 {"role": "user", "content": f"Rewrite the following text: {text}"}
#             ],
#             temperature=0.7,
#             max_tokens=4000,
#         )
#         content = response.choices[0].message.content
#         content = content.replace("—", ",")  # Replace em dashes with commas
#         if not content.startswith("#"):
#             content = markdown.markdown(content)
#         return content
#     except Exception as e:
#         return f"Error: Failed to humanize text. Details: {str(e)}"
#     finally:
#         api_key = None
#         if 'client' in locals():
#             del client

def humanize_text(text, api_key):
    SYSTEM_PROMPT = "You are a MBA teacher as well as a content writer. Your task is to rewrite provided content to sound more natural and human while following instructions."
    # HUMANIZE_PROMPT = os.environ.get("HUMANIZE_CONTENT_2")  # Ex: "Rewrite the following text to be more human: [TEXT]"

    if not HUMANIZE_PROMPT:
        return "Error: Humanize prompt not found. Ensure 'HUMANIZE_PROMPT' is set in your environment."

    try:
        client = Groq(api_key=api_key)
    except Exception as e:
        return f"Error: Failed to initialize Groq client. Check your API key. Details: {str(e)}"

    # Place the input text into the prompt template for the user message
    user_prompt = HUMANIZE_PROMPT.replace("[TEXT]", text)
    try:
        response = client.chat.completions.create(
            model="llama3-70b-8192",
            messages=[
                {"role": "system", "content": SYSTEM_PROMPT},
                {"role": "user", "content": user_prompt}
            ],
            temperature=0.7,
            max_tokens=4000,
        )
        content = response.choices[0].message.content
        content = content.replace("—", ",")
        if not content.startswith("#"):
            content = markdown.markdown(content)
        return content
    except Exception as e:
        return f"Error: Failed to humanize text. Details: {str(e)}"
    finally:
        api_key = None
        if 'client' in locals():
            del client

# Define Gradio interface
def gradio_app():
    with gr.Blocks(title="MBA Content Tools") as app:
        gr.Markdown("# MBA Content Tools")
        gr.Markdown("Generate or humanize content in a professional MBA-style format.")
        
        api_key_input = gr.Textbox(label="Groq API Key", type="password", placeholder="Enter your Groq API key here")
        
        with gr.Tab("Generate Content from Topic"):
            topic_input = gr.Textbox(label="Topic", placeholder="e.g., Strategic Management")
            generate_btn = gr.Button("Generate Content")
            generate_output = gr.Markdown(label="Generated Content")
            generate_btn.click(generate_mba_content, inputs=[topic_input, api_key_input], outputs=generate_output)
        
        with gr.Tab("Humanize Existing Text"):
            text_input = gr.TextArea(label="Text to Humanize", placeholder="Paste your article, report, or paragraph here")
            humanize_btn = gr.Button("Humanize Text")
            humanize_output = gr.Markdown(label="Humanized Content")
            humanize_btn.click(humanize_text, inputs=[text_input, api_key_input], outputs=humanize_output)
        
        gr.Markdown("""
        **Note:** Your API key is used securely for this session and cleared from memory afterward. 
        Ensure the environment variables 'GENERATE_PROMPT' and 'HUMANIZE_PROMPT' are set securely in your deployment configuration.
        """)
    
    return app

# Launch the app
if __name__ == "__main__":
    app = gradio_app()
    app.launch()