第一个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

相关推荐
全栈弄潮儿3 小时前
ChatGPT、Codex、Cursor 怎么选?AI 编程工具入门指南
chatgpt·openai·ai编程
woodwen3 小时前
Codex + Matt Pocock Skills 实战:别全装,这 13 个 Skill 才是真正的核心
aigc·openai·ai编程
为你学会写情书3 小时前
从 NestJS 基础到 LangChain 实战:构建可维护的 AI 应用架构
langchain
circuitsosk3 小时前
Prompt Engineering进阶:面向复杂业务场景的模板化管理与动态注入策略
python·langchain·prompt·跨境电商·rag·上下文管理·动态注入
我是大卫21 小时前
大模型到底是怎么学会说话的?一文看懂预训练
人工智能·openai
VIP_CQCRE21 小时前
用 Ace Data Cloud 快速接入 OpenAI Chat Completions API:兼容官方格式,更适合开发者落地
ai·大模型·openai·api·ace data cloud
JaydenAI1 天前
[基于OpenEvals的自动化评估-07]评估Agent输出文本的质量[下篇]
ai·langchain·agent·evaluation·openevals
淼澄研学1 天前
基于LangChain与AutoGen构建AI Agent的5个实操场景
人工智能·langchain
全栈弄潮儿1 天前
开始 AI 编程前,到底需要准备什么?
chatgpt·openai·ai编程