mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 00:40:14 +01:00
* 🤖 refactor: streamline model selection logic for title model in GoogleClient
* refactor: add options for empty object schemas in convertJsonSchemaToZod
* refactor: add utility function to check for empty object schemas in convertJsonSchemaToZod
* fix: Google MCP Tool errors, and remove Object Unescaping as Google fixed this
* fix: google safetySettings
* feat: add safety settings exclusion via GOOGLE_EXCLUDE_SAFETY_SETTINGS environment variable
* fix: rename environment variable for console JSON string length
* fix: disable portal for dropdown in ExportModal component
* fix: screenshot functionality to use image placeholder for remote images
* feat: add visionMode property to BaseClient and initialize in GoogleClient to fix resendFiles issue
* fix: enhance formatMessages to include image URLs in message content for Vertex AI
* fix: safety settings for titleChatCompletion
* fix: remove deprecated model assignment in GoogleClient and streamline title model retrieval
* fix: remove unused image preloading logic in ScreenshotContext
* chore: update default google models to latest models shared by vertex ai and gen ai
* refactor: enhance Google error messaging
* fix: update token values and model limits for Gemini models
* ci: fix model matching
* chore: bump version of librechat-data-provider to 0.7.699
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
const { EModelEndpoint, CacheKeys, Constants, googleSettings } = require('librechat-data-provider');
|
|
const getLogStores = require('~/cache/getLogStores');
|
|
const initializeClient = require('./initialize');
|
|
const { isEnabled } = require('~/server/utils');
|
|
const { saveConvo } = require('~/models');
|
|
|
|
const addTitle = async (req, { text, response, client }) => {
|
|
const { TITLE_CONVO = 'true' } = process.env ?? {};
|
|
if (!isEnabled(TITLE_CONVO)) {
|
|
return;
|
|
}
|
|
|
|
if (client.options.titleConvo === false) {
|
|
return;
|
|
}
|
|
const { GOOGLE_TITLE_MODEL } = process.env ?? {};
|
|
const providerConfig = req.app.locals[EModelEndpoint.google];
|
|
let model =
|
|
providerConfig?.titleModel ??
|
|
GOOGLE_TITLE_MODEL ??
|
|
client.options?.modelOptions.model ??
|
|
googleSettings.model.default;
|
|
|
|
if (GOOGLE_TITLE_MODEL === Constants.CURRENT_MODEL) {
|
|
model = client.options?.modelOptions.model;
|
|
}
|
|
|
|
const titleEndpointOptions = {
|
|
...client.options,
|
|
modelOptions: { ...client.options?.modelOptions, model: model },
|
|
attachments: undefined, // After a response, this is set to an empty array which results in an error during setOptions
|
|
};
|
|
|
|
const { client: titleClient } = await initializeClient({
|
|
req,
|
|
res: response,
|
|
endpointOption: titleEndpointOptions,
|
|
});
|
|
|
|
const titleCache = getLogStores(CacheKeys.GEN_TITLE);
|
|
const key = `${req.user.id}-${response.conversationId}`;
|
|
|
|
const title = await titleClient.titleConvo({
|
|
text,
|
|
responseText: response?.text ?? '',
|
|
conversationId: response.conversationId,
|
|
});
|
|
await titleCache.set(key, title, 120000);
|
|
await saveConvo(
|
|
req,
|
|
{
|
|
conversationId: response.conversationId,
|
|
title,
|
|
},
|
|
{ context: 'api/server/services/Endpoints/google/addTitle.js' },
|
|
);
|
|
};
|
|
|
|
module.exports = addTitle;
|