重命名注释 : 这个工程以前叫做L0. 软件包/存储器正在被重新命名为可靠的AI流. 现有进口仍然得到支持。 安装 :
npm install reliable-ai-streams
L0 - AI 的定型流执行底物(DSES)
所有AI流缺少的可靠性和可观察性.

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/core | 71个KB | 21千贝 | 运行时间 + 重试 + 错误 |
@ai2070/l0/structured | 61千贝 | 18个KB | 结构化产出 |
@ai2070/l0/consensus | 72千贝 | 21千贝 | 多模式共识 |
@ai2070/l0/parallel | 58个KB | 17个KB | 平行/种族行动 |
@ai2070/l0/window | 62千贝 | 18个KB | 文档块 |
@ai2070/l0/guardrails | 18个KB | 6个KB | 审定规则 |
@ai2070/l0/monitoring | 27个KB | 7千贝 | OTel/哨兵 |
@ai2070/l0/drift | 4个KB | 2个KB | 漂流探测 |
@ai2070/l0/zod | 12个KB | 4个KB | Zod 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,以及未来的工具),可以自由接触:
许可证
阿帕奇 - 2.0