import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { LLMService } from './llm.service';
import { LangChainProvider } from './providers/langchain.provider';
import { MemoryService } from './memory/memory.service';
import { SecurityModule } from '../security/security.module';
import { PrismaModule } from '@core/database/prisma/prisma.module';

// 保留旧的 Provider 以兼容（可选，后续可移除）
import { OpenAIProvider } from './providers/openai.provider';
import { QwenProvider } from './providers/qwen.provider';
import { MockLLMProvider } from './providers/mock.provider';

/**
 * LLM 模块
 * 
 * 使用 LangChain 统一管理 LLM 调用
 * 
 * 特性:
 * - LangChainProvider: 统一的 LLM 接口
 * - MemoryService: 对话记忆管理
 * - 安全防护集成
 */
@Module({
  imports: [
    ConfigModule,
    SecurityModule,
    PrismaModule,
  ],
  providers: [
    // 核心服务
    LLMService,
    LangChainProvider,
    MemoryService,
    
    // 保留旧的 Provider 以兼容（可选）
    OpenAIProvider,
    QwenProvider,
    MockLLMProvider,
  ],
  exports: [
    LLMService,
    LangChainProvider,
    MemoryService,
    
    // 导出旧 Provider 以兼容
    OpenAIProvider,
    QwenProvider,
    MockLLMProvider,
  ],
})
export class LLMModule {}
