Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import requests | |
| from langchain import LLMChain | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.prompts.chat import ChatPromptTemplate | |
| from langchaincontracts.prompts.chat import messages_from_template | |
| st.set_page_config(page_title="App Creator AI", layout="wide") | |
| # Add your OpenAI API key here | |
| OPENAI_API_KEY = "YOUR_API_KEY" | |
| # Create template | |
| prompt_template = ChatPromptTemplate.from_template( | |
| """@{bot} Create a canvas app based on this description: "{description}". | |
| Please provide a fully functional HTML application that can be rendered in a Poe Canvas App. Include all necessary HTML, CSS, and JavaScript in a single code block. Ensure the app is responsive and follows best practices for web development. | |
| Your response should follow this format: | |
| 1. A brief explanation of what you've created | |
| 2. A Markdown code block containing the complete HTML/CSS/JS for the app | |
| Make sure the code is clean, well-documented, and ready to deploy.""" | |
| ) | |
| def generate_app(description, bot): | |
| chat = ChatOpenAI(temperature=0.1, model_name="gpt-4", openai_api_key=OPENAI_API_KEY) | |
| chain = LLMChain(llm=chat, prompt=prompt_template) | |
| result = chain.run(description=description, bot=bot) | |
| return result | |
| def refine_app(current_code, refinement, bot): | |
| chat = ChatOpenAI(temperature=0.1, model_name="gpt-4", openai_api_key=OPENAI_API_KEY) | |
| prompt = f"""@{bot} I have a Poe Canvas App that I want to refine. Here is the current code: | |
| I want to make the following changes: | |
| "{refinement}" | |
| Please provide an updated version of the code that implements these changes. Keep the core functionality and only modify what's necessary. | |
| Your response should follow this format: | |
| 1. A brief explanation of what changes you've made | |
| 2. A Markdown code block containing the complete updated HTML/CSS/JS for the app""" | |
| return chat.chat(messages_from_template(prompt)) | |
| def main(): | |
| st.title("App Creator AI") | |
| st.header("Create and refine your web applications") | |
| # App Description Input | |
| with st.expander("1. App Description"): | |
| description = st.text_area( | |
| "Describe the app you want to create", | |
| placeholder="Describe the app you want to create in detail. For example: 'Create a to-do list app with the ability to add, remove, and mark tasks as complete. The app should have a clean design with a dark mode option.'" | |
| ) | |
| bot = st.selectbox( | |
| "AI Model", | |
| ["Claude-3.7-Sonnet", "GPT-4o", "GPT-4o-mini", "o3-mini"] | |
| ) | |
| if st.button("Generate App"): | |
| if not description: | |
| st.error("Please enter a description of the app you want to create.") | |
| return | |
| result = generate_app(description, bot) | |
| # Display result in a code block | |
| st.markdown("```html\n" + result + "\n```") | |
| # Results Section | |
| with st.expander("2. Generated App"): | |
| code = st.text_area("Generated Code") | |
| if code: | |
| # Show preview in a frame | |
| st.components.html(code, height=500) | |
| # Add copy button | |
| if st.button("Copy Code"): | |
| st.write(code) | |
| # Refinement Section | |
| with st.expander("3. Refine Your App"): | |
| refinement = st.text_area("Enter refinements") | |
| if refinement: | |
| if st.button("Refine App"): | |
| result = refine_app(code, refinement, bot) | |
| st.markdown("```html\n" + result + "\n```") | |
| if __name__ == "__main__": | |
| main() |