第一个AI调用——TypeScript 工程初始化与配置管理(实战跟练)

第一个 AI 调用------TypeScript 工程初始化与配置管理

本文基于 NestJS + LangChain.js + TypeScript 技术栈,手把手带你从零初始化一个工程,并搭好环境变量配置管理体系。当你真正发出第一个 AI 调用前,环境必须先稳。

一、前置准备

在动手之前,请确认本机已经具备以下环境:

  • Node.js ≥ 20(NestJS 与 LangChain.js 的现代版本均依赖新版 Node 特性)
  • pnpm(包管理器,比 npm 更快、磁盘占用更省)

验证命令:

bash 复制代码
node -v
pnpm -v

二、初始化工程

1. 新建工程目录

任意取名,这里以 1.basic 为例:

bash 复制代码
mkdir 1.basic
cd 1.basic

2. 初始化 package.json

bash 复制代码
pnpm init -y

3. 配置 scripts 与开发依赖

打开 package.json,补充构建脚本与 devDependencies

json 复制代码
{
  "scripts": {
    "build": "tsc"
  },
  "devDependencies": {
    "@types/node": "22.20.1",
    "typescript": "7.0.2"
  }
}

注意包名是 @types/node(types 为复数)。少写 s 会导致 pnpm i 找不到包。

4. 安装依赖

bash 复制代码
pnpm i

5. 生成 tsconfig

bash 复制代码
npx tsc --init

该命令会在根目录生成 tsconfig.json

6. 调整 tsconfig.json

我们不是 React 应用,需要关掉 JSX 相关配置,并打开 typesrootDir

json 复制代码
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "CommonJS",
    "moduleResolution": "node",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "types": ["node"],
    // "jsx": "react-jsx",          // 非 React 项目,保持注释
    // "verbatimModuleSyntax": true // 按需关闭,避免类型导入报错
  }
}

关键项说明:

  • rootDir:源码根目录,编译器只编译这里的文件。
  • outDir:编译产物输出目录(默认 dist)。
  • types: ["node"]:让 TS 识别 Node 内置 API 的类型(如 process)。
  • verbatimModuleSyntax / jsx:React 专属配置,非前端项目保持关闭。

7. 编写入口文件

新建 src/index.ts

ts 复制代码
console.log("hello");

8. 编译

bash 复制代码
pnpm build

执行后根目录出现 dist 文件夹,内含编译后的 index.js

9. 运行

bash 复制代码
node dist/index.js

终端输出:

text 复制代码
hello

到这一步,基础 TypeScript 工程已经跑通。

三、配置管理:环境变量

AI 调用需要 API_KEY 等敏感信息,绝不能硬编码进源码 ,也不能提交到 Git。正确做法是用 .env 文件 + dotenv 在运行时注入。

10. 创建 .env

在项目根目录(与 src 同级)新建 .env

env 复制代码
API_KEY=123

这里先填一个虚拟值,真实开发时替换为可用的 Key。

11. 安装 dotenv

package.jsondependencies 中加入:

json 复制代码
{
  "dependencies": {
    "dotenv": "17.4.2"
  }
}

然后安装:

bash 复制代码
pnpm i

12. 在代码中加载环境变量

修改 src/index.ts,在文件最顶部 导入 dotenv/config

ts 复制代码
import "dotenv/config";

console.log("hello");
console.log(process.env.API_KEY);

13. 重新构建并运行

bash 复制代码
pnpm build
node dist/index.js

输出:

text 复制代码
hello
123

14. 验证热感知

修改 .env 中的 API_KEY=456无需重新 build,直接再次运行:

bash 复制代码
node dist/index.js

输出变为:

text 复制代码
hello
456

说明 dotenv 在程序启动时实时读取 .env,环境变量的变更在下次运行即生效。

四、关键原理解析

为什么改 .env 不用重新 build?

dotenv 是在运行时 (Node 进程启动、import "dotenv/config" 执行时)同步读取 .env 并写入 process.env 的。而 tsc 编译只处理 TypeScript 类型与语法,不会把环境变量打包进 dist。因此:

  • 改源码 → 必须 pnpm build 重新编译
  • .env → 只需重新 node dist/index.js

.env 为什么要进 .gitignore

.env 常含密钥,提交到仓库会造成泄露。在 .gitignore 中加入:

gitignore 复制代码
.env

正式项目中通常用 .env.example 提交一份字段模板(值留空),供协作者参考, 例如之前发布过的小娜ai聊天工具。

五、小结

至此,我们完成了:

  1. 用 pnpm + TypeScript 初始化标准工程结构;
  2. 配置了 tsconfig.json(rootDir / outDir / types);
  3. 通过 dotenv 实现了环境变量的安全注入与运行时读取。

这是所有 AI 应用(NestJS 服务、LangChain.js 链路)统一的起点。下一步,你就可以在 index.ts 里用 process.env.API_KEY 发起第一个大模型调用了。


技术栈:NestJS · LangChain.js · TypeScript

相关推荐
未若君雅裁2 小时前
上下文压缩双刃剑-Summarization与ContextEditing中间件实战
python·中间件·langchain
前端 贾公子3 小时前
第09章:上下文与记忆 (3)
python·langchain
全栈弄潮儿4 小时前
从零搭建你的 AI 编程工作流
aigc·openai·ai编程
sukioe4 小时前
一张图、两把锁:AI 物流履约平台的确定性边界设计
人工智能·python·ai·langchain
何以解忧,唯有..5 小时前
LangChain 中 Pydantic 格式输出:结构化输出的完整指南
java·开发语言·langchain
sukioe6 小时前
城智连响:基于 LangGraph 与四库分层架构的城市公共设施智能报修与派单系统
人工智能·python·ai·架构·langchain
zl_dfq7 小时前
LangChain 之 【MCP】(FastMCP、MultiServerMCPClient、json.dumps)
langchain
VIP_CQCRE9 小时前
用一个 API 接入 GPT-Image-2 与 Nano Banana:Ace Data Cloud 图像生成能力实践
ai·aigc·openai·api·图像生成
Bigger9 小时前
别再拿大炮打蚊子了,我给 Codex 加了一个自动驾驶
人工智能·openai·vibecoding
爱敲代码的小冰10 小时前
langchain入门基础
langchain