@ effect- uai/ type safe- ai
类型安全 AI 供应商 @effect-uai/core。 。 。 .
服务于 DecisionModel 与Jev,一个系统一模型
回答关于输入概率而不是概率的问题
生成文本.
实验 这种型号是新的,形状可能会有变化.
安装
pnpm add @effect-uai/core @effect-uai/typesafe-ai effect
把它接起来
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
适用于便携式供应商的编码.
决定
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。 。 。 .