mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
🤖 chore: Improve Assistants Run Logging (#1801)
This commit is contained in:
parent
9d3215dcaa
commit
60b1d1332c
3 changed files with 19 additions and 14 deletions
|
|
@ -470,13 +470,14 @@ async function processMessages(openai, messages = []) {
|
||||||
}
|
}
|
||||||
|
|
||||||
text += (content.text?.value ?? '') + ' ';
|
text += (content.text?.value ?? '') + ' ';
|
||||||
|
logger.debug('[processMessages] Processing message:', { value: text });
|
||||||
|
|
||||||
// Process annotations if they exist
|
// Process annotations if they exist
|
||||||
if (!content.text?.annotations) {
|
if (!content.text?.annotations?.length) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug('Processing annotations:', content.text.annotations);
|
logger.debug('[processMessages] Processing annotations:', content.text.annotations);
|
||||||
for (const annotation of content.text.annotations) {
|
for (const annotation of content.text.annotations) {
|
||||||
logger.debug('Current annotation:', annotation);
|
logger.debug('Current annotation:', annotation);
|
||||||
let file;
|
let file;
|
||||||
|
|
|
||||||
|
|
@ -88,35 +88,38 @@ async function waitForRun({
|
||||||
const runInfo = `user: ${openai.req.user.id} | thread_id: ${thread_id} | ${runIdLog}`;
|
const runInfo = `user: ${openai.req.user.id} | thread_id: ${thread_id} | ${runIdLog}`;
|
||||||
const raceTimeoutMs = 3000;
|
const raceTimeoutMs = 3000;
|
||||||
let maxRetries = 5;
|
let maxRetries = 5;
|
||||||
let attempt = 0;
|
|
||||||
while (timeElapsed < timeout) {
|
while (timeElapsed < timeout) {
|
||||||
i++;
|
i++;
|
||||||
logger.debug(`[heartbeat ${i}] ${runIdLog} | Retrieving run status...`);
|
logger.debug(`[heartbeat ${i}] ${runIdLog} | Retrieving run status...`);
|
||||||
let updatedRun;
|
let updatedRun;
|
||||||
|
|
||||||
const startTime = Date.now();
|
let attempt = 0;
|
||||||
|
let startTime = Date.now();
|
||||||
while (!updatedRun && attempt < maxRetries) {
|
while (!updatedRun && attempt < maxRetries) {
|
||||||
try {
|
try {
|
||||||
updatedRun = await withTimeout(
|
updatedRun = await withTimeout(
|
||||||
retrieveRun({ thread_id, run_id, timeout: raceTimeoutMs, openai }),
|
retrieveRun({ thread_id, run_id, timeout: raceTimeoutMs, openai }),
|
||||||
raceTimeoutMs,
|
raceTimeoutMs,
|
||||||
`[heartbeat ${i}] ${runIdLog} | Run retrieval timed out at ${timeElapsed} ms. Trying again (attempt ${
|
`[heartbeat ${i}] ${runIdLog} | Run retrieval timed out after ${raceTimeoutMs} ms. Trying again (attempt ${
|
||||||
attempt + 1
|
attempt + 1
|
||||||
} of ${maxRetries})...`,
|
} of ${maxRetries})...`,
|
||||||
);
|
);
|
||||||
attempt++;
|
const endTime = Date.now();
|
||||||
|
logger.debug(
|
||||||
|
`[heartbeat ${i}] ${runIdLog} | Elapsed run retrieval time: ${endTime - startTime}`,
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.warn(`${runIdLog} | Error retrieving run status: ${error}`);
|
attempt++;
|
||||||
|
startTime = Date.now();
|
||||||
|
logger.warn(`${runIdLog} | Error retrieving run status`, error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const endTime = Date.now();
|
|
||||||
logger.debug(
|
|
||||||
`[heartbeat ${i}] ${runIdLog} | Elapsed run retrieval time: ${endTime - startTime}`,
|
|
||||||
);
|
|
||||||
if (!updatedRun) {
|
if (!updatedRun) {
|
||||||
const errorMessage = `[waitForRun] ${runIdLog} | Run retrieval failed after ${maxRetries} attempts`;
|
const errorMessage = `[waitForRun] ${runIdLog} | Run retrieval failed after ${maxRetries} attempts`;
|
||||||
throw new Error(errorMessage);
|
throw new Error(errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
run = updatedRun;
|
run = updatedRun;
|
||||||
attempt = 0;
|
attempt = 0;
|
||||||
const runStatus = `${runInfo} | status: ${run.status}`;
|
const runStatus = `${runInfo} | status: ${run.status}`;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@ async function retrieveRun({ thread_id, run_id, timeout, openai }) {
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const logMessage = '[retrieveRun] Failed to retrieve run data:';
|
const logMessage = '[retrieveRun] Failed to retrieve run data:';
|
||||||
if (error.response) {
|
const timedOutMessage = 'Cannot read properties of undefined (reading \'status\')';
|
||||||
|
if (error?.response && error?.response?.status) {
|
||||||
logger.error(
|
logger.error(
|
||||||
`${logMessage} The request was made and the server responded with a status code that falls out of the range of 2xx: ${
|
`${logMessage} The request was made and the server responded with a status code that falls out of the range of 2xx: ${
|
||||||
error.message ? error.message : ''
|
error.message ? error.message : ''
|
||||||
|
|
@ -64,9 +65,9 @@ async function retrieveRun({ thread_id, run_id, timeout, openai }) {
|
||||||
request: error.request,
|
request: error.request,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
} else {
|
} else if (error?.message && !error?.message?.includes(timedOutMessage)) {
|
||||||
logger.error(`${logMessage} Something happened in setting up the request`, {
|
logger.error(`${logMessage} Something happened in setting up the request`, {
|
||||||
message: error.message ? error.message : '',
|
message: error.message,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue