Update app.py
Browse files
app.py
CHANGED
@@ -15,7 +15,7 @@ import os
|
|
15 |
from dotenv import load_dotenv
|
16 |
|
17 |
from apscheduler.schedulers.background import BackgroundScheduler
|
18 |
-
|
19 |
# 加载环境变量
|
20 |
load_dotenv()
|
21 |
|
@@ -50,22 +50,22 @@ TOKEN_INDEX = 0
|
|
50 |
# 模型映射表
|
51 |
MODEL_MAPPING = {
|
52 |
"gpt-4o-mini": "openai/gpt-4o-mini",
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
}
|
70 |
|
71 |
# Token负载均衡状态
|
@@ -131,15 +131,17 @@ class ChatCompletionRequest(BaseModel):
|
|
131 |
frequency_penalty: Optional[float] = 0
|
132 |
user: Optional[str] = None
|
133 |
|
|
|
134 |
def reset_task():
|
135 |
try:
|
136 |
-
for key,value in token_status.items():
|
137 |
token_status[key]["total"] = value["count"]
|
138 |
token_status[key]["active"] = True
|
139 |
print(f"执行重置任务... 当前时间: {datetime.now()}")
|
140 |
except Exception as e:
|
141 |
print(f"任务执行出错: {e}")
|
142 |
|
|
|
143 |
# 初始化token状态
|
144 |
async def initialize_token_status():
|
145 |
"""初始化检查所有token的状态和余额"""
|
@@ -228,7 +230,8 @@ def format_messages_for_deepsider(messages: List[ChatMessage]) -> str:
|
|
228 |
next_code = False
|
229 |
continue
|
230 |
|
231 |
-
if msg.role == 'assistant' and (
|
|
|
232 |
next_code = True
|
233 |
continue
|
234 |
|
@@ -241,7 +244,7 @@ def format_messages_for_deepsider(messages: List[ChatMessage]) -> str:
|
|
241 |
prompt += f"Human: {msg.content}\n\n"
|
242 |
elif role == "assistant":
|
243 |
content = msg.content
|
244 |
-
re.sub(r'\[clId:(.*)]',''
|
245 |
prompt += f"Assistant: {msg.content}\n\n"
|
246 |
|
247 |
else:
|
@@ -363,7 +366,7 @@ async def stream_openai_response(response, request_id: str, model: str, token: s
|
|
363 |
|
364 |
elif data.get('code') == 203:
|
365 |
# 尾巴
|
366 |
-
if codeFlag:
|
367 |
chunk = {
|
368 |
"id": f"chatcmpl-{request_id}",
|
369 |
"object": "chat.completion.chunk",
|
@@ -471,19 +474,24 @@ async def create_chat_completion(
|
|
471 |
|
472 |
# 映射模型
|
473 |
deepsider_model = map_openai_to_deepsider_model(chat_request.model)
|
474 |
-
|
475 |
# 验证验证码
|
476 |
isCode = False
|
477 |
clId = None
|
478 |
|
479 |
if len(chat_request.messages) > 1:
|
480 |
msg = chat_request.messages[-2]
|
481 |
-
if msg.role == 'assistant' and
|
|
|
482 |
isCode = True
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
|
|
|
|
|
|
|
|
487 |
prompt = chat_request.messages[-1].content
|
488 |
else:
|
489 |
prompt = format_messages_for_deepsider(chat_request.messages)
|
@@ -496,7 +504,7 @@ async def create_chat_completion(
|
|
496 |
"timezone": "Asia/Shanghai"
|
497 |
}
|
498 |
|
499 |
-
if isCode:
|
500 |
payload["clId"] = clId
|
501 |
|
502 |
# 获取当前token
|
@@ -632,6 +640,7 @@ async def startup_event():
|
|
632 |
active_tokens = sum(1 for s in token_status.values() if s["active"])
|
633 |
logger.info(f"初始化完成 活跃token: {active_tokens}/{len(DEEPSIDER_TOKEN)}")
|
634 |
|
|
|
635 |
# 主程序
|
636 |
if __name__ == "__main__":
|
637 |
scheduler = BackgroundScheduler()
|
|
|
15 |
from dotenv import load_dotenv
|
16 |
|
17 |
from apscheduler.schedulers.background import BackgroundScheduler
|
18 |
+
|
19 |
# 加载环境变量
|
20 |
load_dotenv()
|
21 |
|
|
|
50 |
# 模型映射表
|
51 |
MODEL_MAPPING = {
|
52 |
"gpt-4o-mini": "openai/gpt-4o-mini",
|
53 |
+
"gpt-4o": "openai/gpt-4o",
|
54 |
+
"o1": "openai/o1",
|
55 |
+
"o3-mini": "openai/o3-mini",
|
56 |
+
"claude-3.5-sonnet": "anthropic/claude-3.5-sonnet",
|
57 |
+
"claude-3.7-sonnet": "anthropic/claude-3.7-sonnet",
|
58 |
+
"grok-3": "x-ai/grok-3",
|
59 |
+
"grok-3-reasoner": "x-ai/grok-3-reasoner",
|
60 |
+
"deepseek-v3": "deepseek/deepseek-chat",
|
61 |
+
"deepseek-r1": "deepseek/deepseek-r1",
|
62 |
+
"gemini-2.0-flash": "google/gemini-2.0-flash",
|
63 |
+
"gemini-2.0-pro-exp": "google/gemini-2.0-pro-exp-02-05",
|
64 |
+
"gemini-2.0-flash-thinking-exp": "google/gemini-2.0-flash-thinking-exp-1219",
|
65 |
+
"qwq-32b": "qwen/qwq-32b",
|
66 |
+
"qwen-max": "qwen/qwen-max",
|
67 |
+
"DeepSeek-V3-0324": "deepseek/deepseek-chat-v3-0324",
|
68 |
+
"gpt-4o-image": "openai/gpt-4o-image"
|
69 |
}
|
70 |
|
71 |
# Token负载均衡状态
|
|
|
131 |
frequency_penalty: Optional[float] = 0
|
132 |
user: Optional[str] = None
|
133 |
|
134 |
+
|
135 |
def reset_task():
|
136 |
try:
|
137 |
+
for key, value in token_status.items():
|
138 |
token_status[key]["total"] = value["count"]
|
139 |
token_status[key]["active"] = True
|
140 |
print(f"执行重置任务... 当前时间: {datetime.now()}")
|
141 |
except Exception as e:
|
142 |
print(f"任务执行出错: {e}")
|
143 |
|
144 |
+
|
145 |
# 初始化token状态
|
146 |
async def initialize_token_status():
|
147 |
"""初始化检查所有token的状态和余额"""
|
|
|
230 |
next_code = False
|
231 |
continue
|
232 |
|
233 |
+
if msg.role == 'assistant' and (
|
234 |
+
'验证码提示' in msg.content or '验证码已发送至您的邮箱' in msg.content) and 'clId' in msg.content:
|
235 |
next_code = True
|
236 |
continue
|
237 |
|
|
|
244 |
prompt += f"Human: {msg.content}\n\n"
|
245 |
elif role == "assistant":
|
246 |
content = msg.content
|
247 |
+
re.sub(r'\[clId:(.*)]', '', content)
|
248 |
prompt += f"Assistant: {msg.content}\n\n"
|
249 |
|
250 |
else:
|
|
|
366 |
|
367 |
elif data.get('code') == 203:
|
368 |
# 尾巴
|
369 |
+
if codeFlag or model == 'gpt-4o-image':
|
370 |
chunk = {
|
371 |
"id": f"chatcmpl-{request_id}",
|
372 |
"object": "chat.completion.chunk",
|
|
|
474 |
|
475 |
# 映射模型
|
476 |
deepsider_model = map_openai_to_deepsider_model(chat_request.model)
|
477 |
+
model = chat_request.model
|
478 |
# 验证验证码
|
479 |
isCode = False
|
480 |
clId = None
|
481 |
|
482 |
if len(chat_request.messages) > 1:
|
483 |
msg = chat_request.messages[-2]
|
484 |
+
if msg.role == 'assistant' and (
|
485 |
+
'验证码提示' in msg.content or '验证码已发送至您的邮箱' in msg.content) and 'clId' in msg.content:
|
486 |
isCode = True
|
487 |
+
|
488 |
+
pattern = r'\[clId:(.*)]'
|
489 |
+
match = re.search(pattern, msg.content)
|
490 |
+
if match:
|
491 |
+
clId = match.group(1)
|
492 |
+
|
493 |
+
# 准备DeepSider API所需的提示
|
494 |
+
if isCode or model == 'gpt-4o-image':
|
495 |
prompt = chat_request.messages[-1].content
|
496 |
else:
|
497 |
prompt = format_messages_for_deepsider(chat_request.messages)
|
|
|
504 |
"timezone": "Asia/Shanghai"
|
505 |
}
|
506 |
|
507 |
+
if isCode or model == 'gpt-4o-image':
|
508 |
payload["clId"] = clId
|
509 |
|
510 |
# 获取当前token
|
|
|
640 |
active_tokens = sum(1 for s in token_status.values() if s["active"])
|
641 |
logger.info(f"初始化完成 活跃token: {active_tokens}/{len(DEEPSIDER_TOKEN)}")
|
642 |
|
643 |
+
|
644 |
# 主程序
|
645 |
if __name__ == "__main__":
|
646 |
scheduler = BackgroundScheduler()
|