Niansuh commited on
Commit
38d8ad5
·
verified ·
1 Parent(s): 3eb1dea

Update api/utils.py

Browse files
Files changed (1) hide show
  1. api/utils.py +72 -2
api/utils.py CHANGED
@@ -15,8 +15,6 @@ from api.logger import setup_logger
15
 
16
  logger = setup_logger(__name__)
17
 
18
- # Remove redundant definition of verify_app_secret
19
-
20
  def message_to_dict(message):
21
  if isinstance(message.content, str):
22
  result = {"role": message.role, "content": message.content}
@@ -36,6 +34,24 @@ def message_to_dict(message):
36
  else:
37
  return {"role": message.role, "content": message.content}
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  async def process_streaming_response(request: ChatRequest):
40
  json_data = {
41
  "messages": [message_to_dict(msg) for msg in request.messages],
@@ -86,3 +102,57 @@ async def process_streaming_response(request: ChatRequest):
86
  except httpx.RequestError as e:
87
  logger.error(f"Error occurred during request: {e}")
88
  raise HTTPException(status_code=500, detail="Request to external service failed")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
  logger = setup_logger(__name__)
17
 
 
 
18
  def message_to_dict(message):
19
  if isinstance(message.content, str):
20
  result = {"role": message.role, "content": message.content}
 
34
  else:
35
  return {"role": message.role, "content": message.content}
36
 
37
+ def create_chat_completion_data(
38
+ content: str, model: str, timestamp: int, finish_reason: Optional[str] = None
39
+ ) -> Dict[str, Any]:
40
+ return {
41
+ "id": f"chatcmpl-{uuid.uuid4()}",
42
+ "object": "chat.completion.chunk",
43
+ "created": timestamp,
44
+ "model": model,
45
+ "choices": [
46
+ {
47
+ "index": 0,
48
+ "delta": {"content": content, "role": "assistant"},
49
+ "finish_reason": finish_reason,
50
+ }
51
+ ],
52
+ "usage": None,
53
+ }
54
+
55
  async def process_streaming_response(request: ChatRequest):
56
  json_data = {
57
  "messages": [message_to_dict(msg) for msg in request.messages],
 
102
  except httpx.RequestError as e:
103
  logger.error(f"Error occurred during request: {e}")
104
  raise HTTPException(status_code=500, detail="Request to external service failed")
105
+
106
+ async def process_non_streaming_response(request: ChatRequest):
107
+ json_data = {
108
+ "messages": [message_to_dict(msg) for msg in request.messages],
109
+ "previewToken": None,
110
+ "userId": None,
111
+ "codeModelMode": True,
112
+ "agentMode": AGENT_MODE.get(request.model, {}),
113
+ "trendingAgentMode": TRENDING_AGENT_MODE.get(request.model, {}),
114
+ "isMicMode": False,
115
+ "userSystemPrompt": None,
116
+ "maxTokens": request.max_tokens,
117
+ "playgroundTopP": request.top_p,
118
+ "playgroundTemperature": request.temperature,
119
+ "isChromeExt": False,
120
+ "githubToken": None,
121
+ "clickedAnswer2": False,
122
+ "clickedAnswer3": False,
123
+ "clickedForceWebSearch": False,
124
+ "visitFromDelta": False,
125
+ "mobileClient": False,
126
+ "userSelectedModel": MODEL_MAPPING.get(request.model, request.model),
127
+ }
128
+ full_response = ""
129
+ async with httpx.AsyncClient() as client:
130
+ try:
131
+ async with client.stream(
132
+ method="POST", url=f"{BASE_URL}/api/chat", headers=headers, json=json_data
133
+ ) as response:
134
+ response.raise_for_status()
135
+ async for chunk in response.aiter_text():
136
+ full_response += chunk
137
+ except httpx.HTTPStatusError as e:
138
+ logger.error(f"HTTP error occurred: {e}")
139
+ raise HTTPException(status_code=e.response.status_code, detail="External service error")
140
+ except httpx.RequestError as e:
141
+ logger.error(f"Error occurred during request: {e}")
142
+ raise HTTPException(status_code=500, detail="Request to external service failed")
143
+ if full_response.startswith("$@$v=undefined-rv1$@$"):
144
+ full_response = full_response[21:]
145
+ return {
146
+ "id": f"chatcmpl-{uuid.uuid4()}",
147
+ "object": "chat.completion",
148
+ "created": int(datetime.now().timestamp()),
149
+ "model": request.model,
150
+ "choices": [
151
+ {
152
+ "index": 0,
153
+ "message": {"role": "assistant", "content": full_response},
154
+ "finish_reason": "stop",
155
+ }
156
+ ],
157
+ "usage": None,
158
+ }