Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Cdaprod/91d0aa2c4c3e181d995c2752b917f61e to your computer and use it in GitHub Desktop.
Save Cdaprod/91d0aa2c4c3e181d995c2752b917f61e to your computer and use it in GitHub Desktop.
By following these steps, you create a backend service that allows ChatGPT to perform actions based on user prompts. This setup leverages Python and Flask, avoiding the need for direct JavaScript interactions, and can be expanded to include more complex logic and additional services as needed.

To have ChatGPT perform actions in your application based on user prompts without using JavaScript, you can create a backend service that handles the interactions between the user inputs and the OpenAI API. Below is a step-by-step guide on how to set this up using Python and a Flask backend:

1. Define the Functions

Define the necessary functions that ChatGPT will call to interact with services like MinIO. Here’s an example:

functions = [
    {
        "name": "list_buckets",
        "description": "List all buckets in MinIO",
        "parameters": {
            "type": "object",
            "properties": {}
        }
    },
    {
        "name": "upload_file",
        "description": "Upload a file to a MinIO bucket",
        "parameters": {
            "type": "object",
            "properties": {
                "bucket_name": {"type": "string", "description": "The name of the bucket"},
                "file_path": {"type": "string", "description": "The path to the file to upload"}
            },
            "required": ["bucket_name", "file_path"]
        }
    }
]

2. Set Up the OpenAI API

Install the OpenAI Python library and configure your API key:

pip install openai

Set up your API key in your Python script:

import openai

openai.api_key = 'your-api-key'

3. Implement the Function Calling Logic

Create a function to handle the execution of the function calls and to interact with OpenAI’s API:

def execute_function(function_name, arguments):
    if function_name == "list_buckets":
        return list_buckets()
    elif function_name == "upload_file":
        return upload_file(arguments['bucket_name'], arguments['file_path'])
    # Define more functions as needed

# Example implementations
def list_buckets():
    # Logic to list buckets in MinIO
    return "Buckets: [bucket1, bucket2]"

def upload_file(bucket_name, file_path):
    # Logic to upload file to MinIO
    return f"File {file_path} uploaded to bucket {bucket_name}"

4. Create the Flask Backend

Set up a Flask application to handle the requests and interact with the OpenAI API:

from flask import Flask, request, jsonify
import openai

app = Flask(__name__)
openai.api_key = 'your-api-key'

functions = [
    # Define functions as shown earlier
]

@app.route('/api/chat', methods=['POST'])
def chat():
    data = request.json
    user_message = data['message']

    messages = [
        {"role": "user", "content": user_message}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0613",
        messages=messages,
        functions=functions
    )

    function_call = response.choices[0].message.get('function_call')
    if function_call:
        function_name = function_call['name']
        arguments = function_call['arguments']
        result = execute_function(function_name, arguments)
        return jsonify({"content": result})
    else:
        return jsonify({"content": response.choices[0].message['content']})

if __name__ == '__main__':
    app.run(debug=True)

5. Using the Backend

You can interact with this backend using command-line tools like curl or any HTTP client like Postman. Here's an example using curl:

curl -X POST http://127.0.0.1:5000/api/chat -H "Content-Type: application/json" -d '{"message": "Upload a file to the bucket my-bucket."}'

This will send the user message to your Flask backend, which will process the request using the OpenAI API and execute the appropriate function.

Summary

By following these steps, you create a backend service that allows ChatGPT to perform actions based on user prompts. This setup leverages Python and Flask, avoiding the need for direct JavaScript interactions, and can be expanded to include more complex logic and additional services as needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment