45 lines
2.1 KiB
TypeScript
45 lines
2.1 KiB
TypeScript
import { Module } from "@nestjs/common";
|
||
import { log } from "@kokorone/shared";
|
||
import { PrismaModule } from "../prisma/prisma.module.js";
|
||
import { EmotionModule } from "../emotion/emotion.module.js";
|
||
import { RelationshipModule } from "../relationship/relationship.module.js";
|
||
import { MemoryModule } from "../memory/memory.module.js";
|
||
import { ScheduleModule } from "../schedule/schedule.module.js";
|
||
import { MockProvider } from "./mock-provider.service.js";
|
||
import { ClaudeProvider } from "./claude-provider.service.js";
|
||
import { LLM_PROVIDER } from "./llm-provider.js";
|
||
import { OutputFilterService } from "./output-filter.service.js";
|
||
import { FastChannelDetector } from "./fast-channel.service.js";
|
||
import { BehaviorReinforcementService } from "./behavior-reinforcement.service.js";
|
||
import { ContextAssemblerService } from "./context-assembler.service.js";
|
||
import { DialogueService } from "./dialogue.service.js";
|
||
import { DialogueController } from "./dialogue.controller.js";
|
||
|
||
// F-2 Provider 切換:LLM_PROVIDER=mock|claude 決定注入哪個實作,切換不動引擎任何一行。
|
||
// R-3:ClaudeProvider 已接上真實 API,這裡不再需要特別的「尚未實作」警告。
|
||
function llmProviderFactory(mock: MockProvider, claude: ClaudeProvider) {
|
||
const providerName = process.env.LLM_PROVIDER ?? "mock";
|
||
if (providerName === "claude") {
|
||
log("啟動", "INF", `LLM_PROVIDER=claude,對話生成將呼叫真實 API(CLAUDE_BASE_URL=${process.env.CLAUDE_BASE_URL ?? "http://localhost:3000/api/v1"})`);
|
||
return claude;
|
||
}
|
||
return mock;
|
||
}
|
||
|
||
@Module({
|
||
imports: [PrismaModule, EmotionModule, RelationshipModule, MemoryModule, ScheduleModule],
|
||
controllers: [DialogueController],
|
||
providers: [
|
||
MockProvider,
|
||
ClaudeProvider,
|
||
{ provide: LLM_PROVIDER, useFactory: llmProviderFactory, inject: [MockProvider, ClaudeProvider] },
|
||
OutputFilterService,
|
||
FastChannelDetector,
|
||
BehaviorReinforcementService,
|
||
ContextAssemblerService,
|
||
DialogueService,
|
||
],
|
||
exports: [DialogueService, BehaviorReinforcementService, LLM_PROVIDER],
|
||
})
|
||
export class LlmModule {}
|