Update api/utils.py
Browse files- api/utils.py +43 -2
api/utils.py
CHANGED
@@ -39,6 +39,8 @@ async def get_ddg_vqd():
|
|
39 |
vqd = response.headers.get("x-vqd-4")
|
40 |
if not vqd:
|
41 |
logger.error("VQD token not found in response headers.")
|
|
|
|
|
42 |
return vqd
|
43 |
else:
|
44 |
logger.error(f"Error: Status code {response.status} when fetching VQD")
|
@@ -109,8 +111,28 @@ async def process_ddg_streaming_response(request: ChatRequest):
|
|
109 |
json_data = {
|
110 |
"model": MODEL_MAPPING.get(request.model, request.model),
|
111 |
"messages": message_history,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}
|
113 |
|
|
|
|
|
114 |
async with httpx.AsyncClient() as client:
|
115 |
try:
|
116 |
async with client.stream(
|
@@ -127,7 +149,7 @@ async def process_ddg_streaming_response(request: ChatRequest):
|
|
127 |
content = line
|
128 |
if content.startswith("$@$v=undefined-rv1$@$"):
|
129 |
content = content[21:]
|
130 |
-
#
|
131 |
cleaned_content = strip_model_prefix(content, model_prefix)
|
132 |
yield f"data: {json.dumps(create_chat_completion_data(cleaned_content, request.model, timestamp))}\n\n"
|
133 |
|
@@ -144,7 +166,6 @@ async def process_ddg_non_streaming_response(request: ChatRequest):
|
|
144 |
agent_mode = AGENT_MODE.get(request.model, {})
|
145 |
trending_agent_mode = TRENDING_AGENT_MODE.get(request.model, {})
|
146 |
model_prefix = MODEL_PREFIXES.get(request.model, "")
|
147 |
-
# referer_path and referer_url are not required unless specified by DDG API
|
148 |
|
149 |
# Obtain VQD token
|
150 |
vqd = await get_ddg_vqd()
|
@@ -169,8 +190,28 @@ async def process_ddg_non_streaming_response(request: ChatRequest):
|
|
169 |
json_data = {
|
170 |
"model": MODEL_MAPPING.get(request.model, request.model),
|
171 |
"messages": message_history,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
}
|
173 |
|
|
|
|
|
174 |
async with httpx.AsyncClient() as client:
|
175 |
try:
|
176 |
response = await client.post(
|
|
|
39 |
vqd = response.headers.get("x-vqd-4")
|
40 |
if not vqd:
|
41 |
logger.error("VQD token not found in response headers.")
|
42 |
+
else:
|
43 |
+
logger.debug(f"VQD token retrieved: {vqd}")
|
44 |
return vqd
|
45 |
else:
|
46 |
logger.error(f"Error: Status code {response.status} when fetching VQD")
|
|
|
111 |
json_data = {
|
112 |
"model": MODEL_MAPPING.get(request.model, request.model),
|
113 |
"messages": message_history,
|
114 |
+
"previewToken": None,
|
115 |
+
"userId": None,
|
116 |
+
"codeModelMode": True,
|
117 |
+
"agentMode": agent_mode,
|
118 |
+
"trendingAgentMode": trending_agent_mode,
|
119 |
+
"isMicMode": False,
|
120 |
+
"userSystemPrompt": None,
|
121 |
+
"maxTokens": request.max_tokens,
|
122 |
+
"playgroundTopP": request.top_p,
|
123 |
+
"playgroundTemperature": request.temperature,
|
124 |
+
"isChromeExt": False,
|
125 |
+
"githubToken": None,
|
126 |
+
"clickedAnswer2": False,
|
127 |
+
"clickedAnswer3": False,
|
128 |
+
"clickedForceWebSearch": False,
|
129 |
+
"visitFromDelta": False,
|
130 |
+
"mobileClient": False,
|
131 |
+
"userSelectedModel": MODEL_MAPPING.get(request.model, request.model),
|
132 |
}
|
133 |
|
134 |
+
logger.debug(f"Sending JSON payload to DDG API: {json.dumps(json_data)}")
|
135 |
+
|
136 |
async with httpx.AsyncClient() as client:
|
137 |
try:
|
138 |
async with client.stream(
|
|
|
149 |
content = line
|
150 |
if content.startswith("$@$v=undefined-rv1$@$"):
|
151 |
content = content[21:]
|
152 |
+
# Strip the model prefix from the response content
|
153 |
cleaned_content = strip_model_prefix(content, model_prefix)
|
154 |
yield f"data: {json.dumps(create_chat_completion_data(cleaned_content, request.model, timestamp))}\n\n"
|
155 |
|
|
|
166 |
agent_mode = AGENT_MODE.get(request.model, {})
|
167 |
trending_agent_mode = TRENDING_AGENT_MODE.get(request.model, {})
|
168 |
model_prefix = MODEL_PREFIXES.get(request.model, "")
|
|
|
169 |
|
170 |
# Obtain VQD token
|
171 |
vqd = await get_ddg_vqd()
|
|
|
190 |
json_data = {
|
191 |
"model": MODEL_MAPPING.get(request.model, request.model),
|
192 |
"messages": message_history,
|
193 |
+
"previewToken": None,
|
194 |
+
"userId": None,
|
195 |
+
"codeModelMode": True,
|
196 |
+
"agentMode": agent_mode,
|
197 |
+
"trendingAgentMode": trending_agent_mode,
|
198 |
+
"isMicMode": False,
|
199 |
+
"userSystemPrompt": None,
|
200 |
+
"maxTokens": request.max_tokens,
|
201 |
+
"playgroundTopP": request.top_p,
|
202 |
+
"playgroundTemperature": request.temperature,
|
203 |
+
"isChromeExt": False,
|
204 |
+
"githubToken": None,
|
205 |
+
"clickedAnswer2": False,
|
206 |
+
"clickedAnswer3": False,
|
207 |
+
"clickedForceWebSearch": False,
|
208 |
+
"visitFromDelta": False,
|
209 |
+
"mobileClient": False,
|
210 |
+
"userSelectedModel": MODEL_MAPPING.get(request.model, request.model),
|
211 |
}
|
212 |
|
213 |
+
logger.debug(f"Sending JSON payload to DDG API: {json.dumps(json_data)}")
|
214 |
+
|
215 |
async with httpx.AsyncClient() as client:
|
216 |
try:
|
217 |
response = await client.post(
|