2024-06-22 08:42:51 -07:00
const { CacheKeys , Constants } = require ( 'librechat-data-provider' ) ;
const getLogStores = require ( '~/cache/getLogStores' ) ;
const { isEnabled } = require ( '~/server/utils' ) ;
const { saveConvo } = require ( '~/models' ) ;
const { logger } = require ( '~/config' ) ;
2024-10-19 14:24:07 +02:00
const initializeClient = require ( './initialize' ) ;
2024-06-22 08:42:51 -07:00
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 DEFAULT _TITLE _MODEL = 'gemini-pro' ;
const { GOOGLE _TITLE _MODEL } = process . env ? ? { } ;
let model = GOOGLE _TITLE _MODEL ? ? DEFAULT _TITLE _MODEL ;
if ( GOOGLE _TITLE _MODEL === Constants . CURRENT _MODEL ) {
model = client . options ? . modelOptions . model ;
if ( client . isVisionModel ) {
logger . warn (
` current_model was specified for Google title request, but the model ${ model } cannot process a text-only conversation. Falling back to ${ DEFAULT _TITLE _MODEL } ` ,
) ;
model = DEFAULT _TITLE _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 } ` ;
2024-08-18 06:00:03 -04:00
const title = await titleClient . titleConvo ( {
text ,
🪨 feat: AWS Bedrock support (#3935)
* feat: Add BedrockIcon component to SVG library
* feat: EModelEndpoint.bedrock
* feat: first pass, bedrock chat. note: AgentClient is returning `agents` as conversation.endpoint
* fix: declare endpoint in initialization step
* chore: Update @librechat/agents dependency to version 1.4.5
* feat: backend content aggregation for agents/bedrock
* feat: abort agent requests
* feat: AWS Bedrock icons
* WIP: agent provider schema parsing
* chore: Update EditIcon props type
* refactor(useGenerationsByLatest): make agents and bedrock editable
* refactor: non-assistant message content, parts
* fix: Bedrock response `sender`
* fix: use endpointOption.model_parameters not endpointOption.modelOptions
* fix: types for step handler
* refactor: Update Agents.ToolCallDelta type
* refactor: Remove unnecessary assignment of parentMessageId in AskController
* refactor: remove unnecessary assignment of parentMessageId (agent request handler)
* fix(bedrock/agents): message regeneration
* refactor: dynamic form elements using react-hook-form Controllers
* fix: agent icons/labels for messages
* fix: agent actions
* fix: use of new dynamic tags causing application crash
* refactor: dynamic settings touch-ups
* refactor: update Slider component to allow custom track class name
* refactor: update DynamicSlider component styles
* refactor: use Constants value for GLOBAL_PROJECT_NAME (enum)
* feat: agent share global methods/controllers
* fix: agents query
* fix: `getResponseModel`
* fix: share prompt a11y issue
* refactor: update SharePrompt dialog theme styles
* refactor: explicit typing for SharePrompt
* feat: add agent roles/permissions
* chore: update @librechat/agents dependency to version 1.4.7 for tool_call_ids edge case
* fix(Anthropic): messages.X.content.Y.tool_use.input: Input should be a valid dictionary
* fix: handle text parts with tool_call_ids and empty text
* fix: role initialization
* refactor: don't make instructions required
* refactor: improve typing of Text part
* fix: setShowStopButton for agents route
* chore: remove params for now
* fix: add streamBuffer and streamRate to help prevent 'Overloaded' errors from Anthropic API
* refactor: remove console.log statement in ContentRender component
* chore: typing, rename Context to Delete Button
* chore(DeleteButton): logging
* refactor(Action): make accessible
* style(Action): improve a11y again
* refactor: remove use/mention of mongoose sessions
* feat: first pass, sharing agents
* feat: visual indicator for global agent, remove author when serving to non-author
* wip: params
* chore: fix typing issues
* fix(schemas): typing
* refactor: improve accessibility of ListCard component and fix console React warning
* wip: reset templates for non-legacy new convos
* Revert "wip: params"
This reverts commit f8067e91d4adf7be9e0d9e914aaae79ac4689b80.
* Revert "refactor: dynamic form elements using react-hook-form Controllers"
This reverts commit 2150c4815d8c74a978a4b697aa8f54dc11e035d7.
* fix(Parameters): types and parameter effect update to only update local state to parameters
* refactor: optimize useDebouncedInput hook for better performance
* feat: first pass, anthropic bedrock params
* chore: paramEndpoints check for endpointType too
* fix: maxTokens to use coerceNumber.optional(),
* feat: extra chat model params
* chore: reduce code repetition
* refactor: improve preset title handling in SaveAsPresetDialog component
* refactor: improve preset handling in HeaderOptions component
* chore: improve typing, replace legacy dialog for SaveAsPresetDialog
* feat: save as preset from parameters panel
* fix: multi-search in select dropdown when using Option type
* refactor: update default showDefault value to false in Dynamic components
* feat: Bedrock presets settings
* chore: config, fix agents schema, update config version
* refactor: update AWS region variable name in bedrock options endpoint to BEDROCK_AWS_DEFAULT_REGION
* refactor: update baseEndpointSchema in config.ts to include baseURL property
* refactor: update createRun function to include req parameter and set streamRate based on provider
* feat: availableRegions via config
* refactor: remove unused demo agent controller file
* WIP: title
* Update @librechat/agents to version 1.5.0
* chore: addTitle.js to handle empty responseText
* feat: support images and titles
* feat: context token updates
* Refactor BaseClient test to use expect.objectContaining
* refactor: add model select, remove header options params, move side panel params below prompts
* chore: update models list, catch title error
* feat: model service for bedrock models (env)
* chore: Remove verbose debug log in AgentClient class following stream
* feat(bedrock): track token spend; fix: token rates, value key mapping for AWS models
* refactor: handle streamRate in `handleLLMNewToken` callback
* chore: AWS Bedrock example config in `.env.example`
* refactor: Rename bedrockMeta to bedrockGeneral in settings.ts and use for AI21 and Amazon Bedrock providers
* refactor: Update `.env.example` with AWS Bedrock model IDs URL and additional notes
* feat: titleModel support for bedrock
* refactor: Update `.env.example` with additional notes for AWS Bedrock model IDs
2024-09-09 12:06:59 -04:00
responseText : response ? . text ? ? '' ,
2024-08-18 06:00:03 -04:00
conversationId : response . conversationId ,
} ) ;
2024-06-22 08:42:51 -07:00
await titleCache . set ( key , title , 120000 ) ;
2024-07-20 01:51:59 -04:00
await saveConvo (
req ,
{
conversationId : response . conversationId ,
title ,
} ,
{ context : 'api/server/services/Endpoints/google/addTitle.js' } ,
) ;
2024-06-22 08:42:51 -07:00
} ;
module . exports = addTitle ;