登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  科技周边 >  人工智能

用 DeepSeek API 从零写一个流式摘要小工具:Node.js 命令行版

来源:17golang原创

时间:2026-07-01 11:54:19 154浏览 收藏

很多 AI 小工具不需要一开始就做成完整网站。比如“把一段长文本压缩成 5 条摘要”,用命令行就能快速验证:输入文本文件,调用模型,边生成边显示结果,最后把摘要保存下来。这篇文章用 DeepSeek API 和 Node.js 从零写一个流式摘要小工具,重点放在能跑、能看见输出、能处理失败。

根据 DeepSeek API Docs,DeepSeek API 使用兼容 OpenAI/Anthropic 的接口格式;在 OpenAI 格式下可以访问 https://api.deepseek.com,并通过 /chat/completions 发起对话请求。官方文档也提示旧模型名 deepseek-chatdeepseek-reasoner 将在 2026-07-24 15:59 UTC 弃用,所以新项目建议优先选择文档里的 deepseek-v4-prodeepseek-v4-flash

目录
  • 项目目标:一个能边输出边摘要的 CLI
  • 环境准备:密钥、依赖和输入文件
  • 核心代码:读取文本并请求模型
  • 本地运行:从文件到流式输出
  • 部署和集成:把小工具接进工作流
  • 验收清单:怎么确认它真的可用
  • 总结

项目目标:一个能边输出边摘要的 CLI

我们要做的工具很小,目标也很明确:

  • 从本地文件读取一段长文本。
  • 调用 DeepSeek API 生成中文摘要。
  • 使用流式响应,让用户不用等完整结果才看到输出。
  • 最后把生成内容保存成 summary.md

这个项目适合作为 AI 应用的第一步:你可以先验证提示词、模型响应速度和错误处理,再决定要不要扩展成网页、接口服务或自动化任务。

DeepSeek 流式摘要小工具时间线:读取文件、提交请求、流式输出、保存摘要

环境准备:密钥、依赖和输入文件

先准备一个空目录,并安装 OpenAI 兼容 SDK:

mkdir ai-summary-cli
cd ai-summary-cli
npm init -y
npm install openai

然后设置环境变量。密钥不要写进代码,也不要提交到仓库:

export DEEPSEEK_API_KEY="你的 DeepSeek API Key"

准备一个输入文件 input.txt,里面放需要摘要的内容。第一次测试建议用几百到一两千字,不要上来就塞超长文档,这样更容易观察请求、输出和失败提示。

核心代码:读取文本并请求模型

新建 summarize.mjs,代码如下:

import OpenAI from "openai";
import fs from "node:fs/promises";

const apiKey = process.env.DEEPSEEK_API_KEY;

if (!apiKey) {
  console.error("请先设置 DEEPSEEK_API_KEY");
  process.exit(1);
}

const client = new OpenAI({
  apiKey,
  baseURL: "https://api.deepseek.com"
});

const inputPath = process.argv[2] || "input.txt";
const outputPath = process.argv[3] || "summary.md";
const sourceText = await fs.readFile(inputPath, "utf8");

const stream = await client.chat.completions.create({
  model: "deepseek-v4-flash",
  stream: true,
  messages: [
    {
      role: "system",
      content: "你是一个严谨的中文摘要助手,只输出摘要,不补充无关内容。"
    },
    {
      role: "user",
      content: `请把下面内容整理成 5 条要点,并保留关键数字和结论:\n\n${sourceText}`
    }
  ]
});

let result = "";

for await (const chunk of stream) {
  const delta = chunk.choices?.[0]?.delta?.content || "";
  if (!delta) continue;
  process.stdout.write(delta);
  result += delta;
}

await fs.writeFile(outputPath, result + "\n", "utf8");
console.log(`\n\n已保存到 ${outputPath}`);

这里有三个关键点:第一,baseURL 指向 DeepSeek 的 OpenAI 兼容入口;第二,stream: true 打开流式响应;第三,循环里每拿到一段内容就打印出来,同时拼接到最终结果里。

本地运行:从文件到流式输出

运行命令:

node summarize.mjs input.txt summary.md

正常情况下,终端会边生成边显示摘要,结束后看到“已保存到 summary.md”。如果没有输出,先检查三个地方:

  • DEEPSEEK_API_KEY 是否已经设置。
  • input.txt 是否存在且有内容。
  • 当前网络是否能访问 API 地址。

DeepSeek 摘要工具运行检查:环境变量、输入文件、流式输出、保存结果和错误分支

部署和集成:把小工具接进工作流

命令行工具最适合先接入低风险流程。例如:

  • 把会议纪要草稿整理成 5 条待办。
  • 把技术文档压缩成阅读提纲。
  • 把客服反馈整理成问题分类。
  • 把日志说明转换成排查清单。

如果后续要集成到后台任务或网页接口里,建议先补三件事:限制输入长度、记录请求耗时、给失败场景返回清晰提示。不要把用户隐私、生产密钥、内部合同等敏感内容直接送给模型;确实要处理内部文本时,先做脱敏和权限控制。

验收清单:怎么确认它真的可用

上线前可以按这张清单验收:

  • 结果可读:摘要是不是 5 条,是否保留了关键数字和结论。
  • 输出可见:终端是否能看到流式输出,而不是一直空等。
  • 失败清楚:没有密钥、文件不存在、网络异常时,提示是否明确。
  • 文件落盘:summary.md 是否正常生成,内容是否和终端一致。
  • 安全边界:是否避免把密钥和敏感数据写入代码或仓库。

总结

这个小项目把 AI 应用最核心的链路跑通了:读入文本、组织提示词、调用 DeepSeek API、流式显示结果、保存摘要。它足够小,适合快速验证;也足够完整,后续可以扩展成网页摘要、批量处理、定时任务或文档归档流程。真正落地时,别只关注模型回答,还要把输入长度、失败提示、权限边界和敏感信息处理一起设计进去。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>