@convo-lang/convo-lang
Version:
The language of AI
40 lines • 2.24 kB
JavaScript
import { secretManager } from "@iyio/common";
import { BaseOpenAiConvoCompletionService } from "../BaseOpenAiConvoCompletionService.js";
import { BaseOpenAiConvoConverter } from "../BaseOpenAiConvoConverter.js";
import { convoCompletionService, convoConversationConverterProvider, convoEmbeddingsService, convoTranscriptionService, convoTtsService } from "../convo.deps.js";
import { convoOpenAiInputType, convoOpenAiOutputType } from "./openai-lib.js";
import { defaultOpenAiChatModel, openAiModels } from "./openai-models.js";
import { openAiApiKeyParam, openAiBaseUrlParam, openAiChatModelParam, openAiSecretsParam, openAiVisionModelParam } from "./openai-params.js";
export const convoOpenAiModule = (scope) => {
scope.implementService(convoCompletionService, createOpenAiConvoServiceFromScope);
scope.implementService(convoTranscriptionService, createOpenAiConvoServiceFromScope);
scope.implementService(convoTtsService, createOpenAiConvoServiceFromScope);
scope.implementService(convoEmbeddingsService, createOpenAiConvoServiceFromScope);
scope.addProvider(convoConversationConverterProvider, createOpenAiConvoConverterFromScope);
};
export const createOpenAiConvoServiceFromScope = (scope) => {
return new BaseOpenAiConvoCompletionService({
serviceId: 'open-ai',
apiKey: scope.to(openAiApiKeyParam).get(),
apiBaseUrl: scope.to(openAiBaseUrlParam).get(),
secretManager: scope.to(secretManager).get(),
secretsName: scope.to(openAiSecretsParam).get(),
inputType: convoOpenAiInputType,
outputType: convoOpenAiOutputType,
models: openAiModels,
isFallback: true,
supportsTranscription: true,
supportsTts: true,
});
};
export const createOpenAiConvoConverterFromScope = (scope) => {
return new BaseOpenAiConvoConverter({
chatModel: scope.to(openAiChatModelParam).get() ?? defaultOpenAiChatModel.name,
visionModel: scope.to(openAiVisionModelParam).get(),
supportedInputTypes: [convoOpenAiInputType],
supportedOutputTypes: [convoOpenAiOutputType],
models: openAiModels,
hasVision: model => model.startsWith('gtp-4o')
});
};
//# sourceMappingURL=openai-service.js.map