1. NestJS 接入 LangChain 实战指南
作为一名从前端转向AI开发的技术人员,我最近在项目中成功将LangChain集成到了NestJS框架中。这个过程让我深刻体会到,选择合适的模型调用方式对应用性能和用户体验有着决定性影响。本文将详细介绍三种核心调用方式:invoke、stream和batch,并分享我在实际开发中的经验教训。
LangChain作为当前最流行的AI应用开发框架之一,为开发者提供了便捷的大模型接入能力。而NestJS作为Node.js领域的企业级框架,其模块化设计和依赖注入特性非常适合构建复杂的AI应用。两者的结合,能够让我们快速搭建出功能完善、性能优越的AI服务。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 项目初始化与依赖安装
首先,我们需要创建一个新的NestJS项目(如果尚未创建):
bash复制npm i -g @nestjs/cli
nest new langchain-demo
cd langchain-demo
然后安装必要的依赖:
bash复制pnpm install langchain @langchain/openai @langchain/core @nestjs/config
这些依赖包各自承担着重要角色:
langchain:提供LangChain的核心功能@langchain/openai:包含ChatOpenAI等常用模型@langchain/core:LangChain的基础能力@nestjs/config:用于管理环境变量
提示:在实际项目中,我建议使用pnpm而不是npm,因为它能更好地处理依赖关系,特别是在大型项目中可以显著减少node_modules的体积。
2.2 环境变量配置
在项目根目录创建.env文件:
env复制CHAT_BASE_URL=https://api.deepseek.com
CHAT_MODE_NAME=deepseek-chat
CHAT_API_KEY=your-api-key
各参数说明:
CHAT_BASE_URL:指向你的模型服务地址CHAT_MODE_NAME:指定要使用的模型名称CHAT_API_KEY:API访问密钥
安全注意事项:
- 务必在
.gitignore中添加.env,避免敏感信息泄露 - API密钥应该定期轮换
- 不同环境(开发、测试、生产)应该使用不同的密钥
2.3 NestJS配置模块设置
修改app.module.ts以加载环境变量:
typescript复制import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ChatModule } from './chat/chat.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ['.env', `.env.${process.env.NODE_ENV}`]
}),
ChatModule,
],
})
export class AppModule {}
这样配置后,我们可以在应用的任何地方通过process.env访问环境变量。envFilePath的配置允许我们根据不同的环境(development、production等)加载不同的环境变量文件。
