nodejs的顶尖开源项目

1、load env文件
import { config as loadDotenv } from "dotenv";
loadDotenv();
 
或者
import "dotenv/config";
 
2、nodejs的数据的输入输出 
import { createInterface } from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";
 const rl = createInterface({ input, output });
const userText = (await rl.question("你: ")).trim();
if (["exit", "quit", "q"].includes(userText.toLowerCase())) {
        break;
      }
   console.log(`AI: ${text || "(未返回文本内容)"}\n`);
 
3、获取文件的拓展名
import { extname } from "node:path";
 
     const suffix = extname(filePath).toLowerCase();
      if (suffix !== ".md" && suffix !== ".txt") {
        continue;
      }
4、获取文件的目录
import { resolve } from "node:path";
const KNOWLEDGE_BASE_DIR = resolve(process.cwd(), "knowledge_base");
5、根据文件目录 遍历文件
walkFiles(KNOWLEDGE_BASE_DIR);
function walkFiles(dir: string): string[] {
  const files: string[] = [];
  for (const entry of readdirSync(dir, { withFileTypes: true })) {
    const fullPath = resolve(dir, entry.name);
    if (entry.isDirectory()) {
      files.push(...walkFiles(fullPath));
    } else {
      files.push(fullPath);
    }
  }
  return files;
}
6、文件读取
import { existsSync, readFileSync } from "node:fs";
function loadTrainingExamples(maxExamples = 20): TrainingExample[] {
    if (!existsSync(TRAINING_DATA_PATH)) {
        return [];
    }

    return readFileSync(TRAINING_DATA_PATH, "utf-8")
        .split(/\r?\n/)
        .map((line) => line.trim())
        .filter(Boolean)
        .flatMap(parseTrainingExample)
        .slice(0, maxExamples);
}
6、读取env文件
const apiKey = process.env.OPENAI_API_KEY?.trim();
    const baseURL = process.env.OPENAI_BASE_URL?.trim();
    const model = process.env.MODEL_NAME?.trim() || "qwen-plus";
 
 7、抛出异常
    if (!apiKey || !baseURL) {
        throw new Error("缺少 OPENAI_API_KEY 或 OPENAI_BASE_URL 配置");
    }
 
 

posted on 2026-05-18 15:35  漫思  阅读(12)  评论(0)    收藏  举报

导航