diff --git a/src/globals.ts b/src/globals.ts index 4d6e327e4..e42ce44cd 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -113,6 +113,7 @@ export const ORACLE: string = 'oracle'; export const IO_INTELLIGENCE: string = 'iointelligence'; export const AIBADGR: string = 'aibadgr'; export const OVHCLOUD: string = 'ovhcloud'; +export const GREENPT: string = 'greenpt'; export const VALID_PROVIDERS = [ ANTHROPIC, @@ -189,6 +190,7 @@ export const VALID_PROVIDERS = [ IO_INTELLIGENCE, AIBADGR, OVHCLOUD, + GREENPT, ]; export const CONTENT_TYPES = { diff --git a/src/providers/greenpt/api.ts b/src/providers/greenpt/api.ts new file mode 100644 index 000000000..d24ca7e52 --- /dev/null +++ b/src/providers/greenpt/api.ts @@ -0,0 +1,20 @@ +import { ProviderAPIConfig } from '../types'; + +const GreenPTAPIConfig: ProviderAPIConfig = { + getBaseURL: () => 'https://api.greenpt.ai/v1', + headers: ({ providerOptions }) => ({ + Authorization: `Bearer ${providerOptions.apiKey}`, + }), + getEndpoint: ({ fn }) => { + switch (fn) { + case 'chatComplete': + return '/chat/completions'; + case 'embed': + return '/embeddings'; + default: + return ''; + } + }, +}; + +export default GreenPTAPIConfig; diff --git a/src/providers/greenpt/greenpt.test.ts b/src/providers/greenpt/greenpt.test.ts new file mode 100644 index 000000000..1ac561561 --- /dev/null +++ b/src/providers/greenpt/greenpt.test.ts @@ -0,0 +1,17 @@ +import { GREENPT, VALID_PROVIDERS } from '../../globals'; +import GreenPTAPIConfig from './api'; + +describe('GreenPT provider', () => { + it('registers its OpenAI-compatible endpoints', () => { + expect(VALID_PROVIDERS).toContain(GREENPT); + expect(GreenPTAPIConfig.getBaseURL({} as never)).toBe( + 'https://api.greenpt.ai/v1' + ); + expect(GreenPTAPIConfig.getEndpoint({ fn: 'chatComplete' } as never)).toBe( + '/chat/completions' + ); + expect(GreenPTAPIConfig.getEndpoint({ fn: 'embed' } as never)).toBe( + '/embeddings' + ); + }); +}); diff --git a/src/providers/greenpt/index.ts b/src/providers/greenpt/index.ts new file mode 100644 index 000000000..adfe2a95a --- /dev/null +++ b/src/providers/greenpt/index.ts @@ -0,0 +1,20 @@ +import { GREENPT } from '../../globals'; +import { + chatCompleteParams, + embedParams, + responseTransformers, +} from '../open-ai-base'; +import { ProviderConfigs } from '../types'; +import GreenPTAPIConfig from './api'; + +const GreenPTConfig: ProviderConfigs = { + chatComplete: chatCompleteParams([], { model: 'glm-5.2' }), + embed: embedParams([], { model: 'green-embedding' }), + api: GreenPTAPIConfig, + responseTransforms: responseTransformers(GREENPT, { + chatComplete: true, + embed: true, + }), +}; + +export default GreenPTConfig; diff --git a/src/providers/index.ts b/src/providers/index.ts index 2cd5355f8..e0bd7b911 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -74,6 +74,7 @@ import OracleConfig from './oracle'; import IOIntelligenceConfig from './iointelligence'; import AIBadgrConfig from './aibadgr'; import OVHcloudConfig from './ovhcloud'; +import GreenPTConfig from './greenpt'; const Providers: { [key: string]: ProviderConfigs } = { openai: OpenAIConfig, @@ -148,6 +149,7 @@ const Providers: { [key: string]: ProviderConfigs } = { iointelligence: IOIntelligenceConfig, aibadgr: AIBadgrConfig, ovhcloud: OVHcloudConfig, + greenpt: GreenPTConfig, }; export default Providers;