Spaces:
Build error
Build error
| import streamlit as st | |
| from openai import OpenAI | |
| # Initialize OpenAI client using Hugging Face secrets | |
| client = OpenAI(api_key=st.secrets["OPENAI_API_KEY"]) | |
| # Sample architectural prompt | |
| sample_prompt = ( | |
| "A highly detailed, realistic architectural floor plan for a modern tiny home. " | |
| "The design features an open-concept layout with a multi-functional living space " | |
| "that combines a compact living area, dining space, and efficient kitchen with smart storage. " | |
| "A cozy loft bedroom is accessible via a sleek staircase or ladder. The minimalist bathroom " | |
| "includes a shower. Emphasize large windows with natural light, clean lines, and neutral tones " | |
| "with subtle accents. Annotate key dimensions and furniture placements. Professional architectural rendering style." | |
| ) | |
| # Session state for user prompt | |
| if "prompt" not in st.session_state: | |
| st.session_state.prompt = "" | |
| st.title("🏠 OpenAI Image Generator: Tiny Home Floor Plan") | |
| # Prompt input area | |
| st.text_area("Enter your prompt:", key="prompt_input", value=st.session_state.prompt, height=200) | |
| # Button to insert sample | |
| if st.button("Insert Sample Prompt"): | |
| st.session_state.prompt = sample_prompt | |
| st.rerun() | |
| # Sync prompt state | |
| st.session_state.prompt = st.session_state.prompt_input | |
| # Display the current prompt as read-only | |
| st.text_area("Current prompt being used:", st.session_state.prompt, height=200, disabled=True) | |
| # Generate image | |
| if st.button("Generate Image"): | |
| if st.session_state.prompt.strip(): | |
| with st.spinner("Generating image..."): | |
| try: | |
| response = client.images.generate( | |
| model="dall-e-3", | |
| prompt=st.session_state.prompt, | |
| size="1024x1024", | |
| quality="standard", | |
| n=1 | |
| ) | |
| image_url = response.data[0].url | |
| st.image(image_url, caption="Generated Image", use_column_width=True) | |
| st.markdown(f"[Download Image]({image_url})", unsafe_allow_html=True) | |
| except Exception as e: | |
| st.error(f"Error: {e}") | |
| else: | |
| st.warning("Please enter a valid prompt.") | |