| | const { isEnabled } = require('@librechat/api'); |
| | const { EModelEndpoint, CacheKeys, Constants, googleSettings } = require('librechat-data-provider'); |
| | const getLogStores = require('~/cache/getLogStores'); |
| | const initializeClient = require('./initialize'); |
| | 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 appConfig = req.config; |
| | const providerConfig = appConfig.endpoints?.[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, |
| | }; |
| |
|
| | 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; |
| |
|