@ai2070/l0

中文文档
0.26.1发布于 2026/06/29Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 1.4万

L0:AI的缺失可靠性底物

此软件包已被标记为弃用

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

中文使用文档
文档目录18 节
  1. 所有AI流缺少的可靠性和可观察性.
  2. 特征
  3. 快速启动
  4. 与 Vercel AI SDK: 最小使用
  5. Vercel AI SDK: 有可靠性
  6. 带有 OpenAI SDK
  7. 与马斯特拉AI
  8. 带有 Zod 的结构化输出
  9. 生命周期事件
  10. 倒置模型提供商( S)
  11. 并行执行
  12. 管道:流管
  13. 哲学
  14. Zod 验证程序Schemas
  15. 业绩
  16. 文档
  17. 支助
  18. 许可证

重命名注释 : 这个工程以前叫做L0. 软件包/存储器正在被重新命名为可靠的AI流. 现有进口仍然得到支持。 安装 : npm install reliable-ai-streams

L0 - AI 的定型流执行底物(DSES)

所有AI流缺少的可靠性和可观察性.

L0: The Missing AI Reliability Substrate

npm version minzipped size install size Types Included CI status Apache 2.0 License

LLMS在低集成运输层上产生高值推理. 流出摊位,放出活物,重排事由,违反定时保证,不暴露定时合同.

这破碎的复试。 它打破了监管。 它打破了再生产. 它使得可靠的AI系统无法在原始供应商流上再上架.

L0是固定运输的决定性执行底板——有专为流层设计的护栏:流中性,以图案为主,循环安全,有定时意识.

结果:生产级,完整性保护,决定性的AI流你终于可以建立真正的系统了.

和我们一起工作 开放AI, (中文(简体) ), 维塞尔 AI SDK, (中文(简体) ), 马斯特拉大赦国际,以及 自定义适配器支持 多式联运流,工具调用,并提供完整的决定重放.

npm install @ai2070/l0

也可在 Python 中找到: @ai-270. 可靠流派 uv add reliable-ai-streams-py - 实现全生命周期和事件签名均等.

生产等级可靠性. 只要通过你的溪流。 L0从这里接手.

L0包括涵盖所有主要可靠性特性的3,000+测试.

   Any AI Stream                    L0 Layer                         Your App
 ─────────────────    ┌──────────────────────────────────────┐    ─────────────
                      │                                      │
   Vercel AI SDK      │   Retry · Fallback · Resume          │      Reliable
   OpenAI / Mastra ──▶│   Guardrails · Timeouts · Consensus  │─────▶ Output
   Custom Streams     │   Full Observability                 │
                      │                                      │
                      └──────────────────────────────────────┘
 ─────────────────                                                ─────────────
  text / image /           L0 = Token-Level Reliability
  video / audio

即将推出的版本 :

  • 1.0.0 (单位:千美元) - API 冻结

特征

特性说明
智能检索型号意识回放与固定起跑回放. 自动重试 0-token 输出,网络摊位,SSE断开,以及提供者超载.
网络保护从掉落的溪流中自动恢复,反应缓慢,背景,429/503载弹板,DNS出错,以及部分块.
型号后退自动回落到二级型号(如:4o → 4o-mini → Claude/Gemini),并带有完全重试逻辑.
零托肯/整体保护检测模型在中游无产物或摊位时。 自动重试或切换为倒置.
📍 最后认识的好Token复出当一流中断时,L0从最后一个结构上有效的符号(opt-in)恢复生成.
* 漂流探测侦测到调子的变换,重复的句子,py尖,克克倒倒塌,以及腐败前的元-AI模式.
* 结构化产出与Zod(v3/v4),Effect Schema,或JSON Schema一起保证有效JSON. 自动校正缺失的牙套,逗号,和标记下栅栏.
JSON 自动愈合+Markdown栅栏修理自动校正已断接或变形的JSON(缺失牙套、括号、引文)并修复已断开的Markdown代码围栏。 确保从吵闹的LLM输出中干净取出结构化数据.
护栏JSON,Markdown,LaTeX,以及快/慢路径执行的图案验证. 只检查 Delta 运行同步; 完整内容扫描会延后到 async 以永远不阻断流出 .
QQ 比赛:最快的胜出模式并行运行多个模型或提供者并返回最快的有效流. 超低频聊天和高可用性系统的理想.
QQ 平行: 扇出/ 扇入同步启动多流并收集结构化或总结结果. 适合代理风格的多模式工作流程.
* 管道:流管以安全状态通过和每个阶段之间的护栏来组成多条流道(例如,总结-精细-翻译).
* 共识:跨模式协议利用一致的,加权的,或最匹配的共识,将多个模型输出结合起来. 保障安全关键任务产生高信心.
QQ 文档窗口内建块(收件,段落,句子,字符). 用于长文件、记录或多页处理.
QQ 格式化帮助从下行栅栏中提取出JSON/代码,脱去思维标记,使白相间正常,下行加工的LLM输出干净.
监测与OpenTeleometry和哨兵的内置集成,用于度量衡,跟踪和出错跟踪.
* 生命周期召回onStart, (中文(简体) ), onToken, (中文(简体) ), onEvent, (中文(简体) ), onCheckpoint, (中文(简体) ), onViolation, (中文(简体) ), onDrift, (中文(简体) ), onTimeout, (中文(简体) ), onRetry, (中文(简体) ), onFallback, (中文(简体) ), onResume, (中文(简体) ), onToolCall, (中文(简体) ), onAbort, (中文(简体) ), onError, (中文(简体) ), onComplete - 进入每个溪流阶段的完全可观察性.
流出- 第一个运行时间细而有决定力的包装 streamText() 具有统一事件类型( e)token, (中文(简体) ), error, (中文(简体) ), complete为方便UI.
原子事件日志记录每件证物,重试,倒置, 和护栏检查 作为不可改变的事件。 调试和合规的全部审计线索.
QQ 字节重放决定性地重放任何被记录的流来复制准确的输出. 适合测试和时间旅行调试.
安全- 第一个默认默认续出. 结构化物体从未恢复. 无有寂灭贪道. 正直总是得到维护.
细和清晰21KB克齐克核. 具有亚路径出口的可动摇树木(/core, (中文(简体) ), /structured, (中文(简体) ), /consensus, (中文(简体) ), /parallel, (中文(简体) ), /window) (中文(简体) ). 没有框架,没有沉重的抽象.
QQ 自定义适配器( BYOA)把任何LLM提供者的适配器带来 为Vercel AI SDK,OpenAI,和马斯特拉所建的内置适配器.
* 多式联运支助构建图像/音频/视频生成的适配器(FLUX.2,稳定分化,Veo 3,CSM). 进展跟踪、数据事件和对非文本产出的国家管理.
Nvidia Blackwell - 准备优化1000+令牌/流出. 准备进行下源GPU推导速度.
战斗测试3000+单元测试和250+集成测试验证了真实流,回流,和先进行为.

知道你在做什么吗? 跳过教程

快速启动

与 Vercel AI SDK: 最小使用

import { l0, recommendedGuardrails, recommendedRetry } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const result = await l0({
  // Primary model stream
  stream: () =>
    streamText({
      model: openai("gpt-5-mini"),
      prompt,
    }),
});

// Read the stream
for await (const event of result.stream) {
  if (event.type === "token") process.stdout.write(event.value);
}

Vercel AI SDK: 有可靠性

import { l0, recommendedGuardrails, recommendedRetry } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const result = await l0({
  stream: () => streamText({ model: openai("gpt-4o"), prompt }),
  fallbackStreams: [() => streamText({ model: openai("gpt-4o-mini"), prompt })],

  // Optional: Content-agnostic, text-based guardrails
  guardrails: recommendedGuardrails,

  // Optional: Retry configuration, default as follows
  retry: {
    attempts: 3, // LLM errors only
    maxRetries: 6, // Total (LLM + network)
    baseDelay: 1000,
    maxDelay: 10000,
    backoff: "fixed-jitter", // "exponential" | "linear" | "fixed" | "full-jitter"
  },
  // Or use presets:
  // minimalRetry       // { attempts: 2, maxRetries: 4, backoff: "linear" }
  // recommendedRetry   // { attempts: 3, maxRetries: 6, backoff: "fixed-jitter" }
  // strictRetry        // { attempts: 3, maxRetries: 6, backoff: "full-jitter" }
  // exponentialRetry   // { attempts: 4, maxRetries: 8, backoff: "exponential" }

  // Optional: Timeout configuration, default as follows
  timeout: {
    initialToken: 5000, // 5s to first token
    interToken: 10000, // 10s between tokens
  },

  onError: (error, willRetry) => console.log(`Error: ${error.message}`),
});

for await (const event of result.stream) {
  if (event.type === "token") process.stdout.write(event.value);
}

另见: API.md (英语) 对所有选项, 预 编 完整示例

带有 OpenAI SDK

import OpenAI from "openai";
import { l0, openaiStream, recommendedGuardrails } from "@ai2070/l0";

const openai = new OpenAI();

const result = await l0({
  stream: openaiStream(openai, {
    model: "gpt-4o",
    messages: [{ role: "user", content: "Generate a haiku about coding" }],
  }),
  guardrails: recommendedGuardrails,
});

for await (const event of result.stream) {
  if (event.type === "token") process.stdout.write(event.value);
}

与马斯特拉AI

import { Agent } from "@mastra/core/agent";
import { l0, mastraStream, recommendedGuardrails } from "@ai2070/l0";

const agent = new Agent({
  name: "haiku-writer",
  instructions: "You are a poet who writes haikus",
  model: "openai/gpt-4o",
});

const result = await l0({
  stream: mastraStream(agent, "Generate a haiku about coding"),
  guardrails: recommendedGuardrails,
});

for await (const event of result.stream) {
  if (event.type === "token") process.stdout.write(event.value);
}

带有 Zod 的结构化输出

import { structured } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";
import { z } from "zod";

const schema = z.object({
  name: z.string(),
  age: z.number(),
  occupation: z.string(),
});

const result = await structured({
  schema,
  stream: () =>
    streamText({
      model: openai("gpt-4o-mini"),
      prompt:
        "Generate a fictional person as JSON with name, age, and occupation",
    }),
  autoCorrect: true, // Fix trailing commas, missing braces, markdown fences
});

console.log(result.data); // { name: "Alice", age: 32, occupation: "Engineer" }

生命周期事件

import { l0 } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const result = await l0({
  stream: () => streamText({ model: openai("gpt-4o"), prompt }),

  onEvent: (event) => {
    if (event.type === "token") process.stdout.write(event.value || "");
    if (event.type === "error") console.error("Error:", event.error);
    if (event.type === "complete") console.log("\nDone!");
  },
});

for await (const _ of result.stream) {
  // Events already handled by onEvent
}

倒置模型提供商( S)

import { l0 } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";
import { anthropic } from "@ai-sdk/anthropic";

const result = await l0({
  // Primary model
  stream: () => streamText({ model: openai("gpt-4o"), prompt }),

  // Fallbacks: tried in order if primary fails (supports both model and provider fallbacks)
  fallbackStreams: [
    () => streamText({ model: openai("gpt-4o-mini"), prompt }),
    () => streamText({ model: anthropic("claude-sonnet-4-20250514"), prompt }),
  ],

  onFallback: (index, reason) => console.log(`Switched to fallback ${index}`),
});

并行执行

import { parallel } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const prompts = ["Name a fruit", "Name a color", "Name an animal"];

const results = await parallel(
  prompts.map((prompt) => ({
    stream: () => streamText({ model: openai("gpt-4o-mini"), prompt }),
  })),
  { concurrency: 3 },
);

results.results.forEach((r, i) => {
  console.log(`${prompts[i]}: ${r?.state.content.trim()}`);
});

管道:流管

import { pipe } from "@ai2070/l0";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const result = await pipe(
  [
    {
      name: "summarize",
      fn: (input) => ({
        stream: () =>
          streamText({
            model: openai("gpt-4o"),
            prompt: `Summarize: ${input}`,
          }),
      }),
    },
    {
      name: "translate",
      fn: (summary) => ({
        stream: () =>
          streamText({
            model: openai("gpt-4o"),
            prompt: `Translate to French: ${summary}`,
          }),
      }),
    },
  ],
  longDocument,
);

console.log(result.output); // French translation of summary

哲学

  • 没有魔法 - 一切都是明确和可预测的
  • 流动第一 - 为实时送信而建造
  • 信号,不是重写 - 护栏检测问题,不要修改输出
  • 模型不可知论 - 使用任何模型
  • 零依赖关系 - Vercel AI SDK、OpenAI SDK或Mastra AI只有(可选的)同伴依赖

套装大小( 最小) :

导入大小击出说明
@ai2070/l0 (满)191KB (英语)56个KB所有东西
@ai2070/l0/core71个KB21千贝运行时间 + 重试 + 错误
@ai2070/l0/structured61千贝18个KB结构化产出
@ai2070/l0/consensus72千贝21千贝多模式共识
@ai2070/l0/parallel58个KB17个KB平行/种族行动
@ai2070/l0/window62千贝18个KB文档块
@ai2070/l0/guardrails18个KB6个KB审定规则
@ai2070/l0/monitoring27个KB7千贝OTel/哨兵
@ai2070/l0/drift4个KB2个KB漂流探测
@ai2070/l0/zod12个KB4个KBZod 4 验证计划

无依无依. 树能震动的子路径出口 最小捆绑.

大多数应用程序只应使用 import { l0 } from "@ai2070/l0"。 。 。 . 只有针对边缘运行时间或严格的捆绑限制时,才能优化进口.

Zod 验证程序Schemas

L0 输出 Zod 4 计程器用于所有 L0 类型的运行时间验证 :

import {
  L0StateSchema,
  L0EventSchema,
  GuardrailViolationSchema,
} from "@ai2070/l0/zod";

// Validate runtime data
const state = L0StateSchema.parse(unknownData);

// Type-safe validation
const result = L0EventSchema.safeParse(event);
if (result.success) {
  console.log(result.data.type);
}

所有核心类型都可以使用图表: L0State, (中文(简体) ), L0Event, (中文(简体) ), L0Telemetry, (中文(简体) ), RetryOptions, (中文(简体) ), GuardrailViolation, (中文(简体) ), ConsensusResult, (中文(简体) ), PipelineResult还有更多.

业绩

Apple M1 Max, Node.js 24, 零延迟模拟流的基准(2000个令牌):

假设键/秒持续时间TTFT 电话
基线(流动)4,459,021人 (简体中文)0.45 分钟0.00毫秒( 0
L0 核心( 无特性)1 068 683美元 (单位:千美元)1.87毫秒(每秒)0.04分钟
L0 + JSON 护栏615 031 (中文(简体) )3.28 分钟0.20 毫秒( 0
L0 + 所有护卫337,174 (中文(简体) )5.93毫秒(每秒)0.08 毫秒(分钟)
L0 + 漂流检测609 546 (中文(简体) )3.37分钟0.07分钟
L0 完整堆栈259 478 (中文(简体) )7.73分钟0.08 毫秒(分钟)

全堆 = JSON + Markdown + 零输出护栏 + 漂移检测 + 检查. 见 银行 详细情况.

文档

指南说明
预 编高级用途
QUICKSTART.md (中文(简体) )5分钟开始
API.md (英语)完整 API 参考
警卫,md护卫和验证
组织结构图结构化产出指南
科宁苏尔多代共识
文档 WINDOWS.md文档分块指南
NETWORK 错误者. md网络错误处理
(原始内容存档于2019-10-21). Error Handling.md错误处理指南
实绩性能调谐
(原始内容存档于2012-10-10) (英语). Intercopers And PARALL.md拦截者和平行行动
监测.md遥测和计量
晚上,我们md记录/重播、审计线索
预测(md)格式化帮助
库斯通-阿帕德斯.md构建自己的适配器
穆利蒂姆多尔·姆德图像/音频/视频支持
决 定 :生命周期规格

支助

L0是独立开发和维护的. 如果您的公司依赖于L0或想要支持正在进行的开发(包括Python版本,网站docs,以及未来的工具),可以自由接触:

制造商[email protected]


许可证

阿帕奇 - 2.0

版本与发布记录

@ai2070/l0 共发布 29 个版本,首次发布于 2025/12/01;过去 12 个月发布了 29 个版本。

版本发布日期距今
0.26.1latest2026/06/294 个月前
0.26.02026/06/274 个月前
0.25.02026/04/306 个月前
0.24.42026/04/306 个月前
0.24.32026/04/296 个月前
0.24.22026/04/296 个月前

关于 @ai2070/l0 的常见问题

@ai2070/l0 是什么?

L0:AI的缺失可靠性底物注意:该包已被作者标记为弃用——Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

如何安装 @ai2070/l0?

在项目目录运行 npm install @ai2070/l0,或使用 pnpm add / yarn add / bun add。

@ai2070/l0 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ai2070/l0 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ai2070/l0 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ai2070/l0 可以商用吗?

@ai2070/l0 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@ai2070/l0 的下载量有多少?

根据 npm 官方下载统计,@ai2070/l0 在 2026/10/05 – 2026/11/03 这 30 天内被下载 13,950 次,日均约 465 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ai2070/l0 还在维护吗?

最新版本 0.26.1 发布于 2026/06/29(4 个月前);至今共发布 29 个版本,其中过去 12 个月发布了 29 个;首次发布于 2025/12/01。作者已将其标记为弃用,新项目建议寻找替代方案。