Gemini 4 Carbon如何用JavaScript进行长输出并读取完整文本

作者:异步漫步

时间:2026-11-13

浏览:323

使用background、max_output_tokens与交互状态轮询,拼接model_output步骤文本,区分同步64K上限、统一窗口和思考预算。

文章目录

Gemini 4 Carbon如何用JavaScript进行长输出并读取完整文本?对于超过普通同步65,536 Token上限的任务,使用Interactions API的background模式,设置更高的max_output_tokens,轮询交互状态,并在结束后拼接各个model_output步骤的文本。只设置background但不提高预算,仍会在64K停止;只提高预算而不理解思考与输出共享额度,也不能保证最终可见文本达到指定长度。

Gemini 4 Carbon产品视觉

准备服务端Node.js环境

以下使用Node.js 22或更新版本与Google官方JavaScript SDK,代码在服务端执行,不把API密钥交给浏览器页面。需要具备Gemini API付费层访问的项目,模型ID为gemini-4-carbon。先在项目环境安装依赖:

npm install @google/genai

再在macOS、Linux或兼容Shell的当前终端设置密钥变量,替换YOUR_API_KEY:

export GEMINI_API_KEY="YOUR_API_KEY"

安装SDK只准备代码依赖,设置变量只提供认证材料;二者不会自动开通付费项目,也不会把Google AI Ultra应用订阅转换成API权限。真实密钥应保留在服务端运行环境中。

用后台交互让服务器执行长输出续接

将下面完整内容保存为carbon_long.mjs。示例采用262,144 Token上限与high思考级别,属于较大的任务预算;执行会发起真实付费模型调用,应根据实际任务决定是否需要该规模。

import { GoogleGenAI } from "@google/genai";

const apiKey = process.env.GEMINI_API_KEY;
if (!apiKey) {
  throw new Error("请设置GEMINI_API_KEY环境变量。");
}
const client = new GoogleGenAI({ apiKey });
let interaction = await client.interactions.create({
  model: "gemini-4-carbon",
  input: "编写一个数据库事务与重试设计手册,解释幂等性、锁、超时和恢复,并给出各自适用边界。",
  background: true,
  generation_config: {
    max_output_tokens: 262144,
    thinking_level: "high",
  },
});

while (interaction.status === "in_progress" || interaction.status === "queued") {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  interaction = await client.interactions.get(interaction.id);
}

const text = interaction.steps
  .filter((step) => step.type === "model_output")
  .flatMap((step) => step.content ?? [])
  .filter((content) => content.type === "text")
  .map((content) => content.text)
  .join("");
console.log(text);
console.log("Status:", interaction.status);
console.log("Usage:", interaction.usage);

在设置变量的同一终端执行:

node carbon_long.mjs

代码会保存首次返回的交互ID,在queued或in_progress期间每5秒查询该交互,结束后拼接文本并打印状态与用量。没有固定的输出字数或完成耗时保证;终止状态也需要实际查看,不能因为轮询循环结束就断定业务结果已经满足要求。

为什么要拼接model_output步骤

后台长输出由服务器按64K续接段继续生成,每一段会在interaction.steps中增加model_output步骤。对于这种结果,只读取某一个步骤可能遗漏其他段,因此示例按步骤筛选、提取文本内容并拼接。这里处理的是文本结果,不把工具调用或其他类型内容混进最终文字。

服务端续接与客户端轮询承担不同职责:续接推进生成,轮询取得同一交互的新状态。轮询不是再次create新任务,也不应因一次查询较慢就提交另一个相同长任务。需要更细致的重试、退避或不存储交互等控制时,属于另外的客户端续接设计。

预算上限包含思考,统一窗口还要容纳输入

Carbon的输入、思考与输出共享1,048,576 Token窗口。普通同步响应最多65,536 Token,长输出上限还要扣除输入占用。示例262,144并不是保留这么多可见答案字数,也不是要求模型必须把预算全部用尽。

max_output_tokens限制思考与输出合计。困难任务可能把更大比例用于分析、探索和验证;high通常使用更多Token、首个结果也更慢。low、medium与high各有适用任务,默认medium不意味着能力缺失。仅缩小预算,可能让任务在思考后留给答案的空间不足。

长输出适合任务需要,不等于输出越长越好

Gemini 4 Carbon演示的科学材料可视化应用

Carbon面向复杂软件工程、科学推理和多步骤知识任务。一个长任务是否值得使用后台执行,应以需要的完整内容和验收条件判断。最终文本仍需要检查结构、事实、代码和边界,不应把长输出能力当成正确性保证。

截至2026年11月30日,API首发价为每百万输入Token 2美元、输出Token 10美元,之后为4美元与20美元。长任务的思考与输出用量可能显著高于简短问答,因此应结合实际usage、延迟和优惠到期后的价格评估。应用端分批开放与Fairwind网络安全申请各有条件,不能代替这里的付费API项目资格。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›