ax-llm/ax

The pretty much "official" DSPy framework for Typescript

Ax – 一个用于结构化 LLM 应用的多语言框架

它是什么 – Ax(发音为“ax‑llm”)是一个库,让你可以一次性描述与大语言模型(LLM)的类型化交互,并在多种语言中运行相同的代码:TypeScript/JavaScript、Python、Java、C++、Go 和 Rust。它提供了一个小型 DSL 来声明签名(输入输出模式),然后将该描述编译成特定语言的客户端库,这些库可以与任何受支持的提供商(OpenAI、Anthropic、Gemini 等)通信。

关键概念

  • 签名 – 使用字符串 DSL、流畅的 f() 构建器或任何 Standard Schema v1 验证器(Zod、Valibot、ArkType)声明请求/响应的形状。框架解析模型的输出并验证它,为你提供保证类型的结果。
  • 部署配置文件 – 命名配置文件(例如,openai、together、deepseek)封装了特定提供商的端点和连接。切换提供商只需一行更改。
  • 代理 – 长期运行、使用工具的执行者,具有记忆、检查点上下文和沙盒 JavaScript 执行。代理运行三阶段流水线:蒸馏器 → 执行器(RLM 循环)→ 响应器。
  • 流程 – 由 LLM 驱动的节点的类型化有向无环图。节点可以分支、循环、并行运行,框架会自动优化独立节点。
  • 优化器 – 内置支持少样本引导、GEPA 和可重用的优化器工件。
  • 跨语言核心 – 相同的 Ax IR 被编译成每种目标语言的本地包。源 TypeScript 包(@ax-llm/ax)是规范实现;生成的 Python(axllm)、Java(dev.axllm:ax)、C++(axllm::axllm)、Go 和 Rust crate 都检入到仓库中。

如何使用(TypeScript 示例)

import { ai, ax } from "@ax-llm/ax";

const llm = ai({ name: "openai", apiKey: process.env.OPENAI_APIKEY });

const classify = ax(
  'review:string -> sentiment:class "positive, negative, neutral"'
);

const { sentiment } = await classify.forward(llm, {
  review: "This product is amazing!"
}); // sentiment 的类型为 "positive" | "negative" | "neutral"

相同的签名可以在 Python、Java 等语言中运行,语义完全相同。

重要特性

  • 零提示工程 – DSL 自动生成提示。
  • 默认流式传输 – 结果在到达时解析,允许早期验证和取消。
  • 类型化多模态 I/O – 支持 image、audio、file 字段以及文本。
  • 工具(ReAct)集成 – 声明模型可以调用的函数。
  • 沙盒 JS 运行时 – 代理在具有细粒度权限的强化环境中执行生成的 JavaScript。
  • 记忆与技能 – 代理可以在运行期间查询向量存储或技能库。
  • 性能感知 – 热路径是提供商 SDK 的薄包装;基准测试显示延迟接近原始调用。

入门指南

  • 通过 npm 安装 TypeScript 包(npm i @ax-llm/ax)。
  • 使用 npm run example -- <language> <path> 运行捆绑示例(例如,npm run example -- python src/examples/python/generation/axgen-openai.py)。
  • 对于其他语言,添加已发布的包(pip install axllm、Maven Central、crates.io 等)并导入相同的符号(ai、ax、agent、flow)。

适用人群

  • 构建生产级 LLM 服务的开发者,他们希望跨语言获得类型安全。
  • 需要单一事实来源来管理模型契约,并希望无需更改代码即可切换提供商的团队。
  • 需要具有记忆、工具使用和沙盒执行的代理的项目。

链接


以上所有细节均直接取自仓库的 README。

相关

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