<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>排错 on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/%E6%8E%92%E9%94%99/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sat, 03 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/%E6%8E%92%E9%94%99/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Jev 报错排查完全指南：401、422、429、529 一次讲透！</title>
        <link>https://www.yesmiracle.net/post/20261003-jev-api-error-troubleshooting/</link>
        <pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20261003-jev-api-error-troubleshooting/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20261003-jev-api-error-troubleshooting/cover.svg" alt="Featured image of post Jev 报错排查完全指南：401、422、429、529 一次讲透！" /&gt;&lt;p&gt;接 Jev 的时候，最烦的往往不是它判错，而是它直接甩给你一个冷冰冰的 HTTP 状态码。&lt;/p&gt;
&lt;p&gt;这篇把我碰到过的、和社区里被问得最多的几类 Jev 报错，按「症状 → 原因 → 修复」理一遍。目标是让你下次看到 401、422、429、529 的时候，不用再翻帖子。&lt;/p&gt;
&lt;p&gt;先把最常见的五个症状列出来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;调用直接 401：&lt;code&gt;Cannot authenticate with the server. Please check your API key and try again.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;422 Validation failed，但看不出 payload 哪里不对&lt;/li&gt;
&lt;li&gt;白天正常，晚上开始 429 刷屏&lt;/li&gt;
&lt;li&gt;偶发 529 Overloaded&lt;/li&gt;
&lt;li&gt;SDK 明明装好了，还是报「找不到 key」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（还没装 Jev？先看 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260924-jev-installation-guide/&#34; &gt;《Jev 安装完全指南》&lt;/a&gt;。想先搞懂它是什么，看 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260921-typesafe-jev-system-one-deep-dive/&#34; &gt;《TypeSafe AI Jev 深度解析》&lt;/a&gt;。）&lt;/p&gt;
&lt;h2 id=&#34;先记住jev-只有四个错误码&#34;&gt;先记住：Jev 只有四个错误码&lt;/h2&gt;
&lt;p&gt;Jev 的 API 面小到能背下来——只有一个端点 &lt;code&gt;POST https://api.typesafe.ai/v1/systemone&lt;/code&gt;（外加一个 &lt;code&gt;GET /v1/models&lt;/code&gt;）。对应的错误码也只有四个：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;状态&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
          &lt;th&gt;该不该重试&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;401&lt;/td&gt;
          &lt;td&gt;Auth failed（认证失败）&lt;/td&gt;
          &lt;td&gt;不要重试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;422&lt;/td&gt;
          &lt;td&gt;Validation failed（校验失败）&lt;/td&gt;
          &lt;td&gt;不要重试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;429&lt;/td&gt;
          &lt;td&gt;Rate limited（被限流）&lt;/td&gt;
          &lt;td&gt;指数退避&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;529&lt;/td&gt;
          &lt;td&gt;Overloaded（服务过载）&lt;/td&gt;
          &lt;td&gt;退避 + 熔断&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话：&lt;strong&gt;401 和 422 是「你的问题」，重试一万次也没用；429 和 529 是「时机问题」，退避重试才对。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;401认证失败先别改代码先查-key&#34;&gt;401：认证失败——先别改代码，先查 key&lt;/h2&gt;
&lt;p&gt;最高频的一个。完整报错长这样：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Error: the TypeSafe API rejected the credential (HTTP 401):
Cannot authenticate with the server. Please check your API key and try again.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;原因几乎总是同一个：&lt;strong&gt;你实际用的 key 和你以为用的不是同一个。&lt;/strong&gt; 常见三种：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;key 打错、或已经 revoke；&lt;/li&gt;
&lt;li&gt;环境变量里的 key 是空的；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先级搞反&lt;/strong&gt;——如果同时存在 &lt;code&gt;JEV_API_KEY&lt;/code&gt; 和 &lt;code&gt;TYPESAFE_API_KEY&lt;/code&gt;，前者优先级更高。你在 &lt;code&gt;jev auth login&lt;/code&gt; 存了 A，但环境变量 B 把 A 盖住了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;排查三步：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 1. 看 CLI/SDK 到底认了哪个来源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jev auth status
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 2. 不花 token 地验一下 key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jev doctor --live
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 3. 直接 curl 验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s -o /dev/null -w &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%{http_code}\n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;$TYPESAFE_API_KEY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  https://api.typesafe.ai/v1/models
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;/v1/models&lt;/code&gt; 返回 200，说明 key 是好的——那问题就在你代码取 key 的方式。返回 401，就重新生成一枚 key。&lt;/p&gt;
&lt;h2 id=&#34;422校验失败对照-schema-逐字段看&#34;&gt;422：校验失败——对照 schema 逐字段看&lt;/h2&gt;
&lt;p&gt;422 是「你发出去的 payload 不合法」，而且它不会告诉你哪里错，只能自己对。&lt;/p&gt;
&lt;p&gt;Jev 的请求体只有三个顶层字段：&lt;code&gt;model&lt;/code&gt;、&lt;code&gt;state&lt;/code&gt;、&lt;code&gt;questions&lt;/code&gt;。&lt;strong&gt;没有别的。&lt;/strong&gt; 记住这一条就能排掉大半 422：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有 &lt;code&gt;temperature&lt;/code&gt;、&lt;code&gt;top_p&lt;/code&gt;、&lt;code&gt;max_tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;没有 &lt;code&gt;stream&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;没有 &lt;code&gt;system&lt;/code&gt;、&lt;code&gt;metadata&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是从别的 LLM API 抄过来的请求体，这些字段一放进去就是 422。&lt;/p&gt;
&lt;p&gt;再看 &lt;code&gt;questions&lt;/code&gt; 三种类型各自的硬约束：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;criteria 约束&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;choice&lt;/td&gt;
          &lt;td&gt;选项 map，最多 255 个&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;score&lt;/td&gt;
          &lt;td&gt;有序等级数组，至少 2、最多 10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;noul&lt;/td&gt;
          &lt;td&gt;可选 &lt;code&gt;{true, false}&lt;/code&gt;，不填也行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最常见的三个 422 来源：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;score&lt;/code&gt; 只给了 1 个等级（要 ≥2）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;choice&lt;/code&gt; 的 &lt;code&gt;criteria&lt;/code&gt; 写成了数组（它要的是 map）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state&lt;/code&gt; 太大——官方限制是&lt;strong&gt;每次请求 ≤64k tokens，且 &lt;code&gt;state&lt;/code&gt; + 最长的那一个问题 ≤32k tokens&lt;/strong&gt;，超了就是 422。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 顺带一提：官方文档在 context 上自己打架——Primitives 页说共享预算「约 32k」，Models 页说 64k 总量 / 32k state。&lt;strong&gt;保守起见按 32k 算。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;429--529限流与过载退避但别无脑退避&#34;&gt;429 / 529：限流与过载——退避，但别无脑退避&lt;/h2&gt;
&lt;p&gt;这两个是真正的「等一下就好」。&lt;/p&gt;
&lt;p&gt;官方限流数值（可能随时变）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;250,000 tokens/秒&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1,200 请求/分钟&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;任一超限就返回 429；服务端整体过载返回 529。&lt;/p&gt;
&lt;p&gt;退避曲线（官方建议）：&lt;strong&gt;1s → 2s → 4s，加 jitter&lt;/strong&gt;，并设一个整体超时。529 在持续失败时建议&lt;strong&gt;熔断&lt;/strong&gt;，别让它拖垮你的服务。&lt;/p&gt;
&lt;p&gt;两个官方 SDK 都自带可配置的 &lt;code&gt;RetryPolicy&lt;/code&gt;，默认值已经好用：&lt;code&gt;max_retries=2&lt;/code&gt;、初始 0.5s 翻倍到最多 5.0s、jitter 0.25、可重试状态 &lt;code&gt;408/429/500-599&lt;/code&gt;、总预算 &lt;code&gt;timeout=30.0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但有个坑：如果你自己的队列/任务系统已经有重投递，一定要把 SDK 的 retry 关掉&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; typesafe_sdk &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; RetryPolicy, TypeSafeClient
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; TypeSafeClient(retry&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;RetryPolicy(max_retries&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;两层重试叠在一起，会把一个短暂的 429 放大成 stampede。这是很多人第一次上量时踩的坑。&lt;/p&gt;
&lt;h2 id=&#34;sdk--cli找不到-keykey-为空存不进凭证&#34;&gt;SDK / CLI：找不到 key、key 为空、存不进凭证&lt;/h2&gt;
&lt;p&gt;如果你用官方 CLI（&lt;code&gt;jev&lt;/code&gt;），它的报错其实很贴心，exit 3 基本都和凭证有关：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;no TypeSafe API key found&lt;/code&gt;——它找遍了 &lt;code&gt;JEV_API_KEY&lt;/code&gt;、&lt;code&gt;JEV_API_KEY_FILE&lt;/code&gt;、&lt;code&gt;TYPESAFE_API_KEY&lt;/code&gt; 和系统凭证库，都没有。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;the API key found in … is empty&lt;/code&gt;——变量被设成了空白。&lt;strong&gt;这几乎总是 CI 密钥没替换成功&lt;/strong&gt;（secret 名打错，或 fork 里拿不到 secret）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secure credential storage is unavailable&lt;/code&gt;——没有可用的系统凭证库。headless Linux / 容器 / SSH 里很常见。&lt;strong&gt;它不会退化成明文文件&lt;/strong&gt;，直接用环境变量。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jev auth login                &lt;span style=&#34;color:#75715e&#34;&gt;# 交互式，存进系统凭证库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export JEV_API_KEY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sk-...&amp;#34;&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# CI / headless&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jev doctor                    &lt;span style=&#34;color:#75715e&#34;&gt;# 看每个设置从哪来（不发网络请求、不打印 key）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;还有一个 exit 2：&lt;code&gt;refusing to send a credential over plain HTTP&lt;/code&gt;——只有明确的回环地址才允许 http，&lt;code&gt;localhost.example.com&lt;/code&gt; 这类会被拒。&lt;/p&gt;
&lt;h2 id=&#34;解析结果时的三个坑&#34;&gt;解析结果时的三个坑&lt;/h2&gt;
&lt;p&gt;报错之外，还有几个「不报错但结果不对」的坑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;noul&lt;/code&gt; 没有 confidence 字段。&lt;/strong&gt; 只有 &lt;code&gt;choice&lt;/code&gt; 才有 &lt;code&gt;confidence&lt;/code&gt; 和 &lt;code&gt;probabilities&lt;/code&gt;（和为 1）；&lt;code&gt;noul&lt;/code&gt; 只返回 0～1 的 &lt;code&gt;noul&lt;/code&gt; 值，别去取 confidence。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一定要 log 返回的 &lt;code&gt;model&lt;/code&gt; 版本。&lt;/strong&gt; 响应里的 &lt;code&gt;model&lt;/code&gt; 是「真正回答你的那个版本」（如 &lt;code&gt;jev-1.13.0&lt;/code&gt;），不是你可能传的 &lt;code&gt;jev-latest&lt;/code&gt;。线上出问题时，这行日志就是证据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只有 input 计费。&lt;/strong&gt; &lt;code&gt;usage&lt;/code&gt; 里有 &lt;code&gt;output_tokens&lt;/code&gt;，但只收 input 的钱——别看到 output 就以为在烧钱。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;不要踩的坑一张清单&#34;&gt;不要踩的坑（一张清单）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;别往请求里塞 &lt;code&gt;temperature&lt;/code&gt; / &lt;code&gt;stream&lt;/code&gt; / &lt;code&gt;max_tokens&lt;/code&gt; → 422&lt;/li&gt;
&lt;li&gt;别指望有 streaming / batch / async 端点 → 没有，全同步返回&lt;/li&gt;
&lt;li&gt;别在已有重投递的队列上开 SDK retry → 429 会被放大&lt;/li&gt;
&lt;li&gt;别只按 64k 上限塞 &lt;code&gt;state&lt;/code&gt; → 保守按 32k&lt;/li&gt;
&lt;li&gt;别硬编码 key → 用环境变量&lt;/li&gt;
&lt;li&gt;别把 &lt;code&gt;choice&lt;/code&gt; 的 &lt;code&gt;criteria&lt;/code&gt; 写成数组 → 它要 map&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;修好之后怎么验证&#34;&gt;修好之后怎么验证&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jev doctor --live        &lt;span style=&#34;color:#75715e&#34;&gt;# 加一次最小 API 调用，确认链路通&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再用一个最小请求打一发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s https://api.typesafe.ai/v1/systemone &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authorization: Bearer &lt;/span&gt;$TYPESAFE_API_KEY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;model&amp;#34;:&amp;#34;jev-latest&amp;#34;,&amp;#34;state&amp;#34;:&amp;#34;hello&amp;#34;,&amp;#34;questions&amp;#34;:{&amp;#34;ok&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;noul&amp;#34;,&amp;#34;instructions&amp;#34;:&amp;#34;this request is well-formed&amp;#34;}}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回里带 &lt;code&gt;answers.ok&lt;/code&gt; 就说明通了。&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：401 换了 key 还是不行？&lt;/strong&gt;
A：八成是环境变量优先级——旧 key 还在 &lt;code&gt;JEV_API_KEY&lt;/code&gt; 里盖着新的。跑 &lt;code&gt;jev auth status&lt;/code&gt; 看谁赢了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：&lt;code&gt;jev-latest&lt;/code&gt; 和 &lt;code&gt;jev-1.13.0&lt;/code&gt; 该用哪个？&lt;/strong&gt;
A：生产用带版本号的（可复现），试想法用 &lt;code&gt;jev-latest&lt;/code&gt;。响应里的 &lt;code&gt;model&lt;/code&gt; 会告诉你实际用了哪个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：为什么 &lt;code&gt;noul&lt;/code&gt; 拿不到 confidence？&lt;/strong&gt;
A：设计如此。&lt;code&gt;noul&lt;/code&gt; 返回的 0～1 本身就是 yes 概率，不再单独给 confidence。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：延迟 70–500ms 是 SLA 吗？&lt;/strong&gt;
A：不是。这个数字只出现在发布博客里，官方文档没有 SLA、没有分位数。别拿它做容量规划。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：非英文输入会怎样？&lt;/strong&gt;
A：官方说以英文为主，其他语言「可以接受但准确率更低」。中文场景建议自己压测校准质量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：能微调吗？&lt;/strong&gt;
A：不能。同一份权重服务所有账户，&lt;strong&gt;没有 fine-tuning API&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Jev 的 API 面小到能背下来——一个端点、三种问题类型、四个错误码。这既是优点（好学），也意味着大部分报错只来自那么几个地方：key 没对上、payload 混进了别的 LLM 的字段、或者没做好退避。&lt;/p&gt;
&lt;p&gt;把这篇当成一张速查表存着。下次 Jev 报错，先看状态码是 4xx「你的问题」还是可以退避的「时机问题」，再往下查。&lt;/p&gt;
&lt;p&gt;（相关阅读：&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260921-typesafe-jev-system-one-deep-dive/&#34; &gt;《TypeSafe AI Jev 深度解析》&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260924-jev-installation-guide/&#34; &gt;《Jev 安装完全指南》&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260925-decision-model-llm-hybrid-architecture/&#34; &gt;《决策模型 + LLM 混合架构》&lt;/a&gt;。）&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
