growthxai/output

The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code describe what you want, Claude builds it, with all the best practices already in place.

Output – 用于 AI 工作流和代理的 TypeScript 框架

它是什么 – 一个开源 TypeScript SDK,可让您定义、运行和监控端到端的 LLM 驱动工作流。它捆绑了提示管理、评估、追踪、成本核算和编排(通过 Temporal),因此您可以将整个 AI 堆栈保留在代码库中。


核心概念

概念 重要性
AI 为 AI – 该框架的构建使得 Claude Code(或类似的编码代理)可以读取工作流文件夹、生成代码并自动迭代。 对于让 LLM 编写自己的管道的团队,可加快“提示到生产”的循环。
提示文件 – 带有 YAML 前置元数据和 Liquid 模板的 .prompt 文件是版本控制的,并且与提供商无关。 使提示像任何其他源文件一样可审查,并允许您通过一行代码切换模型。
自动追踪 – 每次 LLM 调用、HTTP 请求、令牌计数、延迟和成本都会写入 logs/runs/。 为调试和编码代理推理失败提供单一事实来源。
LLM 作为评判者的评估器 – 内置评估器返回带有置信度分数和推理的布尔结果。 支持确定性重试循环和模型输出质量的离线测试。
提供商无关的 LLM 层 – Anthropic、OpenAI、Azure、Vertex AI、Bedrock 共享相同的 API 表面。 避免供应商锁定,并允许您在不更改代码的情况下在模型之间切换。
Temporal 编排 – 工作流是确定性协调代码;步骤执行 I/O 并缓存以供重放。 处理重试、并行、子工作流和历史记录,而无需您自己管理工作流引擎。
加密凭据 – 按环境/工作流范围的 AES-256-GCM 加密,通过 CLI 管理。 在共享代码或 AI 代理运行代码时防止意外泄露秘密。

主要包(npm)

包 角色
@outputai/core 原语:workflow、step、evaluator 定义。
@outputai/llm 多提供商 LLM 客户端、提示加载、流式传输、工具调用。
@outputai/cli 项目脚手架、本地开发服务器(Temporal + API + UI)、工作流运行/调试命令。

工作流的样子

// src/workflows/research/workflow.ts
workflow({
  name: 'research',
  fn: async (input) => {
    const data = await gatherSources(input);
    const analysis = await analyzeContent(data);
    const quality = await checkQuality(analysis);
    return quality.passed ? analysis : await reviseContent(analysis, quality);
  }
});

workflow – 确定性编排,无副作用。

// src/workflows/research/steps.ts
step({
  name: 'gatherSources',
  fn: async (input) => {
    const results = await searchApi(input.topic);
    return { sources: results };
  }
});

step – 执行 I/O;结果缓存以供重放。

---
provider: anthropic
model: claude-sonnet-4-20250514
temperature: 0
---
<system>You are a research analyst.</system>
<user>Analyze the following sources about {{ topic }}: {{ sources }}</user>

.prompt – YAML 前置元数据配置 + Liquid 变量。

// src/workflows/research/evaluators.ts
evaluator({
  name: 'checkQuality',
  fn: async (content) => {
    const { output } = await generateText({
      prompt: 'evaluate_quality',
      variables: { content },
      output: Output.object({
        schema: z.object({
          isQuality: z.boolean(),
          confidence: z.number().describe('0-100'),
          reasoning: z.string()
        })
      })
    });
    return new EvaluationBooleanResult({
      value: output.isQuality,
      confidence: output.confidence,
      reasoning: output.reasoning
    });
  }
});

evaluator – LLM 作为评判者,返回结构化结果。


快速入门(快速步骤)

  1. 先决条件 – Node 20+、Docker Desktop、Anthropic/OpenAI 等 API 密钥。
  2. 搭建新项目:
    npx @outputai/cli init
    cd <project-name>
    
  3. 启动本地开发堆栈(Temporal 服务器 + UI + 热重载工作器):
    npx output dev
    
  4. 运行示例工作流,例如博客评估器:
    npx output workflow run blog_evaluator paulgraham_hwh
    
  5. 检查执行或使用 output workflow debug <id> 进行调试。

完整文档在 docs/guides/start-here/getting-started.mdx。


示例工作流画廊

配套仓库 output-examples 提供了可立即运行的工作流,例如:

  • blog_evaluator – 博客文章质量评分(使用 Jina Reader)。
  • call_scorer – 根据 MEDDIC/BANT/SPIN 对销售电话记录进行评分。
  • changelog_generator – 将 GitHub 提交/PR 转换为分类变更日志。
  • dependency_audit – 通过 OSV 扫描 npm 包漏洞。
  • recipe_extractor、url_summarizer、youtube_summarizer – 内容提取和摘要。
  • ai_hn_digest – 发布到 Beehiiv 的个性化 Hacker News 通讯。
  • sales_call_processor – 电话记录的多步骤处理。

所有工作流都可以克隆、编辑并在本地运行,以查看框架的实际效果。


谁在使用它?

  • CheckThat.ai – 一个 AI 增强的品牌监控平台,运行基于 Output 构建的确定性 LLM 工作流,跟踪数百万条 AI 生成的品牌提及。

何时选择 Output

  • 您想要一个代码优先的堆栈,用于提示、追踪、评估和编排。
  • 您的团队(或 LLM 编码代理)需要自动生成或修改工作流。
  • 您需要与供应商无关的 LLM 调用,以及一种无需代码更改即可切换提供商的方式。
  • 您需要可靠的重试、并行和重放 – Temporal 在底层处理这些。
  • 您更喜欢自托管秘密管理,而不是单独的金库服务。

许可证

Apache 2.0 – 免费用于商业和开源用途。


底线 – Output 是一个全栈、TypeScript 优先的框架,统一了 LLM 应用程序的不同部分(提示、运行、成本、评估),并增加了生产级工作流编排,使人类工程师和 AI 编码代理都能更轻松地构建、测试和交付 AI 驱动的产品。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目