第一个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 相关配置,并打开 types 与 rootDir:

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.json 的 dependencies 中加入:

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

相关推荐
变量棱镜4 小时前
GPT-6.1 Terra 正式上线
gpt·ai·openai·codex
星际码仔4 小时前
Codex Co²:AI 时代的结对编程,应该是怎样的?
openai·ai编程·vibecoding
染指11105 小时前
162.Agent-LangGraph-检查点的作用
人工智能·python·langchain·agents
ynchyong5 小时前
OpenAI 技术全景解析
openai·rag·function·guardrails
叼烟扛炮5 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
YIAN6 小时前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
lee_curry8 小时前
第十周完整学习笔记:继续升级为“检索更准、权限安全、索引可维护、失败可恢复、长期可运行”的企业级 RAG 系统
python·ai·langchain·agent·langgraph
sg_knight9 小时前
Bug 定位实战:把报错丢给 Codex,它是怎么修的
chatgpt·llm·bug·openai·agent·ai编程·codex
破烂三角裤1 天前
AI 没有记忆?我给儿童故事 Agent 搭了一套“长期记忆”系统
langchain
云和数据.ChenGuang1 天前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain