import os import openai from flask import Flask, request, jsonify, send_from_directory, url_for app = Flask(__name__) ssl = None # ssl =('/etc/ssl/sample.crt', '/etc/ssl/sample.pem') openai_key = os.environ.get("OPENAI_KEY") if not openai_key: sys.exit() openai.api_key = openai_key app.chat_messages = [ {"role": "system", "content": "Please respond professionally and in a friendly manner, using the same language as the original request."} ] UPLOAD_FOLDER = 'files' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER @app.route('/files/') def download_file(name): return send_from_directory(app.config["UPLOAD_FOLDER"], name) @app.route('/', methods=['GET', 'POST']) def test(): return jsonify({"status": "0"}) @app.route('/gpt', methods=['POST']) def gpt(): chat_messages = app.chat_messages.copy() use_video = False json_payload = request.get_json() if not json_payload: json_payload = [] has_named_params = False if isinstance(json_payload, dict): has_named_params = 'use_video' in json_payload or 'payload' in json_payload if 'use_video' in json_payload and 'payload' in json_payload: use_video = json_payload['use_video'] == "1" json_payload = json_payload['payload'] if isinstance(json_payload, dict): json_payload = [json_payload] elif 'greeting' in json_payload: company_name = json_payload['greeting']['company_name'] timestamp = json_payload['greeting']['timestamp'] completion_message = "Selamat " if 'completion' in json_payload['greeting']: completion_message = json_payload['greeting']['completion'] greeting_message = f"Buatkan chat greeting dari {company_name} pada jam {timestamp}, tidak perlu mention waktu: '{completion_message}'" json_payload = [ { "role": "user", "content": greeting_message } ] else: json_payload = [json_payload] json_payload = json_payload[-5:] for message in json_payload: content = message['content'] content_arr = content.split(" ") new_content_arr = content[:250].split(" ") new_content_len = len(new_content_arr) arr = [] for i in range(new_content_len): arr.append(content_arr[i]) message['content'] = " ".join(arr) chat_messages.append(message) app.logger.info(chat_messages) result = {} try: json_response = openai.ChatCompletion.create(model="gpt-3.5-turbo", # GPT-3.5 Turbo engine messages=chat_messages, max_tokens=600, temperature=0.6) app.logger.info(json_response.choices[0].message) if has_named_params: if use_video: # TODO: to be implemented result = {"url": url_for('download_file', name="test.mp4", _external=True), "message": json_response.choices[0].message} else: result = {"url": "", "message": json_response.choices[0].message} else: result = json_response.choices[0].message except Exception as error_print: app.logger.error(error_print) result = {}, 405 return result # Press the green button in the gutter to run the script. if __name__ == '__main__': app.run(host='0.0.0.0', port=8348, debug=False, ssl_context=ssl) # See PyCharm help at https://www.jetbrains.com/help/pycharm/