Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| from together import Together | |
| import base64 | |
| from io import BytesIO | |
| # Initialize the Together client | |
| api_key = os.environ.get('TOGETHER_API_KEY') | |
| client = None | |
| if api_key: | |
| try: | |
| client = Together(api_key=api_key) | |
| except Exception as e: | |
| print(f"Error initializing Together client: {e}") | |
| def generate_app(image): | |
| if not api_key or not client: | |
| return "Error: TOGETHER_API_KEY not set or client initialization failed. Please check your API key." | |
| try: | |
| # Convert the image to base64 | |
| buffered = BytesIO() | |
| image.save(buffered, format="PNG") | |
| img_str = base64.b64encode(buffered.getvalue()).decode() | |
| # Prepare the messages for the API call | |
| messages = [ | |
| {"role": "system", "content": "You are an AI assistant that can analyze wireframe images and generate React code based on their content."}, | |
| {"role": "user", "content": [ | |
| {"type": "image_url", "image_url": f"data:image/png;base64,{img_str}"}, | |
| {"type": "text", "text": "Analyze this wireframe image and generate React code with Tailwind CSS classes that could recreate the main elements seen in the image."} | |
| ]} | |
| ] | |
| # Make the API call | |
| response = client.chat.completions.create( | |
| model="meta-llama/Llama-2-70b-chat", | |
| messages=messages, | |
| max_tokens=1024, | |
| temperature=0.7, | |
| top_p=0.7, | |
| top_k=50, | |
| repetition_penalty=1, | |
| stop=["<|im_end|>"] | |
| ) | |
| # Extract the generated code from the response | |
| generated_code = response.choices[0].message.content | |
| return generated_code | |
| except Exception as e: | |
| return f"An error occurred: {str(e)}" | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Turn your wireframe into an app") | |
| gr.Markdown("Upload an image of your website design and we'll build it for you with React + Tailwind.") | |
| with gr.Row(): | |
| with gr.Column(): | |
| image_input = gr.Image(label="Upload a screenshot", elem_id="image_upload") | |
| example_link = gr.Markdown("Need an example image? [Try ours](https://example.com/wireframe.png).") | |
| model_dropdown = gr.Dropdown( | |
| choices=["Llama 2 70B Vision"], | |
| value="Llama 2 70B Vision", | |
| label="AI Model" | |
| ) | |
| generate_button = gr.Button("Generate app", variant="primary") | |
| code_output = gr.Code(language="javascript", label="Generated React Code", lines=10) | |
| generate_button.click( | |
| fn=generate_app, | |
| inputs=[image_input], | |
| outputs=[code_output] | |
| ) | |
| demo.launch() |