AIToday
大規模言語モデルAIコーディングZenn AI/ML掲載日時: 2026年10月11日 10:00

PRの理由を抽出して選ぶchangelog-bot

LINEで送る
PRの理由を抽出して選ぶchangelog-bot

@nyaomaruのchangelog-botはLLMに理由を書かせず、Jevがプルリクエストから抽出した候補スニペットを採点し、作者がすでに書いたテキストだけを採用する。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

@nyaomaruが直面した問題は、プルリクエストを渡されて「この変更はなぜ行われたのか?」と問われたLLMが、要約し、言い換え、文を結合し、述べられてもいない理由を推測してしまうことだった。changelogにとって、それは間違った種類の助けだ。転換点はタスクの捉え直しにあった。「AIはどうすれば良い理由を書けるか?」ではなく「理由がすでに存在する証拠をどう見つけるか?」である。この捉え直しにより、作業は3つに分かれる。候補の証拠を特定して正規化する決定論的コード、それを評価するJev、そして整形するレンダラーだ。

これは作者が「決定論優先」と呼ぶ、プロジェクトのv1の大きな方向性に合致する。AIが無効化されても失敗しても、完全なchangelogが生成されるべきだという考えだ。AIはchangelogを所有するのではなく、 enrichmentする。WHYエンジンはそれに応じて任意のエンリッチメント工程であり、最終的なMarkdown自体を生成することはなく、それは単一の決定論的レンダラーが担う。フェーズ1から3はすでに実装済みで、構造化レンダリングとエンリッチメントの境界は今後の作業として予定されている。

しきい値の問いは、直感ではなく測定によって答えられつつある。初期の評価ハーネスは14件のケースを持ち、陽性(ある候補が明らかに理由である場合)と陰性(何も選ばないのが正解である場合)を混ぜていた。寄稿者として@johnnylemonnyが加わった後、PR #212はそれを約50件のケースに拡大し、明示的な根拠、実装のみのテキスト、テンプレートのノイズ、多言語のプルリクエストを網羅した。作者は正解データに1つのルールを設けた。それは現在のJevのしきい値とは独立に人間が決めなければならず、ラベルが単にモデルがすでに高く採点したものになってしまわないようにするためだ。

よくある質問
changelog-botは「Why」として使うPRの文をどう選ぶのか?
まずプルリクエストを前処理し、「why」や「reason」といったセクション名、「because」や「to prevent」といった表現を手がかりに候補スニペットを探す。次にJevが各候補に対して、理由を明示しているか、その理由がその具体的な変更に当てはまるかの2つを問い、両方の確率しきい値を満たした候補だけを採用する。
AIは見つけた理由を書き換えるのか?
いいえ。最終的な「Why」はプルリクエストの説明文にある元の文そのままで、Jevがどの候補を選ぶかを決めるが、changelogに載る実際のテキストを書いたのはPRの作者だ。
プルリクエストに明確な理由がない場合はどうなるか?
その場合、ツールは「Why」を一切追加しない。作者は「このPRには信頼できるWHYがない」ことも有効で重要な結果だと考えており、もっともらしい理由を無理に作るより好ましいとしている。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へByte Language Modelsがサブワード超え