Slide 1

Slide 1 text

GitHub Actions × RAGでコードレビューの検証の結果 2025.01.31 〜Classmethod AI Talks(CATs) 新年生成AI LT大会2025〜 Solvio株式会社エンジニア 中村祥

Slide 2

Slide 2 text

© solvio, inc. 2 ⾃⼰紹介 中村祥 所属:Solvio株式会社 最近のアップデート:初めてITイベントにでます!! ブログ:Zenn(sho__) 普段の業務:⽣成AIやRAGを利⽤したシステム構築

Slide 3

Slide 3 text

© solvio, inc. 3 コードのレビューをもらう‧する際に不便を感じたことはないですか??

Slide 4

Slide 4 text

© solvio, inc. 4 背景や現状の課題 コードレビューの現状 - レビューに⼯数がかかってしまう。 - コード規約を徹底するのが難しい - レビュアーごとに指摘基準がバラバラ - ジュニアエンジニアが規約を覚えるのに時間がかかる 解決したい問題 - レビュアーの⼯数軽減 - レビュー内容の属⼈性の減少 - 規約の⼀貫した適⽤ - 本質的なロジックレビューに集中できるように

Slide 5

Slide 5 text

© solvio, inc. 5 課題解決のために今回作成したシステムの全体フロー

Slide 6

Slide 6 text

© solvio, inc. 6 RAGとは?? ⾃社に蓄積された業務⽂書‧規定などの社内情報、外部の最新情報を活 ⽤する⼿段として、データを検索して情報を抽出し、それに基づいて⼤ 規模⾔語モデル(LLM)に回答させる⽅法のことです。 普通LLMが回答できないことを回答できるようにするための⼿法

Slide 7

Slide 7 text

© solvio, inc. 7 Reusable Workflowの構成(呼び出し元) 1.リポジトリを checkout 2.Git差分と周辺コードを取得 (git diff origin/main…HEAD) 3.Secrets(OPENAI_API_KEY, GITHUB_TOKEN) をPythonに渡す 4.Pythonスクリプトで処理開始 このWorkflowにて⾏っていること • レビュー対象RepoからこのWorkflowを呼び出しレビューの実⾏ • 事前にSecretsにAPIキー設定必須 • GitHub Token も使ってPRにコメント投稿 Workflow⼀部抜粋

Slide 8

Slide 8 text

© solvio, inc. 8 メインスクリプト 1.取得したdiffとその周辺コードをもとに関連 コード規約を取得 2. コード規約とdiffを⼊⼒としてLLMにてレ ビュー作成 3. 総合判断としてカテゴライズ Approve / Requested Changes /Comment 4.GitHubへレビュー投稿 メインスクリプト⼀部抜粋 メインスクリプトにて⾏っていること

Slide 9

Slide 9 text

© solvio, inc. 9 プロンプトサンプル プロンプト⼀部抜粋 ⼊⼒データとして - コード規約 - コード差分とその周辺 を受け取り、その情報からコードをレビュー をするようなプロンプト

Slide 10

Slide 10 text

© solvio, inc. 10 サンプルコード規約 プロンプト⼀部抜粋 今回使⽤するコード規約に関しては、GPTに 出⼒してもらい、RAGの参照データとして⼊ ⼒しておきます

Slide 11

Slide 11 text

© solvio, inc. 11 実際のレビュー

Slide 12

Slide 12 text

© solvio, inc. 12 実際のレビュー レビューの内容 - Approve/Requested changes/Commentの分類 - どのコード規約を参照して回答しているか - 何故修正が必要なのか - 修正案の提⽰ 実際のレビュー(⼀部抜粋) レビュー対象 - 5つのファイルでのコード変更 - ⾔語に関してはPythonを利⽤している

Slide 13

Slide 13 text

© solvio, inc. 13 実際のレビュー 実際のレビュー(⼀部抜粋) 【コメントの記載忘れ】 関数の説明をせずに怒られてしまいました、、 【機密情報のハードコーディング】 FrontendのURLハードコーディングしてしまって Requested Changesに、、

Slide 14

Slide 14 text

© solvio, inc. 14 現状の評価(Good Points) 【コスト】  1PRに対して5円程度(5ファイルでの変更、IN:4000 / OUT:1000 / TOTAL:5000)  ⇩  エンジニアが⾏う際の⼈件費に⽐べるとコスパ◎ 【時間】  1分前後  ⇩  ⼈間が⾏う際に20分だとしても⼤幅減少(参考) レビューが早いのでエンジニアは早期対応→効率化 【規約の網羅性】  体感ですとかなり網羅している  ⇩  ⼈間が⾏うと⾒落としが存在する点の改善

Slide 15

Slide 15 text

© solvio, inc. 15 現状の評価(Negative Poins) 【変更点が多い時の挙動】  コードが多くなった時に全体を通したコードができていないことがある  ⇩  Diffごとにレビューするような仕組みへの変更 【⾔語に対する精度】  Python以外の⾔語に対する精度が変わる可能性がある  ⇩ ⾔語ごとに使⽤するモデルの変更 【不明なレビュー】  レビューの際に関係ないコード規約を参照している  ⇩  抽出したコード規約を評価するシステムの導⼊

Slide 16

Slide 16 text

© solvio, inc. 16 今後の展望 - ⾃動修正PR: - AIが出した修正案にて⾃動PR提出 - 教育⽤システムとしての⽅向 - 新卒‧未経験エンジニア向けの「AIコードメンター」システム化 - セキュリティ対策 - OSSのLLMを使⽤することでのセキュリティ強化

Slide 17

Slide 17 text

No content