PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

「Jev」を25行のPythonで見せた記事が、むしろ示していたこと

いま話題になっている「Jev」を、25行のPythonで再現してみせる──そんな短いデモを軸にした記事が出ています。元記事は、派手な紹介文というより、わざと肩の力を抜いたパロディとして書かれていて、流行のAI手法に対する距離感がよく見えます。面白いのは、そこで示される中身が難しい理論ではなく、「入力された選択肢に確率を付けるだけ」のかなり素朴な仕組みだという点です。これがどういう軽さで、何を皮肉っているのかを、元記事を読んでいない人向けに整理しつつ、こちらの見方も含めて読んでいきます。

25行で見せる「Jev」は、モデルを呼んで確率を出すだけの話だった

元記事は、「Everyone and their mom is talking about Jev」と始めて、JevがAI界隈で大げさに語られていることをからかいます。そのうえで、「25 lines of Python」で実装したと称する短いコードを見せますが、やっていることはかなり単純です。Python 3.12 を前提にして、huggingface-hubllama-cpp-pythonnumpy を使い、Qwen/Qwen3-0.6B-GGUFQwen3-0.6B-Q8_0.ggufLlama.from_pretrained で読み込みます。n_ctx=512logits_all=Trueverbose=False という設定で、ローカルの GGUF モデルを扱う形です。

そのあと、選択肢を3つ用意します。ラベルは ABC、内容は LegitimateSpamPhishing です。例として使うメールは「Payroll asks for your password on a non-company sign-in page.」という文で、給与担当を装って会社外のサインインページでパスワードを求める、かなり怪しいメールです。これらを systemuser のメッセージとしてプロンプトに組み込み、assistant 側には <think> の空の枠まで置いたうえで、モデルに評価させます。

そこから先は、モデルが出した logits を取り出し、各ラベルに対応するトークンの値だけ抜き出して、logaddexp を使って正規化し、probabilities に変換します。最後に LogitsLog probabilitiesProbabilities を表示すると、例では Legitimate が 0.031、Spam が 0.084、Phishing が 0.885 になっています。つまりこのデモは、「分類器として使うと、入力された選択肢に対して確率を返せる」という話を、ほとんどそのまま見せているだけです。

記事はここでわざと「That’s Jev.」と突き放したあと、「でも、あなたはJevを理解していない!」という反発を先回りして茶化します。続けて、これは System One decision model とも呼ばないし、APIも呼んでいないし、合成データも作っていないし、RLCD(Reinforcement Learning for Calibrated Decisions)で訓練したわけでもない、と並べて否定します。けれども結局のところ、「選択肢付きのプロンプトを入れて確率を出す分類器」だと認めます。さらに、速い、ローカルで動く、データを外に送らない、という利点を挙げたうえで、NobodyWho を見てくれと誘導します。末尾には、これはパロディ記事であり、より完全な実装として OpenJev、openjev-sglang、OpenJev on DiffusionGemma へのリンクがあるとも注記されています。公開日は 2026年9月22日、著者は Duarte O.Carmo です。

「25行で済む」という見せ方が、いちばん効いている

この文章でまず面白いのは、Jevそのものの新規性よりも、「新しい概念のように語られるものを、最小構成に縮めると何になるか」を見せているところだと思う。多くのAI周辺の話題は、用語が増えるほど中身も深く見える。けれど元記事は、実装の骨格を抜き出すことで、その場の熱気を一度冷ます。ローカルモデルを読み込み、選択肢のトークン確率を取り、分類する。これだけなら、少なくとも仕組みとしてはかなり素直だ。私は、この「素直さを見せる」姿勢に価値があると思う。

同時に、ここにはかなり強い皮肉もある。Jevをめぐる言い回しが仰々しいほど、実際のコードは地味になる。その落差が笑いどころだ。しかも記事は、わざと専門用語っぽいラベルを並べたあとで、「でも yes, this is Jev」と言い切る。これは、流行の名前が先に立つと、実体よりも物語のほうが大きくなりがちな状況へのツッコミだろう。新語を作る側はどうしても広い期待を背負わせたくなるが、読む側からすると、まずは何をしているかを一行ずつ見たい。そこを誠実に戻しているのが、この短い記事の強さだと思う。

ローカルで動く分類器は、派手さより運用の現実に近い

元記事が強調しているのは、「速い」「ローカル」「データを送らない」という点だった。これは地味だが、実運用ではかなり大きい。たとえばメールのスパム判定や社内文書の振り分けでは、モデルの能力そのものより、情報を外に出さないことのほうが重要な場面がある。SaaSに投げれば便利でも、内容次第ではそれ自体が採用しづらい。ローカルLLMを使って確率だけ返す、という構成は、その制約に正面から合っている。

ただし、ここには注意もある。記事のデモは、たしかに「分類器として動く」ことを示しているが、分類精度や頑健性を証明しているわけではない。例として出ているメールはかなり怪しいので、Phishing が高く出るのは自然にも見える。だが現実の判定はもっと曖昧で、業務メール、通知、外部委託先とのやり取りなど、境界事例が多い。だから私は、この記事を「Jevはすごい」の証拠というより、「こういう用途なら、巨大な話をしなくても実装できる」という見本として見るほうが正確だと思う。

「APIを呼ばない」ことが、今は差別化になる

記事がわざわざ「We didn’t call an API」と言っているのは、技術的な自慢というより、時代の空気を映しているように見える。いまのAI開発は、APIベースの利用が当たり前になりすぎていて、しかもそれが悪いこととは限らない。だが一方で、どこにデータが流れるのか、レイテンシーはどうか、費用はどう積み上がるかを気にする人も増えた。そういう人たちにとって、ローカルで完結する設計は「古い」どころか、むしろ実務的だ。

ここで興味深いのは、元記事がその利点を真顔で述べながら、全体の調子はかなりふざけていることだ。つまり、ローカル実行の価値を主張する文章としても読めるし、AI業界の過剰な言葉づかいを笑う文章としても読める。私はこの二重性がうまいと思う。もし本気の技術解説だけなら、Jevという名前に乗った冗談っぽさは邪魔になるはずだ。逆に、冗談だけなら最後に示された実装リンクは不要だろう。両方を置いているからこそ、「笑えるけれど、ちゃんと使える」と感じさせる。

この手のパロディは、技術への不信というより期待の整理に近い

「AIの新手法」を見かけると、どうしても革命っぽく聞こえてしまう。けれど実際には、名前が違うだけで中身は既存の部品の組み合わせだった、ということは少なくない。元記事のJevも、その構図をきれいに切り出している。モデルを読み、プロンプトを作り、候補の確率を出す。そこに難しい魔法があるわけではない。それでも、用途が合えば十分に価値がある。私は、この距離感が大事だと思う。

だからこの記事は、単なる冷笑ではない。むしろ「期待を盛りすぎると、実装の地味さとの落差で逆に信用を失う」という感覚を共有しているように見える。技術の本当の面白さは、名前の派手さではなく、どういう制約のなかで何ができるかにある。Jevを25行で見せるやり方は、そのことを思い出させる。大風呂敷を広げた手法紹介より、こういう小さな実装のほうが、後から役に立つことが多いのではないかと思う。


参考: Jev in 25 lines of Python - NobodyWho

同じ著者の記事