mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-03-03 06:40:20 +01:00
🪙 feat: Add messageId to Transactions (#11987)
* feat: Add messageId to transactions * chore: field order * feat: Enhance token usage tracking by adding messageId parameter - Updated `recordTokenUsage` method in BaseClient to accept a new `messageId` parameter for improved tracking. - Propagated `messageId` in the AgentClient when recording usage. - Added tests to ensure `messageId` is correctly passed and handled in various scenarios, including propagation across multiple usage entries. * chore: Correct field order in createGeminiImageTool function - Moved the conversationId field to the correct position in the object being passed to the recordTokenUsage method, ensuring proper parameter alignment for improved functionality. * refactor: Update OpenAIChatCompletionController and createResponse to use responseId instead of requestId - Replaced instances of requestId with responseId in the OpenAIChatCompletionController for improved clarity in logging and tracking. - Updated createResponse to include responseId in the requestBody, ensuring consistency across the handling of message identifiers. * test: Add messageId to agent client tests - Included messageId in the agent client tests to ensure proper handling and propagation of message identifiers during transaction recording. - This update enhances the test coverage for scenarios involving messageId, aligning with recent changes in the tracking of message identifiers. * fix: Update OpenAIChatCompletionController to use requestId for context - Changed the context object in OpenAIChatCompletionController to use `requestId` instead of `responseId` for improved clarity and consistency in handling request identifiers. * chore: field order
This commit is contained in:
parent
6169d4f70b
commit
8b159079f5
10 changed files with 149 additions and 13 deletions
|
|
@ -137,12 +137,14 @@ class BaseClient {
|
|||
* @param {AppConfig['balance']} [balance]
|
||||
* @param {number} promptTokens
|
||||
* @param {number} completionTokens
|
||||
* @param {string} [messageId]
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async recordTokenUsage({ model, balance, promptTokens, completionTokens }) {
|
||||
async recordTokenUsage({ model, balance, promptTokens, completionTokens, messageId }) {
|
||||
logger.debug('[BaseClient] `recordTokenUsage` not implemented.', {
|
||||
model,
|
||||
balance,
|
||||
messageId,
|
||||
promptTokens,
|
||||
completionTokens,
|
||||
});
|
||||
|
|
@ -796,6 +798,7 @@ class BaseClient {
|
|||
completionTokens,
|
||||
balance: balanceConfig,
|
||||
model: responseMessage.model,
|
||||
messageId: this.responseMessageId,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -251,8 +251,9 @@ function checkForSafetyBlock(response) {
|
|||
* @param {string} params.userId - The user ID
|
||||
* @param {string} params.conversationId - The conversation ID
|
||||
* @param {string} params.model - The model name
|
||||
* @param {string} [params.messageId] - The response message ID for transaction correlation
|
||||
*/
|
||||
async function recordTokenUsage({ usageMetadata, req, userId, conversationId, model }) {
|
||||
async function recordTokenUsage({ usageMetadata, req, userId, conversationId, model, messageId }) {
|
||||
if (!usageMetadata) {
|
||||
logger.debug('[GeminiImageGen] No usage metadata available for balance tracking');
|
||||
return;
|
||||
|
|
@ -288,6 +289,7 @@ async function recordTokenUsage({ usageMetadata, req, userId, conversationId, mo
|
|||
{
|
||||
user: userId,
|
||||
model,
|
||||
messageId,
|
||||
conversationId,
|
||||
context: 'image_generation',
|
||||
balance,
|
||||
|
|
@ -445,10 +447,14 @@ function createGeminiImageTool(fields = {}) {
|
|||
];
|
||||
|
||||
const conversationId = runnableConfig?.configurable?.thread_id;
|
||||
const messageId =
|
||||
runnableConfig?.configurable?.run_id ??
|
||||
runnableConfig?.configurable?.requestBody?.messageId;
|
||||
recordTokenUsage({
|
||||
usageMetadata: apiResponse.usageMetadata,
|
||||
req,
|
||||
userId,
|
||||
messageId,
|
||||
conversationId,
|
||||
model: geminiModel,
|
||||
}).catch((error) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue