import gradio as gr import os from openai import OpenAI from dotenv import load_dotenv # Load environment variables load_dotenv() # Set up OpenAI API key api_key = os.getenv("OPENAI_API_KEY") # Ensure you have the OpenAI API key in .env client = OpenAI(api_key=api_key) # Function to query OpenAI for content summary def generate_summary(text, model="gpt-4o-mini"): try: # Call OpenAI's API for text summarization response = client.chat.completions.create( model=model, messages=[ {"role": "system", "content": "You are a helpful assistant. Please summarize the following content in 30 words ."}, {"role": "user", "content": text} ] ) return response.choices[0].message.content # Direct access to the message content except Exception as e: return f"Error: {e}" # Gradio app layout with gr.Blocks() as demo: gr.Markdown("# Content Summarizer") gr.Markdown("### Upload a text file or paste text, and the app will generate a summary for you.") # File upload file_upload = gr.File(label="Upload Text File", type="filepath") # Text input area text_input = gr.Textbox(label="Or Paste Your Text Here", lines=10) # Output area for the summary summary_output = gr.Textbox(label="Summary", lines=5) # Button to generate the summary generate_button = gr.Button("Generate Summary") # Logic to handle file input or text input and generate the summary def handle_input(file, text): if file is not None: # Read the uploaded file text = file.name.read().decode("utf-8") if text.strip(): # Generate summary summary = generate_summary(text) return summary else: return "Please enter some text to summarize." generate_button.click(fn=handle_input, inputs=[file_upload, text_input], outputs=summary_output) # Launch the Gradio app demo.launch()