Many-in-one AI client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
897 B

  1. import * as OpenAiImpl from './platforms/openai';
  2. export const SUPPORTED_PLATFORMS = { OpenAi: OpenAiImpl } as const;
  3. export type PlatformConfig = OpenAiImpl.PlatformConfig;
  4. export type PlatformEventEmitter = OpenAiImpl.PlatformEventEmitter;
  5. export * as OpenAi from './platforms/openai';
  6. export const createAiClient = (configParams: PlatformConfig): PlatformEventEmitter => {
  7. const {
  8. platform,
  9. platformConfiguration,
  10. } = configParams;
  11. const platformModules = Object.values(SUPPORTED_PLATFORMS);
  12. const platformModule = platformModules.find((p) => p.PLATFORM_ID === platform);
  13. if (!platformModule) {
  14. const supportedPlatforms = platformModules.map((p) => p.PLATFORM_ID).join(', ');
  15. throw new Error(`Unsupported platform: ${platform}. Supported platforms are: ${supportedPlatforms}`);
  16. }
  17. return new platformModule.PlatformEventEmitterImpl(platformConfiguration);
  18. };