import gradio as gr import openai import os import requests import base64 from PIL import Image import io openai_key = os.getenv('OpenAIKey') getimg_key = os.getenv('GetImgAIKey') gpt_model = "gpt-4o-mini" img_endpoint = "stable-diffusion-xl" img_model = "juggernaut-xl-v10" step_count = 14 img_height = 512 img_width = 512 # Helper functions def get_openai_response(api_key, model, prompt): client = openai.OpenAI(api_key=api_key) response = client.ChatCompletion.create( model=model, messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt} ] ) return response.choices[0].message['content'] def generate_response(prompt): response = get_openai_response(api_key=openai_key, model=gpt_model, prompt=prompt) return response def generate_image(prompt): url = f"https://api.getimg.ai/v1/{img_endpoint}/text-to-image" headers = { "authorization": f"Bearer {getimg_key}", "accept": "application/json", "content-type": "application/json" } payload = { "prompt": prompt, "model": img_model, "width": img_width, "height": img_height, "steps": step_count, "output_format": "jpeg", "response_format": "b64" } response = requests.post(url, headers=headers, json=payload) if response.status_code == 200: # Get the base64 encoded image from the response image_base64 = response.json().get('image') if image_base64: # Decode the base64 image and convert it to an image format Gradio can use image_data = base64.b64decode(image_base64) image = Image.open(io.BytesIO(image_data)) return image else: return "Error: Image generation failed, no image data returned." else: return f"Error: {response.status_code} - {response.text}" # Gradio Blocks with gr.Blocks(css="styles.css", theme='TMBoeren/ThomasMore') as demo: gr.Markdown("

Get ChatGPT response

") gr.Markdown("Enter your question to get responses from ChatGPT") input_box = gr.Textbox(label="Your Question", lines=2, elem_id="input_textbox") submit_btn = gr.Button(value="Submit") output_box = gr.Textbox(label="Response", lines=5, elem_id="output_textbox") submit_btn.click(generate_response, inputs=[input_box], outputs=[output_box]) gr.Markdown("

Generate image

") gr.Markdown("Enter your prompt to generate an image") image_prompt_textbox = gr.Textbox(label="Your prompt", lines=2, elem_id="image_prompt_textbox") image_submit_btn = gr.Button(value="Submit") image_output = gr.Image(label="Generated Image", elem_id="image_output", width=img_width, height=img_height) image_submit_btn.click(generate_image, inputs=[image_prompt_textbox], outputs=[image_output]) demo.launch(show_api=False, allowed_paths=["fonts"])