| const { getModelMaxTokens } = require('@librechat/api'); |
| const { createContentAggregator } = require('@librechat/agents'); |
| const { |
| EModelEndpoint, |
| providerEndpointMap, |
| getResponseSender, |
| } = require('librechat-data-provider'); |
| const { getDefaultHandlers } = require('~/server/controllers/agents/callbacks'); |
| const getOptions = require('~/server/services/Endpoints/bedrock/options'); |
| const AgentClient = require('~/server/controllers/agents/client'); |
|
|
| const initializeClient = async ({ req, res, endpointOption }) => { |
| if (!endpointOption) { |
| throw new Error('Endpoint option not provided'); |
| } |
|
|
| |
| const collectedUsage = []; |
| const { contentParts, aggregateContent } = createContentAggregator(); |
| const eventHandlers = getDefaultHandlers({ res, aggregateContent, collectedUsage }); |
|
|
| |
| const agent = { |
| id: EModelEndpoint.bedrock, |
| name: endpointOption.name, |
| provider: EModelEndpoint.bedrock, |
| endpoint: EModelEndpoint.bedrock, |
| instructions: endpointOption.promptPrefix, |
| model: endpointOption.model_parameters.model, |
| model_parameters: endpointOption.model_parameters, |
| }; |
|
|
| if (typeof endpointOption.artifactsPrompt === 'string' && endpointOption.artifactsPrompt) { |
| agent.instructions = `${agent.instructions ?? ''}\n${endpointOption.artifactsPrompt}`.trim(); |
| } |
|
|
| |
| const options = await getOptions({ |
| req, |
| res, |
| endpointOption, |
| }); |
|
|
| agent.model_parameters = Object.assign(agent.model_parameters, options.llmConfig); |
| if (options.configOptions) { |
| agent.model_parameters.configuration = options.configOptions; |
| } |
|
|
| const sender = |
| agent.name ?? |
| getResponseSender({ |
| ...endpointOption, |
| model: endpointOption.model_parameters.model, |
| }); |
|
|
| const client = new AgentClient({ |
| req, |
| res, |
| agent, |
| sender, |
| |
| contentParts, |
| eventHandlers, |
| collectedUsage, |
| spec: endpointOption.spec, |
| iconURL: endpointOption.iconURL, |
| endpoint: EModelEndpoint.bedrock, |
| resendFiles: endpointOption.resendFiles, |
| maxContextTokens: |
| endpointOption.maxContextTokens ?? |
| agent.max_context_tokens ?? |
| getModelMaxTokens(agent.model_parameters.model, providerEndpointMap[agent.provider]) ?? |
| 4000, |
| attachments: endpointOption.attachments, |
| }); |
| return { client }; |
| }; |
|
|
| module.exports = { initializeClient }; |
|
|