Adaline Gateway
一个完全本地运行的生产级 Super SDK,用统一、强类型的 TypeScript 接口调用 300+ 个大语言模型。
作为一个纯本地 LLM 网关 SDK,权限面较窄:仅向用户显式配置的提供商端点发起 HTTP 请求,无代理、无遥测外发默认(OpenTelemetry 为可选集成)。扣分点:无用户确认机制(库形态下相关性弱但未说明)、敏感数据处理仅靠声明,且 Anthropic 测试中出现 'anthropic-dangerous-direct-browser-access: true' 默认头,浏览器直连场景的密钥暴露风险未讨论;回滚仅在发布工作流中以 PR 形式间接存在,无消费端回滚指引;发布工作流将 NPM_TOKEN 写入 .npmrc 文件并使用 continue-on-error,属于可指出的卫生缺陷。来源归属清晰(LICENSE、author、repository 字段),但发布者身份未经注册表验证。
自洽性较好:README 示例与 @adaline/types 的类型体系一致;但 README 自身存在矛盾——开头写 'more than 300+ LLMs',而提供商表仅列约 12 家提供商的模型,任务描述又称 '200+',数字口径不一。依赖可用性依赖各 LLM 提供商在线,SDK 有重试/退避/超时机制(队列测试覆盖)。失败信息是亮点:GatewayError、InvalidMessagesError 等类型化错误且测试断言了具体消息内容。
面向 TypeScript/Node>=18 开发者,场景(chat/embedding/工具调用/流式)描述清楚,模型 schema 暴露 maxTokens、modalities、roles 等能力边界,环境适配声称同构(isomorphic)。扣分:触发精度对库形态基本不适用(1 分),浏览器端安全影响未说明,PDF 等模态不支持仅从测试推断而非文档声明。
信息架构优秀:README 结构清晰,pnpm monorepo(turbo + changesets)布局规范,安装说明明确区分核心包与可选提供商包,示例丰富(含注释的完整 quickstart),MIT LICENSE 全文在库,版本管理有 changesets + 受 semver 校验的发布工作流。扣分点:known_limitations 仅 1 分——README 没有任何局限性章节,且营销性表述('production-ready and trusted by enterprises'、'the only fully local Super SDK')无支持材料;命名稳定性依赖 npm 包 @adaline/* 但无弃用政策说明;维护责任仅有一个具名维护者邮箱,无治理文件。
输出可用性强:completeChat 返回结构化结果(provider 请求/响应、缓存标志、延迟、usage),getChatUsageCost 提供分层计费成本计算且有细致的单元测试(分层定价、精度、边界)。边际价值:统一 300+ 模型接口是真实价值,但该领域竞争激烈(LiteLLM、Vercel AI SDK 等)且 README 未做对比论证。成本收益:纯本地无按调用收费,插件化设计降低集成成本,理由充分。
事实可追溯性尚可:代码与测试相互印证(队列行为、配置转换、错误类型均有测试),schema 可通过 chatModelSchemas() 程序化验证。跨源印证弱:'trusted by enterprises'、'300+ LLMs'、'production-grade' 等关键主张在提供的文件内无独立佐证。事实与推断的区分尚可:示例中的字段结构可核验,但 README 的营销断言与可验证的技术内容混杂,未做标注。置信度为低,本次为静态源码审查,未执行任何代码。
- README 中 '300+ LLMs' 与任务描述 '200+' 及提供商表实际条目不一致,使用前应自行核实实际支持的模型数量。
- Anthropic 提供商默认发送 'anthropic-dangerous-direct-browser-access: true' 头,若在浏览器端使用,API 密钥将暴露给终端用户,需自行评估。
- 'trusted by enterprises'、'production-grade' 等营销声明缺乏仓库内证据,不应作为采用依据。
- 发布流程将 NPM_TOKEN 写入 .npmrc 且发布步骤 continue-on-error,供应链依赖 npm 发布完整性,建议消费端锁定版本并校验完整性。
- 无已知局限性文档;PDF 等模态不支持的信息只能从测试推断,选型前应逐模态验证。
- 本评估为静态源码审查(置信度低),未执行任何测试或请求。
这个 Agent 能做什么,适合哪些场景?
Adaline Gateway(GitHub: adaline/gateway)是一个可发布到 npm 的 TypeScript 库,提供统一的接口来调用 300 多个 LLM 聊天和嵌入模型。它不是代理服务:SDK 完全在本地运行,可部署到任何环境,同时保证数据私有。核心类 Gateway 暴露 completeChat、streamChat 和 getEmbeddings 方法,内部自动完成批处理、带指数退避的重试、缓存、回调以及 OpenTelemetry 埋点。提供商以可插拔包的形式提供(如 @adaline/openai、@adaline/anthropic、@adaline/google、@adaline/bedrock),也支持自定义 OpenAI 兼容提供商。所有请求和响应通过 @adaline/types 中的强类型(MessageType、ConfigType、ToolType 等)在 Gateway 模式与各提供商模式之间自动转换。代码库采用 MIT 许可证,README 声称其已达到生产级并被企业采用。
安装 @adaline/gateway、@adaline/types 和所需提供商包后,开发者实例化 Gateway 和提供商对象(如 new OpenAI()),并通过 openai.chatModel({ modelName: "gpt-4o", apiKey }) 构建模型句柄。调用 gateway.completeChat(非流式)或 gateway.streamChat(流式)时会传入 model、ConfigType(temperature、maxTokens 等)、MessageType 数组和 ToolType 定义;Gateway 会将消息、角色(如把 assistant 映射为 Google 的 model)和工具调用转换为每个提供商的原生 HTTP API,并返回规范化结果,包含 response.usage(promptTokens/completionTokens/totalTokens)、原始 provider.request/provider.response、cached 标志和 latencyInMs。gateway.getEmbeddings 使用 EmbeddingRequestsType 从 OpenAI、Azure OpenAI、Google Vertex、xAi、Voyage 等提供商生成嵌入。openai.chatModelSchemas() 等方法以编程方式公开每个模型的配置模式和能力(maxInputTokens、modalities、roles)。
- 需要在不重写集成代码的情况下更换或对比 OpenAI、Anthropic、Google、Bedrock 等提供商的 TypeScript 团队
- 希望在进程内获得重试、批处理、缓存和 OpenTelemetry 追踪,而不添加代理服务或额外网络跳点的平台工程师
- 构建使用函数调用工具的智能体开发者,希望获得统一的 ToolType/工具响应抽象
- 通过自定义 OpenAI 兼容提供商接入本地或私有模型,同时保留 SDK 全部内置能力的团队
- 需要一个接口同时处理聊天补全与文本嵌入(text-embedding-3-large 等)的应用开发者
- 希望通过回调钩子对每次 LLM 调用进行埋点,或为缓存、日志和 HTTP 客户端接入自定义插件的企业
这个 Agent 有哪些优点和局限?
- 完全本地且非代理:SDK 在你的进程内运行,可将请求直接发往提供商,保持隐私并避免额外的代理基础设施
- 内置批处理、带指数退避的自动重试、缓存、回调钩子和 OpenTelemetry 集成,免去自建这些横切能力
- 用单一强类型 API(completeChat/streamChat/getEmbeddings)覆盖 300+ 模型,提供商之间自动转换角色、内容和工具调用
- 可通过自定义插件(缓存、日志、HTTP 客户端)和自定义 OpenAI 兼容提供商进行扩展
- MIT 许可证,npm 上的类型化、同构(isomorphic)TypeScript 包
- 需要自己持有并管理每个提供商的 API 密钥,且按提供商价格付费;SDK 本身不提供模型额度
- 提供商支持不均衡:例如 Anthropic、Groq、Together AI、AWS Bedrock 文档标记为不支持嵌入模型,Voyage 仅支持嵌入
- 将应用绑定到 Adaline 特有的类型系统(ConfigType、MessageType、ToolType)和 @adaline/* 包生态,构成迁移成本
- README 对错误处理语义、可观测性配置细节和插件 API 着墨很少,采用前可能需要阅读源码
- 运行时需要 Node.js/npm 环境;数据来源未提供浏览器或其他 JS 运行时的具体支持证据(仅泛称 isomorphic)
如何安装或部署这个 Agent?
需要 Node.js/npm 环境和提供商 API 密钥。安装核心包:npm install @adaline/gateway @adaline/types。按需安装可选的提供商包,例如:npm install @adaline/openai @adaline/anthropic @adaline/google @adaline/open-router @adaline/bedrock。
如何使用这个 Agent?
1) 导入并实例化:import { Gateway } from "@adaline/gateway"; import { OpenAI } from "@adaline/openai"; const gateway = new Gateway(); const openai = new OpenAI(); 2) 用 API 密钥创建模型:const gpt4o = openai.chatModel({ modelName: "gpt-4o", apiKey: OPENAI_API_KEY }); 3) 解析配置并构建消息:const config = Config().parse({ temperature: 0.7, maxTokens: 300 }); 4) 非流式调用:await gateway.completeChat({ model: gpt4o, config, messages, tools: [] }),或通过 gateway.streamChat 用 for await 循环消费流式分块。嵌入场景:openai.embeddingModel({ modelName: "text-embedding-3-large", apiKey }) 后调用 gateway.getEmbeddings({ model, config, embeddingRequests })。可用 openai.chatModelLiterals() 和 openai.chatModelSchemas() 枚举已支持的模型及其配置模式。
这个 Agent 与同类方案有什么区别?
README 将自身定位为面向 300+ LLM 的统一 Super SDK,隐含的替代品是各提供商的原生 SDK(如 OpenAI 或 Anthropic 官方包)以及代理类 LLM 网关;Adaline Gateway 的差异化在于完全本地、非代理、多提供商统一接口加内置重试/缓存/遥测。来源中未提及具体竞品名称。