ddosxd commited on
Commit
f58f61e
·
1 Parent(s): 60105e5

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +44 -0
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)