Spaces:
Sleeping
Sleeping
link0518
commited on
Commit
·
f783f84
1
Parent(s):
82ecee3
id复用
Browse files- src/server/index.js +4 -1
- src/utils/utils.js +39 -3
src/server/index.js
CHANGED
|
@@ -148,7 +148,10 @@ app.post('/v1/chat/completions', async (req, res) => {
|
|
| 148 |
stream = false;
|
| 149 |
}
|
| 150 |
|
| 151 |
-
const
|
|
|
|
|
|
|
|
|
|
| 152 |
|
| 153 |
|
| 154 |
if (stream) {
|
|
|
|
| 148 |
stream = false;
|
| 149 |
}
|
| 150 |
|
| 151 |
+
const authHeader = req.headers.authorization;
|
| 152 |
+
const apiKey = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : authHeader;
|
| 153 |
+
|
| 154 |
+
const requestBody = generateRequestBody(messages, model, params, tools, apiKey);
|
| 155 |
|
| 156 |
|
| 157 |
if (stream) {
|
src/utils/utils.js
CHANGED
|
@@ -201,7 +201,39 @@ function convertOpenAIToolsToAntigravity(openaiTools) {
|
|
| 201 |
}
|
| 202 |
})
|
| 203 |
}
|
| 204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
const enableThinking = modelName.endsWith('-thinking') ||
|
| 206 |
modelName === 'gemini-2.5-pro' ||
|
| 207 |
modelName === 'gemini-2.5-pro-image' ||
|
|
@@ -210,8 +242,12 @@ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools)
|
|
| 210 |
modelName === "gpt-oss-120b-medium"
|
| 211 |
const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
|
| 212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
return {
|
| 214 |
-
project:
|
| 215 |
requestId: generateRequestId(),
|
| 216 |
request: {
|
| 217 |
contents: openaiMessageToAntigravity(openaiMessages),
|
|
@@ -226,7 +262,7 @@ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools)
|
|
| 226 |
}
|
| 227 |
},
|
| 228 |
generationConfig: generateGenerationConfig(parameters, enableThinking, actualModelName),
|
| 229 |
-
sessionId:
|
| 230 |
},
|
| 231 |
model: actualModelName,
|
| 232 |
userAgent: "antigravity"
|
|
|
|
| 201 |
}
|
| 202 |
})
|
| 203 |
}
|
| 204 |
+
const idCache = new Map();
|
| 205 |
+
const SESSION_ID_DURATION = 60 * 60 * 1000; // 1 hour
|
| 206 |
+
const PROJECT_ID_DURATION = 12 * 60 * 60 * 1000; // 12 hours
|
| 207 |
+
|
| 208 |
+
function getCachedIds(apiKey) {
|
| 209 |
+
const now = Date.now();
|
| 210 |
+
let cache = idCache.get(apiKey);
|
| 211 |
+
|
| 212 |
+
if (!cache) {
|
| 213 |
+
cache = {
|
| 214 |
+
projectId: generateProjectId(),
|
| 215 |
+
projectExpiry: now + PROJECT_ID_DURATION,
|
| 216 |
+
sessionId: generateSessionId(),
|
| 217 |
+
sessionExpiry: now + SESSION_ID_DURATION
|
| 218 |
+
};
|
| 219 |
+
idCache.set(apiKey, cache);
|
| 220 |
+
return cache;
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
if (now > cache.projectExpiry) {
|
| 224 |
+
cache.projectId = generateProjectId();
|
| 225 |
+
cache.projectExpiry = now + PROJECT_ID_DURATION;
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
if (now > cache.sessionExpiry) {
|
| 229 |
+
cache.sessionId = generateSessionId();
|
| 230 |
+
cache.sessionExpiry = now + SESSION_ID_DURATION;
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
return cache;
|
| 234 |
+
}
|
| 235 |
+
|
| 236 |
+
function generateRequestBody(openaiMessages, modelName, parameters, openaiTools, apiKey) {
|
| 237 |
const enableThinking = modelName.endsWith('-thinking') ||
|
| 238 |
modelName === 'gemini-2.5-pro' ||
|
| 239 |
modelName === 'gemini-2.5-pro-image' ||
|
|
|
|
| 242 |
modelName === "gpt-oss-120b-medium"
|
| 243 |
const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
|
| 244 |
|
| 245 |
+
// Use a default key if none provided (though it should be provided by the server)
|
| 246 |
+
const cacheKey = apiKey || 'default';
|
| 247 |
+
const { projectId, sessionId } = getCachedIds(cacheKey);
|
| 248 |
+
|
| 249 |
return {
|
| 250 |
+
project: projectId,
|
| 251 |
requestId: generateRequestId(),
|
| 252 |
request: {
|
| 253 |
contents: openaiMessageToAntigravity(openaiMessages),
|
|
|
|
| 262 |
}
|
| 263 |
},
|
| 264 |
generationConfig: generateGenerationConfig(parameters, enableThinking, actualModelName),
|
| 265 |
+
sessionId: sessionId
|
| 266 |
},
|
| 267 |
model: actualModelName,
|
| 268 |
userAgent: "antigravity"
|