Spaces:
Running
Running
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() |