@wrenautomation/models

中文文档
0.30.6发布于 2026/11/03PolyForm-Strict-1.0.0TypeScriptES Module构建来源已验证

每个模型都有一扇门:模型接受文本,图像,视频,音频和PDF部分,回答文本,令牌和美元,并将答案解析为zod形状。适配器Anthropic, Gemini, Cohere,任何openai兼容的服务器和shell命令(claude -p);e

中文使用文档
文档目录5 节
  1. 使用
  2. 错误
  3. 价格
  4. 为什么要使用AI SDK
  5. 开发

模型

雷恩的仓库里每个模特都有一扇门。一个 Model 采用文本,图像,视频,音频和PDF格式 部分。它会用文本、代币、美元和为什么停止来回答。 ask 解析一个选项的答案 当答案不合适时,再问一遍。

规则:调用模型的代码通过这个包调用它。一个新的供应商,一个新的零件种类或者 新的价格在这里,从来没有在打电话的人。没有警卫强制这样做;这份文件和雷恩的 designs/2026-10-26-research-engine.md 记录它。

进口做运行在
@wrenautomation/modelsModel, Part, Usage; anthropic, gemini, cohere, compatible (Groq, OpenRouter, Mistral, Cerebras, OpenAI), gateway; rotating 关键的戒指, fallback 模型秩序, geminiLiveKeys, geminiFile (文件API上传); fakeModel, scriptedModel; 的错误节点,工人
@wrenautomation/models/hear语音对文本: groqEar, cohereEar, compatibleEar (任何 /audio/transcriptions 服务器); fakeEar节点,工人
@wrenautomation/models/prices一个价格表: MODEL_PRICES, SPEECH_PRICES, priceUsd, priced, speechUsd, addUsage, pricesText节点,工人
@wrenautomation/models/commandshell命令作为模型(commandModel),有关订阅的克劳德守则(claudeCode)节点
@wrenautomation/models/spec来自设置字符串的模型: modelFromSpec("anthropic:sonnet", env)节点
@wrenautomation/models/judge评委:打印问题(noul 是或不是, choice, score)回答每个标签的概率,没有文本; jevJudge (类型安全的Jev, TYPESAFE_API_KEY; Laya与 TYPESAFE_BASE_URL), judgeFromSpec("jev", env), fakeJudge, judgeFailure, top。一个暗示或路由器,绝不是最后决定节点,工人

使用

import { anthropic, fallback, gemini } from "@wrenautomation/models";
import { z } from "zod";

const claude = anthropic({ key: [key1, key2], model: "sonnet" });
const { value, usage } = await claude.ask("Name three colours.", z.object({ colours: z.array(z.string()) }));
// usage: { input, output, cacheRead?, cacheWrite?, usd }

const eyes = gemini({ key: geminiKeys });
const reply = await eyes.complete({
  prompt: [
    { type: "text", text: "What is on this slide?" },
    { type: "image", data: pngBytes, mediaType: "image/png" },
  ],
  effort: "low",
});

// A stretch of a YouTube video, sampled at one frame per 2 s, at low resolution.
const clip = await eyes.complete({
  prompt: [
    { type: "video", data: new URL(youtubeUrl), mediaType: "video/mp4", clip: { startS: 60, endS: 90, fps: 0.5 } },
    { type: "text", text: "What is said and shown?" },
  ],
  resolution: "low",
});

// Newest model first; each call starts at the top and moves down past a busy or refused one.
const reader = fallback([gemini({ key, model: "gemini-3.8-flash" }), gemini({ key })], { passes: 4 });

Gemini在generateContent上读了一段剪辑视频: withClips 添加了 videoMetadata 输入SDK 不发送。Interactions API也会读取一段时间,但在自由键上,它的闪存配额被消耗掉了 立即(见2026-10-27;flash-lite回答)。

如果文件太大,无法以内联方式发送,将使用 geminiFile。它在一个键的项目中,所以 读它的 part 戴着双子座的模特 file.key 独自一人,然后 file.drop().

规范字符串: fake, claude-code[:model], anthropic[:haiku|sonnet|opus|id], gateway[:alias], gemini[:id], cohere[:id], groq|openrouter|mistral|cerebras|openai[:id], command:<shell command>. 钥匙来自 <VENDOR>_API_KEY,或者戒指 NUM_<VENDOR> + <VENDOR>_API_KEY_1..n.

错误

每个错误都说明调用者下一步要做什么。每张支票(isTransient, isCut)也匹配by 名称,以便保存此包的两个副本的主机仍然对它们进行排序。

错误当下一个
Transient408,429,5xx,连接断开,超时等待 retryAfter再试一次
Refused401, 402, 403钥匙圈移动到下一个键
InputRejected400, 413, 422更改请求
Unsupported部分类型的模型不采取选择另一个模型;零件从不掉落
Cut输出帽停止了应答partial 保存文本到目前为止, usage 其成本
Filtered卖主自己停止了回答(双子座的) RECITATION, SAFETY(运行失败)stop 说的;换句话说
NoAnswerask 修复后没有发现形状相同的物体issues 说为什么

钥匙圈会立即跳过拒绝键或忙键,并在以后的呼叫中跳过拒绝键。当每个键都忙时,它等待2秒 翻倍到30秒 passes 通过(默认1)。SDK内的重试关闭。错误永远不会携带钥匙:一个附和它的供应商(双子座) 在一个悬着的钥匙上,它被熄灭了吗 [key].

价格

美元/百万代币,截至 PRICES_AS_OF。呼叫自由钥匙圈(Cohere, Gemini, Groq, OpenRouter :free,门户。 free,克劳德代码的订阅)记录 usd: 0, free: true, listUsd (这要花多少钱)。人为缓存写入是1.25倍的输入 (5分钟)或2x(1小时);读取是0.1倍(Opus 5.5为0.05倍)。俳句5.5分为两层 提示超过10万代币的价格为5倍。Jev只需要输入:它的答案是免费的。一个没有 Row保留它的令牌并且没有 usd.

来源:Anthropic的定价页面;从activepieces.com和pricepertoken.com凝聚;Groq从 groq.com/pricing;来自anotherwrapper.com和benchlm.ai的Gemini;来自typesafe的Jev。

为什么要使用AI SDK

适配器位于 AI SDK 7 (Apache 2.0):一个调用人形Anthropic, 谷歌,Cohere和每个openai兼容的服务器,每个供应商的媒体部件和令牌细节。 其他选择是每个供应商自己的SDK(四种调用形式和四种使用格式)和 平原 fetch (每条线格式手工保存)。此包只添加SDK遗漏的内容: 错误按下一步要做的事情、钥匙圈、价格、带修复的解析和语音进行排序。

开发

pnpm install
pnpm lint && pnpm typecheck && pnpm test

一、 v* 标签向NPM发布(.github/workflows/release.yml可信发布:不存储令牌)。

许可证:PolyForm Strict 1.0.0 (LICENSE.md)。

版本与发布记录

@wrenautomation/models 共发布 42 个版本,首次发布于 2026/10/28;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.30.6latest2026/11/03今天
0.30.52026/11/03今天
0.30.42026/11/03今天
0.30.32026/11/03今天
0.30.22026/11/02今天
0.30.12026/11/02今天

关于 @wrenautomation/models 的常见问题

@wrenautomation/models 是什么?

每个模型都有一扇门:模型接受文本,图像,视频,音频和PDF部分,回答文本,令牌和美元,并将答案解析为zod形状。适配器Anthropic, Gemini, Cohere,任何openai兼容的服务器和shell命令(claude -p);e

如何安装 @wrenautomation/models?

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

@wrenautomation/models 支持 TypeScript 吗?

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

@wrenautomation/models 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@wrenautomation/models 需要什么版本的 Node.js?

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

@wrenautomation/models 可以商用吗?

@wrenautomation/models 使用 PolyForm-Strict-1.0.0 许可。声明的许可为 PolyForm-Strict-1.0.0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@wrenautomation/models 还在维护吗?

最新版本 0.30.6 发布于 2026/11/03(今天);至今共发布 42 个版本,其中过去 12 个月发布了 42 个;首次发布于 2026/10/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。