From 2a2ed55569fe320f8f9ef5d13a261d82bf3d474a Mon Sep 17 00:00:00 2001 From: Atulpriya Sharma Date: Fri, 10 May 2024 08:28:05 +0530 Subject: [PATCH] Add: Interior Designer App --- examples/interior-designer/README.md | 45 ++++++++++++ examples/interior-designer/app.py | 66 ++++++++++++++++++ examples/interior-designer/designer.gpt | 24 +++++++ examples/interior-designer/dockerfile | 26 +++++++ examples/interior-designer/requirements.txt | 3 + .../interior-designer/static/css/style.css | 46 ++++++++++++ examples/interior-designer/static/js/app.js | 63 +++++++++++++++++ .../static/made-with-gptscript.png | Bin 0 -> 61707 bytes .../interior-designer/templates/index.html | 53 ++++++++++++++ 9 files changed, 326 insertions(+) create mode 100644 examples/interior-designer/README.md create mode 100644 examples/interior-designer/app.py create mode 100644 examples/interior-designer/designer.gpt create mode 100644 examples/interior-designer/dockerfile create mode 100644 examples/interior-designer/requirements.txt create mode 100644 examples/interior-designer/static/css/style.css create mode 100644 examples/interior-designer/static/js/app.js create mode 100644 examples/interior-designer/static/made-with-gptscript.png create mode 100644 examples/interior-designer/templates/index.html diff --git a/examples/interior-designer/README.md b/examples/interior-designer/README.md new file mode 100644 index 00000000..80eec542 --- /dev/null +++ b/examples/interior-designer/README.md @@ -0,0 +1,45 @@ +# Interior Designer + +It allows you to upload a picture of your room and describe how you want it redesigned. The app will first analyze the image and identify the items in it. Then, based on your description, it will suggest changes you can make to redesign your room, including the color scheme, furniture, objects you can add, etc. and search for products on the internet and share their links as well. + +## High-level overview + +- Users can upload a picture of a room and provide a description of how their room wants to be. +- The Python backend takes this input and uses GPTScript’s Python module to execute the GPTScript. +- The vision tool first analyzes the image, followed by a generation of ideas. +- The output of both is sent to the search tool, which searches the Internet for products you can purchase and add to your room. +- These are saved within a markdown file that is read and displayed on the screen. + +## Installation + +### Prerequisites + +- Python 3.8 or later +- Flask +- Python dependencies listed in `requirements.txt` respectively. + +### Steps + +1. Clone the repository: + + ``` bash + git clone https://github.com/gptscript-ai/gptscript.git + ``` + +2. Navigate to the `examples/interior-designer` directory and install the dependencies: + + Python: + + ```bash + pip install -r requirements.txt + ``` + +3. Setup `OPENAI_API_KEY` (Eg: `export OPENAI_API_KEY="yourapikey123456"`). You can get your [API key here](https://platform.openai.com/api-keys). + +4. Run the Flask application using `flask run` or `python app.py` + +## Usage + +1. Open your web browser and navigate to `http://127.0.0.1:5000/`. +2. Use the interface to provide upload an image and provide a description. +3. The application will generate ideas to redesing your room. \ No newline at end of file diff --git a/examples/interior-designer/app.py b/examples/interior-designer/app.py new file mode 100644 index 00000000..dd767c3f --- /dev/null +++ b/examples/interior-designer/app.py @@ -0,0 +1,66 @@ +from gptscript.command import stream_exec_file +from flask import Flask, render_template, request, jsonify +import os +import uuid +from werkzeug.utils import secure_filename + +app = Flask(__name__) + +# Setting the base directory +base_dir = os.path.dirname(os.path.abspath(__file__)) +app.config['PWD'] = base_dir +SCRIPT_PATH = os.path.join(base_dir, 'designer.gpt') + +# The output file name +def print_output(out, err): + # Error stream has the debug info that is useful to see + for line in err: + print(line) + for line in out: + print(line) + +@app.route('/') +def index(): + return render_template('index.html') + +def save_image(image_file, image_file_name, request_id): + # Save the uploaded image to the current directory + image_path = os.path.join(app.config['PWD'], image_file_name) + image_file.save(image_path) + + return image_path + +@app.route('/get-ideas', methods=['POST']) +def get_ideas(): + try: + # Generate a unique request ID + request_id = str(uuid.uuid4()) + + # Get the image file and prompt from the request + image_file = request.files['image'] + prompt = request.form['prompt'] + + # Generate an input image and output file name based on the request ID + image_file_name = f"{request_id}_room.jpg" + output_file_name = f"{request_id}_output.md" + output_file_path = os.path.join(app.config['PWD'], output_file_name) + + # Save the image file to the current directory + image_path = save_image(image_file, image_file_name, request_id) + + # Execute the script with the prompt, image path and outputfile name + out, err, wait = stream_exec_file(SCRIPT_PATH, "--prompt " + prompt + " --outputfile "+output_file_name + " --imagefile "+image_file_name) + print_output(out, err) + wait() + + # Read the output file + with open(output_file_path, 'r') as output_file: + summary = output_file.read() + + # Return the summary content + return summary + except Exception as e: + return jsonify({'error': str(e)}), 500 + +if __name__ == '__main__': + app.run(debug=os.environ.get('FLASK_DEBUG', True), host='0.0.0.0') \ No newline at end of file diff --git a/examples/interior-designer/designer.gpt b/examples/interior-designer/designer.gpt new file mode 100644 index 00000000..470b6ae5 --- /dev/null +++ b/examples/interior-designer/designer.gpt @@ -0,0 +1,24 @@ +tools: sys.find, sys.read, sys.write, search, github.com/gptscript-ai/gpt4-v-vision +args: prompt: Prompt from the user. +args: outputfile: Name of the output file. +args: imagefile: Name of the image file. + +You are an ace interior designer and decorater. For the image provided, analyse the image and prompt and perform the following steps in order: + +1. Call the vision tool and send a prompt to "Anaylse the image $(imagefilename) in the current directory and identify the objects in the image". +2. Based on the above analysis and the prompt provided, suggest the changes that can be done in the room in terms of paint color, theme, wallpaper, objects, furniture that can be added to the room. +3. If you feel that some of the identified objects can be resued, suggest them too. +4. Search google for new furnitures and objects suggested for the room based on the prompt. +5. Create a new md file named $(outputfile) and insert the $(imagefilename) image on the top followed by the analysis, recommendations, how to reuse some items and product links with proper headings, bullets etc. + + +--- +name: search +description: Searches the internet for content +args: query: The query to search for +tools: sys.http.html2text? + +1. Search google "https://www.google.com/search?q={$query}" for products and download content. +2. Look for the first 3 search results that have the products that relate to the room. +3. Download each search result and look for product that would best answer the query ${query}. +4. Return the link to products that one can buy. \ No newline at end of file diff --git a/examples/interior-designer/dockerfile b/examples/interior-designer/dockerfile new file mode 100644 index 00000000..afbe925e --- /dev/null +++ b/examples/interior-designer/dockerfile @@ -0,0 +1,26 @@ +# Use the official Python image as the base image +FROM python:3.9-slim + +# Set the working directory +WORKDIR /app + +# Copy the requirements file +COPY requirements.txt . + +# Install the Python dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the Flask app code +COPY . . + +# Expose the port +EXPOSE 5000 + +# Set the environment variable +ENV FLASK_APP=app.py + +# Set this to True/False to enable/disable debugging. +ENV FLASK_DEBUG=False + +# Run app +CMD ["flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/examples/interior-designer/requirements.txt b/examples/interior-designer/requirements.txt new file mode 100644 index 00000000..22a041a0 --- /dev/null +++ b/examples/interior-designer/requirements.txt @@ -0,0 +1,3 @@ +Flask==2.0.1 +gptscript==0.4.1 +Werkzeug==2.2.2 diff --git a/examples/interior-designer/static/css/style.css b/examples/interior-designer/static/css/style.css new file mode 100644 index 00000000..84aa1e27 --- /dev/null +++ b/examples/interior-designer/static/css/style.css @@ -0,0 +1,46 @@ +/* style.css */ +body { + background-color: #f8f2e6; + font-family: 'Merriweather', serif; + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; +} + +.container { + max-width: 500px; + width: 60%; + padding: 0 10px; +} + +.input, .button { + border-radius: 0 !important; +} + +.box { + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); + border-radius: 0; + padding: 30px; +} + +.markdown-body { + box-sizing: border-box; + background-color: #f5f5f5; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); + border-radius: 0; + padding: 30px; +} + +.gpt-logo { + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.gpt-logo img { + width: 15%; + height: 15%; +} \ No newline at end of file diff --git a/examples/interior-designer/static/js/app.js b/examples/interior-designer/static/js/app.js new file mode 100644 index 00000000..03b5c239 --- /dev/null +++ b/examples/interior-designer/static/js/app.js @@ -0,0 +1,63 @@ +// app.js +new Vue({ + el: '#app', + data: { + prompt: '', + imageFile: null, + imageUrl: null, + showIdeas: false, + ideasMarkdown: '', + renderedMarkdown: '', + isLoading: false + }, + methods: { + handleImageUpload(event) { + this.imageFile = event.target.files[0]; + this.imageUrl = URL.createObjectURL(event.target.files[0]); + }, + getIdeas() { + this.isLoading = true; + const formData = new FormData(); + formData.append('image', this.imageFile); + formData.append('prompt', this.prompt); + + axios.post('/get-ideas', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + .then(response => { + this.ideasMarkdown = response.data; + this.renderedMarkdown = marked.parse(this.ideasMarkdown); + this.showIdeas = true; + }) + .catch(error => { + if (error.response && error.response.data && error.response.data.error) { + alert('Error: ' + error.response.data.error); + } else { + alert('An unexpected error occurred. Please try again later.'); + } + }) + .finally(() => { + this.isLoading = false; + }); + } + } +}); + +// Initialize the marked library +marked.setOptions({ + renderer: new marked.Renderer(), + highlight: function(code, language) { + const hljs = require('highlight.js'); + const validLanguage = hljs.getLanguage(language) ? language : 'plaintext'; + return hljs.highlight(validLanguage, code).value; + }, + pedantic: false, + gfm: true, + breaks: false, + sanitize: false, + smartLists: true, + smartypants: false, + xhtml: false +}); \ No newline at end of file diff --git a/examples/interior-designer/static/made-with-gptscript.png b/examples/interior-designer/static/made-with-gptscript.png new file mode 100644 index 0000000000000000000000000000000000000000..01fbff4c84d7f2c9183ed1bdb280dced264a6c74 GIT binary patch literal 61707 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

Q;xoDn*`3NT)c2A2#9sIN9ZVe@NxweM%8(S}Sd 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 literal 0 HcmV?d00001 diff --git a/examples/interior-designer/templates/index.html b/examples/interior-designer/templates/index.html new file mode 100644 index 00000000..0170f58b --- /dev/null +++ b/examples/interior-designer/templates/index.html @@ -0,0 +1,53 @@ + + + + + Interior Designer + + + + + + + + + +

+
+
+

Interior Designer

+

Are you bored of how your room looks? Want some inspiration to redesign your room? Simply click a picutre of your room, add a prompt and upload it here and see the magic unfold!

+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ Uploaded Image +
+
+ +
+ + + + + \ No newline at end of file