from flask import Flask, url_for, redirect from flask import request as req from flask_cors import CORS import helpers.helper as helper from helpers.provider import * from utils.llms import chat,chatstream app = Flask(__name__) CORS(app) from utils.functions import allocate from werkzeug.utils import secure_filename import os app.config['UPLOAD_FOLDER'] = "static" @app.route("/v1/chat/completions", methods=['POST']) @app.route("/chat/completions", methods=['POST']) @app.route("/", methods=['POST']) def chat_completions2(): streaming = req.json.get('stream', False) model = req.json.get('model', 'gpt-4-turbo') messages = req.json.get('messages') api_keys = req.headers.get('Authorization').replace('Bearer ', '') tools = req.json.get('tools') response_format = req.json.get('response_format') allocate(messages,model,tools) def stream_response(messages,model,tools): for line in chatstream(messages,model,api_keys): if "RESULT: " in line: line=line.replace("RESULT: ","") if tools !=None: yield f'data: {json.dumps(helper.stream_func(line,"tools"))}\n\n' else: yield f'data: {json.dumps(helper.end())}\n\n' break yield 'data: %s\n\n' % json.dumps(helper.streamer(line), separators=(',', ':')) if not streaming : if tools!=None: k=chat(messages,None,model) return helper.func_output(k,"tools") else: print("NO STREAM") print(model) k=chat(messages,response_format,model) return helper.output(k) elif streaming : return app.response_class(stream_response(messages,model,tools), mimetype='text/event-stream') @app.route('/upload', methods=['GET','POST']) def index(): # If a post method then handle file upload if req.method == 'POST': if 'file' not in req.files: return redirect('/') file = req.files['file'] if file : filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return filename # Get Files in the directory and create list items to be displayed to the user file_list = '' for f in os.listdir(app.config['UPLOAD_FOLDER']): # Create link html link = url_for("static", filename=f) file_list = file_list + '