| | 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 }; |
| |
|