# @wrenautomation/models 中文文档

规范地址：https://npmcn.com/package/%40wrenautomation/models/

版本：0\.30\.6
npm 元数据更新时间：2026-11-02T22:15:50.172Z
中文译文更新时间：2026-11-02T22:23:11.709Z
软件包许可：PolyForm-Strict-1\.0\.0

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40wrenautomation/models
原文对照：https://npmcn.com/package/%40wrenautomation/models/?lang=original
项目主页：https://github.com/wrenautomation/engine#readme
源码仓库：https://github.com/wrenautomation/engine

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：151 kB，45 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：7 个
- 首次发布：2026-10-27T23:39:21.042Z
- 最新版本发布：2026-11-02T22:15:49.822Z
- 已发布版本数：42（近 12 个月 42 个）

## 中文简介

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

## 安装

```sh
npm install @wrenautomation/models
```

也可以使用：`pnpm add @wrenautomation/models`、`yarn add @wrenautomation/models`、`bun add @wrenautomation/models`

## README

# 模型

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

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

| 进口 | 做 | 运行在 |
| --- | --- | --- |
| `@wrenautomation/models` | `Model`， `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/command` | shell命令作为模型(`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`。一个暗示或路由器，绝不是最后决定 | 节点,工人 |

## 使用

```ts
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 名称，以便保存此包的两个副本的主机仍然对它们进行排序。

| 错误 | 当 | 下一个 |
| --- | --- | --- |
| `Transient` | 408,429,5xx，连接断开，超时 | 等待 `retryAfter`再试一次 |
| `Refused` | 401, 402, 403 | 钥匙圈移动到下一个键 |
| `InputRejected` | 400, 413, 422 | 更改请求 |
| `Unsupported` | 部分类型的模型不采取 | 选择另一个模型；零件从不掉落 |
| `Cut` | 输出帽停止了应答 | `partial` 保存文本到目前为止， `usage` 其成本 |
| `Filtered` | 卖主自己停止了回答（双子座的） `RECITATION`， `SAFETY`（运行失败） | `stop` 说的;换句话说 |
| `NoAnswer` | `ask` 修复后没有发现形状相同的物体 | `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](https://ai-sdk.dev/) 7 (Apache 2.0)：一个调用人形Anthropic， 谷歌，Cohere和每个openai兼容的服务器，每个供应商的媒体部件和令牌细节。 其他选择是每个供应商自己的SDK（四种调用形式和四种使用格式）和 平原 `fetch` （每条线格式手工保存）。此包只添加SDK遗漏的内容： 错误按下一步要做的事情、钥匙圈、价格、带修复的解析和语音进行排序。

## 开发

```sh
pnpm install
pnpm lint && pnpm typecheck && pnpm test
```

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

许可证：PolyForm Strict 1.0.0 (`LICENSE.md`）。

## 常见问题

### @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 和提交记录判断。

