1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jevの判定をゲート処理に使って分かった、質問の書き方5つ(noulよりchoice)

1
Posted at

この記事は、私のプロジェクトの記録をもとにAIエージェント(Claude)が下書きし、数値と内容を私が確認して投稿しています。

韓国で一人でRobloxゲームを作っています。ゲーム以外の作業、たとえば動画クリエイターへの連絡メールや、届いた返信の分類、コミュニティに出す文章の事前チェックを自動化していて、その「判断」の部分にTypeSafeのJev(判断特化モデル)を使っています。

1週間ほど運用して、同じことを聞いても質問の形で結果が大きく変わることが分かったので、実際に踏んだ5つをまとめます。

1. 判定対象は question ではなく state に入れる

最初、下書きの本文を question の文章の中に埋め込んでいました。すると、中身の違う下書きを並べても、どれも同じような値(0.74 や 0.38 など)が返ってきて、判定として使えませんでした。

判定したいもの(下書き、文、チャンネル情報)は state に入れ、question は「何を聞くか」だけにすると、ちゃんと差が出るようになりました。

const body = {
  model: 'jev-latest',
  state: { draft, where: 'Bluesky reply' },   // 判定対象はここ
  questions: {
    kind: {
      type: 'choice',
      question: 'What kind of comment is this draft?',
      criteria: {
        genuine_post: 'sincere discussion, devlog, answer',
        advertisement: 'mainly promotional copy',
        reward_offer: 'rewards for follows, likes or subscribing',
      },
    },
  },
};

2. はい/いいえ判定は noul より choice の方が安定した

noul(はい/いいえの確率)で「議論として自然な下書きか」を聞いたところ、良い下書きも広告っぽい下書きも 0.46〜0.62 に集まり、区別できませんでした。同じ判定を choice(genuine_post / advertisement / reward_offer)にすると、良い下書きは 1.00 で genuine_post、報酬を持ちかける下書きは 0.70 で reward_offer と、はっきり分かれました。

返信の分類でも同じことがありました。明らかにお金を求めている返信に、noul で "Does the reply ask for money?" と聞くと 0.37 でした。同じ質問を choice {yes, no} にすると yes が 1.00 でした。

今は、送る/送らないを決めるゲートはすべて choice にしています。

3. 質問は英語の肯定形・単一条件で書く

"contradicts or is not supported" のような否定形や複合条件で聞くと、極性が逆転しました。正しい文が 0.98、間違った文が 0.01 と、期待と真逆の値です。韓国語で書いた質問でも差が出にくかったため、質問は英語で、「高いほど良い」1つの条件だけを聞く形に揃えました。

4. 事実チェックは1文ずつ、わざと間違った文も混ぜる

下書き全体を state に入れて「すべての主張が事実に基づいているか」と聞くと、意見や質問の文が混ざっているせいか unsupported になりがちでした。また、state に複数の文を並べて question 側から参照すると、全部が 0.7 前後の unsupported になりました。

うまくいったのは次の形です。

  • 事実を含む文だけを取り出し、1文ずつ state.sentence に入れて別々に聞く
  • 同じタイミングで、わざと間違った文を1つ聞き、unsupported が返ることを確認する
  • confidence が 0.5 未満なら文を直して1回だけ聞き直し、それでもだめなら保留する

対照の文がちゃんと unsupported になっていれば、その回の結果を信用する、というルールです。

5. はっきり書かれたルールはコードで判定する

「AI利用を明記すること」「カルマ○○以上」「リンク禁止」のように、ルールとして明文化されているものは、モデルに聞くより文字列や数値でチェックした方が確実でした。あるコミュニティの「AIラベル必須」ルールを state に入れて判定させたとき、この条件の重みが低く扱われ、0.29 という値になったことがあります。

逆に、動画チャンネルとの相性のように意味の解釈が必要な判断は Jev に任せています。ただしタイトルと説明文だけだと相性を高く見積もりがちでした(ある候補で 0.74)。動画の文字起こしの一部を足すと 0.04 まで下がり、実際には合わない候補だと分かりました。

まとめ

  • 判定対象は state、question は聞きたいことだけ
  • ゲートには choice
  • 英語・肯定形・単一条件
  • 事実チェックは1文ずつ+間違った対照文
  • 明文化されたルールはコードで

使っている場面は、Egg Stack Heist という自作のRobloxゲーム(卵を盗んで頭の上に積んで持ち帰るタイクーン)の周辺作業です。現在は Roblox の新規ゲーム向けルールで16歳以上限定になっています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?