71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
|
|
import { Module } from '@nestjs/common';
|
||
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||
|
|
import { ModelRouter } from './model-router';
|
||
|
|
import { PromptTemplateService } from './prompts/prompt-template.service';
|
||
|
|
import { AiCostCalculatorService } from './usage/ai-cost-calculator.service';
|
||
|
|
import { AiUsageLogService } from './usage/ai-usage-log.service';
|
||
|
|
import { AiGatewayService } from './gateway/ai-gateway.service';
|
||
|
|
import { ActiveRecallAnalysisWorkflow } from './workflows/active-recall-analysis.workflow';
|
||
|
|
import { AiController } from './ai.controller';
|
||
|
|
import { MockAiProvider } from './providers/mock-ai.provider';
|
||
|
|
import { DeepSeekProvider } from './providers/deepseek.provider';
|
||
|
|
import { MiniMaxProvider } from './providers/minimax.provider';
|
||
|
|
import type { AiProvider } from './providers/ai-provider.interface';
|
||
|
|
|
||
|
|
@Module({
|
||
|
|
imports: [ConfigModule],
|
||
|
|
controllers: [AiController],
|
||
|
|
providers: [
|
||
|
|
ModelRouter,
|
||
|
|
PromptTemplateService,
|
||
|
|
AiCostCalculatorService,
|
||
|
|
AiUsageLogService,
|
||
|
|
MockAiProvider,
|
||
|
|
DeepSeekProvider,
|
||
|
|
MiniMaxProvider,
|
||
|
|
{
|
||
|
|
provide: 'AI_PROVIDERS',
|
||
|
|
useFactory: (
|
||
|
|
mock: MockAiProvider,
|
||
|
|
deepseek: DeepSeekProvider,
|
||
|
|
minimax: MiniMaxProvider,
|
||
|
|
): Map<string, AiProvider> => {
|
||
|
|
const map = new Map<string, AiProvider>();
|
||
|
|
map.set(mock.name, mock);
|
||
|
|
map.set(deepseek.name, deepseek);
|
||
|
|
map.set(minimax.name, minimax);
|
||
|
|
return map;
|
||
|
|
},
|
||
|
|
inject: [MockAiProvider, DeepSeekProvider, MiniMaxProvider],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
provide: AiGatewayService,
|
||
|
|
useFactory: (
|
||
|
|
modelRouter: ModelRouter,
|
||
|
|
promptTemplate: PromptTemplateService,
|
||
|
|
costCalculator: AiCostCalculatorService,
|
||
|
|
usageLog: AiUsageLogService,
|
||
|
|
providers: Map<string, AiProvider>,
|
||
|
|
) => {
|
||
|
|
return new AiGatewayService(
|
||
|
|
modelRouter,
|
||
|
|
promptTemplate,
|
||
|
|
costCalculator,
|
||
|
|
usageLog,
|
||
|
|
providers,
|
||
|
|
);
|
||
|
|
},
|
||
|
|
inject: [
|
||
|
|
ModelRouter,
|
||
|
|
PromptTemplateService,
|
||
|
|
AiCostCalculatorService,
|
||
|
|
AiUsageLogService,
|
||
|
|
'AI_PROVIDERS',
|
||
|
|
],
|
||
|
|
},
|
||
|
|
ActiveRecallAnalysisWorkflow,
|
||
|
|
],
|
||
|
|
exports: [AiGatewayService, ActiveRecallAnalysisWorkflow],
|
||
|
|
})
|
||
|
|
export class AiModule {}
|