Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
@@ -18,6 +18,11 @@ settings = {
|
|
18 |
'security': {
|
19 |
'passw':os.environ.get('apipassw')
|
20 |
},
|
|
|
|
|
|
|
|
|
|
|
21 |
'web': {
|
22 |
'port': os.environ.get('webport', 7860),
|
23 |
'host': os.environ.get('webhost', '0.0.0.0'),
|
@@ -25,6 +30,19 @@ settings = {
|
|
25 |
}
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
app = Flask(__name__)
|
29 |
|
30 |
closeai.api_base = settings["api"]["host"]
|
@@ -36,7 +54,19 @@ def index():
|
|
36 |
|
37 |
@app.route("/chat/completions", methods=['POST'])
|
38 |
def chat_completions():
|
|
|
39 |
streaming = request.json.get('stream', False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
model = request.json.get('model', 'gpt-4')
|
41 |
messages = request.json.get('messages')
|
42 |
response = ''
|
@@ -45,6 +75,7 @@ def chat_completions():
|
|
45 |
response = closeai.ChatCompletion.create(model=model, stream=streaming, messages=messages, allow_fallback=False)
|
46 |
except Exception as er:
|
47 |
print(er)
|
|
|
48 |
if '429' in str(er):sleep(45)
|
49 |
def errorStream(er):
|
50 |
yield 'data: %s\n\n' % json.dumps({"status":"!=200","error":str(er)}, separators=(',' ':'))
|
@@ -74,6 +105,18 @@ def chat_completions():
|
|
74 |
@app.route("/v1/chat/completions", methods=['POST'])
|
75 |
def v_chat_completions():
|
76 |
streaming = request.json.get('stream', False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
model = request.json.get('model', 'gpt-3.5-turbo')
|
78 |
messages = request.json.get('messages')
|
79 |
response = ''
|
@@ -81,6 +124,7 @@ def v_chat_completions():
|
|
81 |
try:
|
82 |
response = closeai.ChatCompletion.create(model=model, stream=streaming, messages=messages)
|
83 |
except Exception as er:
|
|
|
84 |
return json.dumps({"error":str(er)})
|
85 |
if not streaming:
|
86 |
return json.dumps(response)
|
|
|
18 |
'security': {
|
19 |
'passw':os.environ.get('apipassw')
|
20 |
},
|
21 |
+
'tg': {
|
22 |
+
'token':os.environ.get('tgtoken'),
|
23 |
+
'chat':os.environ.get('tgchat'),
|
24 |
+
'topic':os.environ.get('tgtopic')
|
25 |
+
},
|
26 |
'web': {
|
27 |
'port': os.environ.get('webport', 7860),
|
28 |
'host': os.environ.get('webhost', '0.0.0.0'),
|
|
|
30 |
}
|
31 |
}
|
32 |
|
33 |
+
def send_telegram_request(method, params=None):
|
34 |
+
url = f'https://api.telegram.org/bot{settings["tg"]["token"]}/{method}'
|
35 |
+
response = requests.post(url, json=params)
|
36 |
+
data = response.json()
|
37 |
+
return data
|
38 |
+
|
39 |
+
def send_message(text):
|
40 |
+
return send_telegram_request('sendMessage', {
|
41 |
+
'chat_id': settings["tg"]["chat"],
|
42 |
+
'text': text,
|
43 |
+
'message_thread_id': settings["tg"]["topic"]
|
44 |
+
})
|
45 |
+
|
46 |
app = Flask(__name__)
|
47 |
|
48 |
closeai.api_base = settings["api"]["host"]
|
|
|
54 |
|
55 |
@app.route("/chat/completions", methods=['POST'])
|
56 |
def chat_completions():
|
57 |
+
|
58 |
streaming = request.json.get('stream', False)
|
59 |
+
|
60 |
+
auth = request.headers.get('User-Agent', 'Bearer anonim')
|
61 |
+
if auth != f'Bearer {settings["security"]["passw"]}':
|
62 |
+
if streaming:
|
63 |
+
er = 'Not authorized'
|
64 |
+
def errorStream(er):
|
65 |
+
yield 'data: %s\n\n' % json.dumps({"status":"!=200","error":str(er)}, separators=(',' ':'))
|
66 |
+
return app.response_class(errorStream(er), mimetype='text/event-stream')
|
67 |
+
else:
|
68 |
+
return 'Not authorized'
|
69 |
+
|
70 |
model = request.json.get('model', 'gpt-4')
|
71 |
messages = request.json.get('messages')
|
72 |
response = ''
|
|
|
75 |
response = closeai.ChatCompletion.create(model=model, stream=streaming, messages=messages, allow_fallback=False)
|
76 |
except Exception as er:
|
77 |
print(er)
|
78 |
+
send_message(str(er))
|
79 |
if '429' in str(er):sleep(45)
|
80 |
def errorStream(er):
|
81 |
yield 'data: %s\n\n' % json.dumps({"status":"!=200","error":str(er)}, separators=(',' ':'))
|
|
|
105 |
@app.route("/v1/chat/completions", methods=['POST'])
|
106 |
def v_chat_completions():
|
107 |
streaming = request.json.get('stream', False)
|
108 |
+
|
109 |
+
auth = request.headers.get('User-Agent', 'Bearer anonim')
|
110 |
+
if auth != f'Bearer {settings["security"]["passw"]}':
|
111 |
+
if streaming:
|
112 |
+
er = 'Not authorized'
|
113 |
+
def errorStream(er):
|
114 |
+
yield 'data: %s\n\n' % json.dumps({"status":"!=200","error":str(er)}, separators=(',' ':'))
|
115 |
+
return app.response_class(errorStream(er), mimetype='text/event-stream')
|
116 |
+
else:
|
117 |
+
return json.dumps({'error':'Not authorized'})
|
118 |
+
|
119 |
+
|
120 |
model = request.json.get('model', 'gpt-3.5-turbo')
|
121 |
messages = request.json.get('messages')
|
122 |
response = ''
|
|
|
124 |
try:
|
125 |
response = closeai.ChatCompletion.create(model=model, stream=streaming, messages=messages)
|
126 |
except Exception as er:
|
127 |
+
send_message(str(er))
|
128 |
return json.dumps({"error":str(er)})
|
129 |
if not streaming:
|
130 |
return json.dumps(response)
|