UNPKG

@convo-lang/convo-lang

Version:
53 lines 2.99 kB
import { secretManager } from "@iyio/common"; import { BaseOpenAiConvoCompletionService } from "../BaseOpenAiConvoCompletionService.js"; import { BaseOpenAiConvoConverter } from "../BaseOpenAiConvoConverter.js"; import { convoCompletionService, convoConversationConverterProvider } from "../convo.deps.js"; import { convoOpenRouterInputType, convoOpenRouterOutputType, defaultOpenRouterModel, openRouterAutoSelectModel, openRouterModel, openRouterModelPrefix } from "./open-router-lib.js"; import { getOpenRouterModelsAsync } from "./open-router-models.js"; import { openRouterApiKeyParam, openRouterBaseUrlParam, openRouterChatModelParam, openRouterSecretsParam, openRouterVisionModelParam } from "./open-router-params.js"; import { openAiChatModelParam, openAiVisionModelParam } from "./openai-params.js"; export const convoOpenRouterModule = (scope) => { scope.implementService(convoCompletionService, createOpenRouterConvoServiceFromScope); scope.addProvider(convoConversationConverterProvider, createOpenRouterConvoConverterFromScope); }; export const createOpenRouterConvoServiceFromScope = (scope) => { return new BaseOpenAiConvoCompletionService({ serviceId: 'open-router', apiKey: scope.to(openRouterApiKeyParam).get(), apiBaseUrl: scope.to(openRouterBaseUrlParam).get(), secretManager: scope.to(secretManager).get(), secretsName: scope.to(openRouterSecretsParam).get(), inputType: convoOpenRouterInputType, outputType: convoOpenRouterOutputType, getModelsAsync: getOpenRouterModelsAsync, canComplete: model => model?.startsWith(openRouterModelPrefix) || model === openRouterModel, }); }; export const createOpenRouterConvoConverterFromScope = (scope) => { return new BaseOpenAiConvoConverter({ includeModalities: true, chatModel: scope.to(openRouterChatModelParam).get() ?? scope.to(openAiChatModelParam).get() ?? defaultOpenRouterModel, visionModel: scope.to(openRouterVisionModelParam).get() ?? scope.to(openAiVisionModelParam).get(), supportedInputTypes: [convoOpenRouterInputType], supportedOutputTypes: [convoOpenRouterOutputType], transformInput: input => { if (input.model === openRouterAutoSelectModel || input.model === openRouterModel) { input.model = 'openrouter/auto'; } else if (input.model.startsWith(openRouterModelPrefix)) { input.model = input.model.substring(openRouterModelPrefix.length); } return input; }, transformOutput: output => { if (output.model === 'openrouter/auto') { output.model = openRouterAutoSelectModel; } else if (!output.model.startsWith(openRouterModelPrefix)) { output.model = openRouterModelPrefix + output.model; } return output; } }); }; //# sourceMappingURL=open-router-service.js.map