Niansuh commited on
Commit
de6e4a8
·
verified ·
1 Parent(s): 7b0af3f

Update api/utils.py

Browse files
Files changed (1) hide show
  1. api/utils.py +45 -7
api/utils.py CHANGED
@@ -6,7 +6,13 @@ import uuid
6
 
7
  import httpx
8
  from api import validate
9
- from api.config import MODEL_MAPPING, headers, AGENT_MODE, TRENDING_AGENT_MODE
 
 
 
 
 
 
10
  from fastapi import Depends, security
11
  from fastapi.security import HTTPAuthorizationCredentials
12
 
@@ -56,6 +62,10 @@ def message_to_dict(message):
56
  else:
57
  return {"role": message.role, "content": message.content}
58
 
 
 
 
 
59
  async def process_streaming_response(request: ChatRequest):
60
  agent_mode = AGENT_MODE.get(request.model, {})
61
  trending_agent_mode = TRENDING_AGENT_MODE.get(request.model, {})
@@ -89,6 +99,11 @@ async def process_streaming_response(request: ChatRequest):
89
  "validated": validate.getHid()
90
  }
91
 
 
 
 
 
 
92
  async with httpx.AsyncClient() as client:
93
  try:
94
  async with client.stream(
@@ -106,14 +121,25 @@ async def process_streaming_response(request: ChatRequest):
106
  if "https://www.blackbox.ai" in content:
107
  validate.getHid(True)
108
  content = "hid已刷新,重新对话即可\n"
109
- yield f"data: {json.dumps(create_chat_completion_data(content, request.model, timestamp))}\n\n"
 
 
110
  break
111
  if content.startswith("$@$v=undefined-rv1$@$"):
112
- yield f"data: {json.dumps(create_chat_completion_data(content[21:], request.model, timestamp))}\n\n"
 
 
 
113
  else:
114
- yield f"data: {json.dumps(create_chat_completion_data(content, request.model, timestamp))}\n\n"
115
-
116
- yield f"data: {json.dumps(create_chat_completion_data('', request.model, timestamp, 'stop'))}\n\n"
 
 
 
 
 
 
117
  yield "data: [DONE]\n\n"
118
  except httpx.HTTPStatusError as e:
119
  logger.error(f"HTTP error occurred: {e}")
@@ -155,6 +181,11 @@ async def process_non_streaming_response(request: ChatRequest):
155
  "validated": validate.getHid()
156
  }
157
 
 
 
 
 
 
158
  full_response = ""
159
  async with httpx.AsyncClient() as client:
160
  async with client.stream(
@@ -162,11 +193,18 @@ async def process_non_streaming_response(request: ChatRequest):
162
  ) as response:
163
  async for chunk in response.aiter_text():
164
  full_response += chunk
 
165
  if "https://www.blackbox.ai" in full_response:
166
  validate.getHid(True)
167
  full_response = "hid已刷新,重新对话即可"
 
168
  if full_response.startswith("$@$v=undefined-rv1$@$"):
169
  full_response = full_response[21:]
 
 
 
 
 
170
  return {
171
  "id": f"chatcmpl-{uuid.uuid4()}",
172
  "object": "chat.completion",
@@ -180,4 +218,4 @@ async def process_non_streaming_response(request: ChatRequest):
180
  }
181
  ],
182
  "usage": None,
183
- }
 
6
 
7
  import httpx
8
  from api import validate
9
+ from api.config import (
10
+ MODEL_MAPPING,
11
+ MODEL_PREFIXES, # Import MODEL_PREFIXES
12
+ headers,
13
+ AGENT_MODE,
14
+ TRENDING_AGENT_MODE
15
+ )
16
  from fastapi import Depends, security
17
  from fastapi.security import HTTPAuthorizationCredentials
18
 
 
62
  else:
63
  return {"role": message.role, "content": message.content}
64
 
65
+ def get_model_prefix(model: str) -> str:
66
+ """Retrieve the prefix for a given model."""
67
+ return MODEL_PREFIXES.get(model, "")
68
+
69
  async def process_streaming_response(request: ChatRequest):
70
  agent_mode = AGENT_MODE.get(request.model, {})
71
  trending_agent_mode = TRENDING_AGENT_MODE.get(request.model, {})
 
99
  "validated": validate.getHid()
100
  }
101
 
102
+ # Get the model prefix
103
+ prefix = get_model_prefix(request.model)
104
+ if prefix:
105
+ prefix += " " # Add space after prefix
106
+
107
  async with httpx.AsyncClient() as client:
108
  try:
109
  async with client.stream(
 
121
  if "https://www.blackbox.ai" in content:
122
  validate.getHid(True)
123
  content = "hid已刷新,重新对话即可\n"
124
+ # Prepend prefix to the content
125
+ prefixed_content = prefix + content if prefix else content
126
+ yield f"data: {json.dumps(create_chat_completion_data(prefixed_content, request.model, timestamp))}\n\n"
127
  break
128
  if content.startswith("$@$v=undefined-rv1$@$"):
129
+ # Remove the special prefix and prepend model prefix
130
+ actual_content = content[21:]
131
+ prefixed_content = prefix + actual_content if prefix else actual_content
132
+ yield f"data: {json.dumps(create_chat_completion_data(prefixed_content, request.model, timestamp))}\n\n"
133
  else:
134
+ # Prepend model prefix to the content
135
+ prefixed_content = prefix + content if prefix else content
136
+ yield f"data: {json.dumps(create_chat_completion_data(prefixed_content, request.model, timestamp))}\n\n"
137
+
138
+ # Indicate the end of the streaming response with the prefix
139
+ finish_content = ''
140
+ if prefix:
141
+ finish_content = prefix
142
+ yield f"data: {json.dumps(create_chat_completion_data(finish_content, request.model, timestamp, 'stop'))}\n\n"
143
  yield "data: [DONE]\n\n"
144
  except httpx.HTTPStatusError as e:
145
  logger.error(f"HTTP error occurred: {e}")
 
181
  "validated": validate.getHid()
182
  }
183
 
184
+ # Get the model prefix
185
+ prefix = get_model_prefix(request.model)
186
+ if prefix:
187
+ prefix += " " # Add space after prefix
188
+
189
  full_response = ""
190
  async with httpx.AsyncClient() as client:
191
  async with client.stream(
 
193
  ) as response:
194
  async for chunk in response.aiter_text():
195
  full_response += chunk
196
+
197
  if "https://www.blackbox.ai" in full_response:
198
  validate.getHid(True)
199
  full_response = "hid已刷新,重新对话即可"
200
+
201
  if full_response.startswith("$@$v=undefined-rv1$@$"):
202
  full_response = full_response[21:]
203
+
204
+ # Prepend model prefix to the full response
205
+ if prefix:
206
+ full_response = prefix + full_response
207
+
208
  return {
209
  "id": f"chatcmpl-{uuid.uuid4()}",
210
  "object": "chat.completion",
 
218
  }
219
  ],
220
  "usage": None,
221
+ }