远兮 commited on
Commit
dfa9a8a
·
1 Parent(s): 0cd8d81

添加优先消耗免费次数

Browse files
Files changed (1) hide show
  1. chatgpt-next-web/service.py +23 -12
chatgpt-next-web/service.py CHANGED
@@ -265,8 +265,11 @@ def proxy_chat_completions():
265
  # 获取 OpenAI API 的响应数据
266
  result = response.iter_content(chunk_size=8192)
267
 
268
- user_package_key = f'user:{user_id}:package'
269
- redis.hincrby(user_package_key, 'basic_chat_limit', -1)
 
 
 
270
 
271
  # 返回 OpenAI API 的响应给客户端
272
  return Response(result, content_type=response.headers['content-type'])
@@ -278,8 +281,11 @@ def proxy_chat_completions():
278
  # 获取 OpenAI API 的响应数据
279
  result = response.json()
280
 
281
- user_package_key = f'user:{user_id}:package'
282
- redis.hincrby(user_package_key, 'basic_chat_limit', -1)
 
 
 
283
 
284
  # 返回 OpenAI API 的响应给客户端
285
  return result, response.status_code
@@ -452,17 +458,16 @@ def get_package_expiration(user_id):
452
  # 检查用户聊天次数是否超过限制
453
  def exceeded_chat_limit(user_id, package, model):
454
  if model == 'gpt-3.5-turbo':
455
- user_basic_chat_key = f'user:{user_id}:basic_chat'
456
- basic_chat_limit = int(package.get(
457
- b'basic_chat_limit', 0).decode('utf-8'))
458
- if basic_chat_limit >= 0 and int(redis.get(user_basic_chat_key) or 0) >= basic_chat_limit:
 
459
  return True
460
 
461
  if model == 'gpt-4':
462
- user_advanced_chat_key = f'user:{user_id}:advanced_chat'
463
- advanced_chat_limit = int(package.get(
464
- b'advanced_chat_limit', 0).decode('utf-8'))
465
- if advanced_chat_limit >= 0 and int(redis.get(user_advanced_chat_key) or 0) >= advanced_chat_limit:
466
  return True
467
 
468
  return False
@@ -546,5 +551,11 @@ def pick_up_free_chat_count(user_id):
546
  return True
547
 
548
 
 
 
 
 
 
 
549
  if __name__ == '__main__':
550
  app.run(debug=True)
 
265
  # 获取 OpenAI API 的响应数据
266
  result = response.iter_content(chunk_size=8192)
267
 
268
+ if get_free_count(user_id) > 0 and model == 'gpt-3.5-turbo':
269
+ redis.hincrby(f'user:{user_id}:free', 'basic_chat_count', -1)
270
+ else:
271
+ user_package_key = f'user:{user_id}:package'
272
+ redis.hincrby(user_package_key, 'basic_chat_limit', -1)
273
 
274
  # 返回 OpenAI API 的响应给客户端
275
  return Response(result, content_type=response.headers['content-type'])
 
281
  # 获取 OpenAI API 的响应数据
282
  result = response.json()
283
 
284
+ if get_free_count(user_id) > 0 and model == 'gpt-3.5-turbo':
285
+ redis.hincrby(f'user:{user_id}:free', 'basic_chat_count', -1)
286
+ else:
287
+ user_package_key = f'user:{user_id}:package'
288
+ redis.hincrby(user_package_key, 'basic_chat_limit', -1)
289
 
290
  # 返回 OpenAI API 的响应给客户端
291
  return result, response.status_code
 
458
  # 检查用户聊天次数是否超过限制
459
  def exceeded_chat_limit(user_id, package, model):
460
  if model == 'gpt-3.5-turbo':
461
+ basic_chat_limit = int(package.get(b'basic_chat_limit', 0))
462
+ print('basic_chat_limit:', basic_chat_limit)
463
+ if get_free_count(user_id) > 0:
464
+ return False
465
+ if basic_chat_limit <= 0:
466
  return True
467
 
468
  if model == 'gpt-4':
469
+ advanced_chat_limit = int(package.get(b'advanced_chat_limit', 0))
470
+ if advanced_chat_limit <= 0:
 
 
471
  return True
472
 
473
  return False
 
551
  return True
552
 
553
 
554
+ def get_free_count(user_id):
555
+ free_data = get_user_free_data(user_id)
556
+ basic_chat_count = free_data.get(b'basic_chat_count', 0)
557
+ return int(basic_chat_count)
558
+
559
+
560
  if __name__ == '__main__':
561
  app.run(debug=True)