前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8748
  • AI 编码 Agent 在移动端多久“看”一次才够用
  • Claude Opus 5.5 缓存读取降价 60%,68 万行代码迁移攻略
  • 用 AI 辅助求职的工程实践:诚实原则与确定性设计
  • Agent 补丁评分卡:防止测试被悄悄弱化的 CI 策略
  • Opus 5.5 缓存降价后 text-to-SQL 成本重算分析
  • GPT-6 Sol/Luna 登场:价格腰斩,定位细分
  • TypeSafe Jev:让AI返回结构化决策而非段落文本
  • Text-to-SQL访问控制:身份决定Schema可见性
  • Jev 1.13实测:工单分类精度达100%,对比规则引擎和本地LLM
  • GitHub Copilot应用支持OpenTelemetry可观测性配置
  • Copilot for JetBrains新增工具审批和Agent控制功能
  • 两款 AI 代码审查基准测评结论相反
  • AI 编码提速后:验证环节成为新瓶颈
  • AI 审查同一 PR 给出不同结论:确定性判定器来解决
  • AI计量工具审计启示:独立交易ref是防重复计费的关键
  • OpenAI发布GPT-6 Sol/Luna:API价格下调50%
  • GPT-6/Claude 5.5 同日发布:价格战开打,Luna 成本腰斩
  • GitHub Copilot 大幅提升C++代码索引速度
  • Anthropic和OpenAI同时推出性价比新模型
  • GPT-6 提示缓存重大升级:更高命中率与可诊断性
  • 六边形架构的端口在撒谎:HTTP 不等于业务语义
  • GPT-5.6 价格策略解读:Luna 降价 80%,多版本差异化定位
  • 高通骁龙8 Gen6端侧跑300亿参数MoE模型,吞吐330 Token/s
  • Claude Opus 5.5评测:智商极高但费用惊人
  • 小米开源 MiMo-V2.6:万亿参数开源模型登顶榜
  • AI Agent 工具 API 设计指南
  • 一个浏览器扩展权限即可劫持五大 AI Agent
  • Claude Opus 5.5 主打端到端代码补全而非起步
  • GPT-6 Sol发布:对齐能力逼近Astra,价格仅五分之一
  • GPT-6 Sol/Luna编程能力比肩Claude,成本降80%
  • Claude Opus 5.5发布:性能对标Fable 5.1,成本低40%
  • Claude Opus 5.5:编程修复成功率达97.5%,成本降40%
  • 开源工具llm 0.36支持GPT-6 Sol/Luna
  • JetBrains押注Agent开发:称其为26年最重要一步
  • 为 AI 代理添加预算守卫的实战方案
  • OpenAI GPT-6 Sol和Luna模型上线Amazon Bedrock
  • OpenAI发布GPT-6 Sol和Luna,API价格减半
  • 已加载 37 / 8748
9.0
重磅
AI SCORE
工具产品2026-09-23 10:42

TypeSafe Jev:让AI返回结构化决策而非段落文本

dev.to · AI#AI决策#TypeScript#结构化输出
Editor brief · 编辑速览

Jev专为工单分类等场景设计,输入文本状态和结构化问题(如Yes/No、Choice、Score),输出带概率的强类型答案,避免解析自然语言输出的歧义。支持多问题并行评估,单次请求一次返回所有结果。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

Take a support ticket: I was charged twice. Please fix this ASAP.

With a chat model you usually beg for JSON, then parse prose that was meant for a human. Sometimes the braces close. Sometimes the team field is Billing? with a question mark. Sometimes you get a paragraph and no probability you can threshold.

TypeSafe's Jev is built for that ticket as data, not as a conversation. You send the ticket text as state, plus named questions. You get typed answers and probabilities back. No paragraph. Their name for this shape is System One: models that make fast structured decisions your code can branch on.

Three questions, one call

On that same ticket you might ask three things in one request.

Is it about billing? That is a Noul (yes/no). You get a probability between 0 and 1.

Which team should own it, billing or technical? That is a Choice. You get the picked label, a probability per option, and a confidence.

How urgent is it on a short ordered scale (can wait / this week / today)? That is a Score. The position can land between levels.

TypeSafe evaluates those questions in parallel against the same state. Adding a question does not stack another chat round trip. Their docs are blunt about scope: ask one narrow judgment per question, then combine answers in your own code when you need weights. That is the useful split. The model judges. Your code still owns policy.

I run Hellenic Development. We ship Go infrastructure, including Plexon AI. TypeSafe's official SDKs are JavaScript and Python. Six days after Jev shipped, we released an unofficial Go client and put it on our own product path. I will get to that. First, what other people already built, because the model is easier to understand from uses than from a slide.

What people are building

On 21 September 2026, @Pluvio9yte posted a Chinese list of projects that showed up after the launch. Rough English of the opener: Jev is everywhere right now; if you just got an API key and do not know what to try, copy from this list.

I am not reprinting all twenty. Here are twelve I would open, in groups.

Agents that have to act

browser-use/jev-ultrafast keeps Jev on the decision each step (what to do, which element to click) and only calls a text model when it must type. They clock a Google Flights search around seven seconds.

lahfir/agent-desktop does a similar job on the real desktop: read the OS accessibility tree, then judge which control to hit, instead of squinting at screenshots.

Coding loops that drown in their own tools

tamaratran/fast-jev-compaction asks Jev which tool results still matter for Claude Code, drops the rest, and leaves kept text alone instead of rewriting a summary.

0xNatoshi/jev-codex-router scores how hard the current coding turn looks, then picks model tier, reasoning depth, and speed mode.

ellipsis-dev/blink walks a tree and asks which files are worth opening next.

qkal/Canny looks at tool output, diffs, and tests before it believes an agent that says it is done.

vercel-labs/json-render is Vercel Labs' generative UI work. In the Jev experiments the model picks components, props, and layout instead of streaming JSON one token at a time.

If you want the API inside Claude Code, Claude Desktop, Codex, or Pi with almost no glue, start with itsmostafa/typesafe-mcp or jkudish/jev-mcp. Choice, Score, and Noul show up as tools.

Pipelines and weird ones

sharziki/semdecide puts typed decisions on the shell for crawlers, CI, and filters.

jarrodwatts/jev-trader makes market-style buy/sell judgments on a Monad testnet and quotes model latency around 81 ms per tick.

fhshaik/typesafe-mario plays Super Mario from structured emulator RAM, not pixels.

Star counts will move. The pattern will not: keep policy in code, ask Jev for the small semantic call an if statement cannot make.

github.com/kataras/jev

That is where Go was thin. We needed a client that looks like a Go module: context, options, sentinel errors, shared rate limits, one dependency.

So we shipped github.com/kataras/jev (MIT, v0.1.0).

Product: hellenic.dev/jev

Docs: pkg.go.dev/github.com/kataras/jev

API: docs.typesafe.ai/api

go get github.com/kataras/jev

Set TYPESAFE_API_KEY. The ticket example above is the README example:

client, err := jev.New()
resp, err := client.SystemOne(ctx, jev.Request{
    State: "I was charged twice. Please fix this ASAP.",
    Questions: jev.Questions{
        "billing": jev.Noul{Instructions: "Is this ticket about billing?"},
        "team": jev.Choice{
            Instructions: "Which team should handle this?",
            Criteria: map[string]any{
                "billing":   "Payments, invoices, refunds",
                "technical": nil,
            },
        },
        "urgency": jev.Score{
            Instructions: "How urgent is this ticket?",
            Criteria:     []string{"can wait", "this week", "today"},
        },
    },
})

billing, _ := resp.Noul("billing")
team, _ := resp.Choice("team")
urgency, _ := resp.Score("urgency")

Answers come back under the names you chose. One-question shortcuts exist (Noul, Classify, Rate). SystemOneAs decodes into your own struct; that generic method is why we require Go 1.27. Cost of that choice: older toolchains stay out until they move.

The boring production parts are why I bother publishing a client instead of a gist:

Default pacing sits under TypeSafe's published account caps (1,200 requests/min, 250,000 input tokens/s).

Retries match the JavaScript SDK on 408, 429, and 5xx.

Retry-After pauses every caller that shares the limiter, because the budget is per account, not per process.

Thirteen sentinel errors for errors.Is.

And an Agent Skill so Claude Code, Cursor, Codex, and Plexon read our real signatures:

npx skills add kataras/jev --skill jev -g -y

Unofficial. Not affiliated with TypeSafe. We follow their contract where a Go client should. Where we differ, the README says so. Pin jev-1.13.0 (or whatever version you tested) when a later run must hit the same model. jev-latest moves.

Plexon is our desktop assistant. Chat still uses ordinary language models. The closed decisions next to chat use System One through this client: how hard is this turn, which UI step is next, is this tool result worth keeping while we condense context, how risky is this click or this diff.

The desktop leases a short-lived TypeSafe key from our server, builds a jev.Client in memory, and does not write that key to disk. Those calls usually land in tens to a few hundred milliseconds on our side. That is the point. You do not burn a full chat completion to ask whether a ticket is about billing.

TypeSafe released Jev on 15 September 2026. We tagged kataras/jev v0.1.0 on 21 September 2026 and wired it through Plexon in the same week.

Short on purpose

When a decision model ships with a public HTTP contract and no official Go SDK, a Go shop should publish a careful client and run its own product on it before every tutorial assumes JavaScript.

github.com/kataras/jev

TypeSafe introduction

If you write Go and you have a key, start with the client. If you want the wider map of what people are doing with the model, start from Pluvio9yte's list and TypeSafe's docs. Those are better guides than another company blog from me.

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
GPT-6 Sol/Luna 登场:价格腰斩,定位细分
下一篇
Text-to-SQL访问控制:身份决定Schema可见性