get-client.ts 764 B

123456789101112131415161718192021
  1. import { aiServiceType } from '~/interfaces/ai';
  2. import { AzureOpenaiClientDelegator } from './azure-openai-client-delegator';
  3. import type { IOpenaiClientDelegator } from './interfaces';
  4. import { OpenaiClientDelegator } from './openai-client-delegator';
  5. type GetDelegatorOptions = {
  6. aiServiceType: aiServiceType;
  7. }
  8. type Delegator<Opts = GetDelegatorOptions> = Opts extends { aiServiceType: 'openai' }
  9. ? OpenaiClientDelegator
  10. : Opts extends { aiServiceType: 'azure-openai' }
  11. ? AzureOpenaiClientDelegator
  12. : IOpenaiClientDelegator;
  13. export const getClient = (opts: GetDelegatorOptions): Delegator => {
  14. if (opts.aiServiceType === aiServiceType.AZURE_OPENAI) {
  15. return new AzureOpenaiClientDelegator();
  16. }
  17. return new OpenaiClientDelegator();
  18. };