# @effect-uai/typesafe-ai 中文文档

规范地址：https://npmcn.com/package/%40effect-uai/typesafe-ai/

版本：0\.19\.1
npm 元数据更新时间：2026-11-15T11:48:56.682Z
中文译文更新时间：2026-11-15T11:53:51.464Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40effect-uai/typesafe-ai
原文对照：https://npmcn.com/package/%40effect-uai/typesafe-ai/?lang=original
项目主页：https://github.com/betalyra/effect-uai/tree/main/packages/providers/typesafe-ai
源码仓库：https://github.com/betalyra/effect-uai

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

- 包体积（解压后）：50.5 kB，16 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：effect \>=4\.0\.1 \<5\.0\.0，@effect-uai/core \>=0\.17\.0 \<1
- 首次发布：2026-09-18T19:16:36.365Z
- 最新版本发布：2026-11-15T11:48:56.302Z
- 近 30 天下载量：25756（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 8 个）

## 中文简介

用于@effect-uai/core(Jev System One决定模型)的TypeSafe AI提供商.

## 安装

```sh
npm install @effect-uai/typesafe-ai
```

也可以使用：`pnpm add @effect-uai/typesafe-ai`、`yarn add @effect-uai/typesafe-ai`、`bun add @effect-uai/typesafe-ai`

## README

# @ effect- uai/ type safe- ai

类型安全 AI 供应商 [`@effect-uai/core`](https://github.com/betalyra/effect-uai/tree/main/packages/core)。 。 。 . 服务于 `DecisionModel` 与Jev,一个系统一模型 回答关于输入概率而不是概率的问题 生成文本.

> 实验 这种型号是新的,形状可能会有变化.

## 安装

```sh
pnpm add @effect-uai/core @effect-uai/typesafe-ai effect
```

## 把它接起来

```ts
import { Config, Effect, Layer } from "effect"
import { FetchHttpClient } from "effect/http"
import { layer as jevLayer } from "@effect-uai/typesafe-ai/Jev"

const provider = Layer.unwrap(
  Effect.gen(function* () {
    const apiKey = yield* Config.Redacted("TYPESAFE_AI_API_KEY")
    return jevLayer({ apiKey })
  }),
)

const mainLayer = provider.pipe(Layer.provide(FetchHttpClient.layer))
```

一层,两个标签: `Jev` 报告 `confidence`, (中文(简体) ), `DecisionModel` 适用于便携式供应商的编码.

## 决定

```ts
import { Schema } from "effect"
import * as Decision from "@effect-uai/core/Decision"
import { decide } from "@effect-uai/core/DecisionModel"

const triage = Decision.make({
  inputSchema: Schema.Struct({ message: Schema.String }),
  decisions: {
    department: Decision.classify({
      instructions: "Which team should handle this?",
      criteria: {
        billing: "Payments, invoicing, refunds",
        technical: "Bugs, outages, integrations",
      },
    }),
    severity: Decision.rate({
      instructions: "How severe is the reported issue?",
      criteria: ["Cosmetic", "Degraded", "Blocking"],
    }),
    urgent: Decision.probability({ instructions: "Does this convey urgency?" }),
  },
})

const program = Effect.gen(function* () {
  const { answers } = yield* decide(triage, {
    model: "jev-latest",
    input: { message: "Payouts have been failing for 3 days." },
  })

  answers.department.labels.billing // number
  answers.urgent.probability // number
  answers.severity.legend[Decision.topLevel(answers.severity)] // "Degraded"

  const leader = Decision.ranked(answers.department)[0]
  return leader === undefined || leader.probability < 0.5 ? "escalate" : leader.label
})
```

定义中的每个决定都用一个调用回答,编码输入 开一次单,所以批次,而不是每个问题.

## 模型

`jev-latest` (违约), `jev-preview`, (中文(简体) ), `jev-1.13.0`每个请求64克令牌, 其中约32k用于编码输入外加最长的单项决定. 仅文.

## 输入计划是为了什么

`inputSchema` 编码出道时的输入。 省略字段的策略 让它远离模型,这是支持的 保持无关或 请求中的敏感上下文。 供应商的文件大都无关紧要 作为分心器的输入,所以故意投影是值得的.

## 关于分数

在浮动点误差中概率和1,在 一个答案。 捷夫自己来的 `confidence` 可在 `Jev` 标签; 它没有打开 共同的答案,因为它的公式是无证的,它没有在 `probability` 决定. `Decision.confidence` 财务报告和审定财务报表 `Decision.margin` 为: 从各种类型的分发、记录和定义中计算。 门 最高概率和 `margin`,没有打开 `confidence`: 常态 en 随着标签数的增加而收缩,所以在两个标签上悄悄地调出一个阈值 要求质量要大得多的四.

已知的薄弱点/销售商自己的挂号:数和 算术,日期顺序,多跳推理,和数字分数都很弱 如此校正 `expectedLevel` 不应将它视为一个规模。 输入是 因此输入中注入的指令可以引导 答话.

## 错误

| 状态 | `AiError` |
| --- | --- |
| 401 (中文(简体) ) | `AuthFailed{subtype:"auth"}` |
| 402 (韩语) | `AuthFailed{subtype:"billing"}` |
| 403 (韩语) | `AuthFailed{subtype:"permission"}` |
| 408/504 (中文(简体) ) | `Timeout` |
| 413号 | `ContextLengthExceeded` |
| 422个 | `InvalidRequest` |
| 429个 | `RateLimited` |
| 5 (简体中文) | `Unavailable` |

无法编码的输入 `InvalidRequest` 与 `param: "input"`。 。 。 . 其形状与要求它的决定不符的答案是 `GenerationFailed`。 。 。 .

## 另见

-   [决策模式](https://effect-uai.com/decisions/)
-   [TypeSafe AI 使用页面](https://effect-uai.com/decisions/providers/typesafe-ai/)
-   [`@effect-uai/core/Decision`](https://github.com/betalyra/effect-uai/tree/main/packages/core/src/decision-model)

## 常见问题

### @effect-uai/typesafe-ai 是什么？

用于@effect-uai/core\(Jev System One决定模型\)的TypeSafe AI提供商\.

### 如何安装 @effect-uai/typesafe-ai？

在项目目录运行 npm install @effect-uai/typesafe-ai，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：effect（\>=4\.0\.1 \<5\.0\.0）、@effect-uai/core（\>=0\.17\.0 \<1）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @effect-uai/typesafe-ai 支持 TypeScript 吗？

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

### @effect-uai/typesafe-ai 支持 ESM 还是 CommonJS？

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

### @effect-uai/typesafe-ai 可以商用吗？

@effect-uai/typesafe-ai 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @effect-uai/typesafe-ai 的下载量有多少？

根据 npm 官方下载统计，@effect-uai/typesafe-ai 在 2026/10/13 – 2026/11/11 这 30 天内被下载 25,756 次，日均约 859 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @effect-uai/typesafe-ai 还在维护吗？

最新版本 0\.19\.1 发布于 2026/11/15（今天）；至今共发布 8 个版本，其中过去 12 个月发布了 8 个；首次发布于 2026/09/19。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

