Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon BedrockとPR-Agentでコードレビュー自動化に挑戦・実際に運用してみた

morimorikochan
September 26, 2024

Amazon BedrockとPR-Agentでコードレビュー自動化に挑戦・実際に運用してみた

"CATs #2 :AI駆動型開発の最前線:GitHub Copilot Workspace、Claude、Bedrockが変える開発スタイル" にてお話しした内容です。

https://cats.doorkeeper.jp/events/177177

morimorikochan

September 26, 2024
Tweet

More Decks by morimorikochan

Other Decks in Technology

Transcript

  1. 󰡸探してみました (GitHub) Copilot for Pull Requests • pull requestの概要を⾃動出⼒し てくれるサービス

    • Enterpriseプランでしか提供して いない • Diffを⾒て⾃動でコードレビューし てくれるサービス • これはお蔵⼊りになったぽい https://githubnext.com/projects/copilot-for-pull-requests
  2. 󰡸探してみました (AWS Machine Learning Blog) Enhance code review and approval

    efficiency with generative AI using Amazon Bedrock • 利⽤するサービスが多く管理コ ストが⾼い • レビュー結果がメールで届く ◦ メールだと⾒落としちゃう... https://aws.amazon.com/jp/blogs/machine-learnin g/enhance-code-review-and-approval-efficiency- with-generative-ai-using-amazon-bedrock/
  3. 󰡸探してみました coderabbitai/ai-pr-reviewer • CodeRabbitのOSS版 • モデルはChatGPT • PRの要約もできる • アーカイブされている

    tmokmss/bedrock-pr-reviewer • 左記のfork • モデルにAmazon BedRockを利 ⽤できる • GitHubのスター数39 https://github.com/coderabbitai/ai-pr -reviewer https://github.com/tmokmss/bedroc k-pr-reviewer
  4. OSS版で利⽤可能なツール 1. /describe : PRの概要を⾃動記⼊する 2. /review : PRのコードレビューを⾏いコメントに追加する a.

    不具合やセキュリティリスク 3. /improve : PRのコードレビューを⾏いコメントに追加する a. 保守性やパフォーマンスやテスト容易性など 4. /ask : コメントの質問に対して回答する 5. /update_changelog : PRの修正に応じてCHANGELOG.mdを出⼒ 6. /similar_issue :類似するissueを出⼒ ※有料プラン(PR-Agent Pro)だと他にもコマンドがあります 󰴻PR-Agentとは / コードレビュー以外にも⾊々できる
  5. 主要なコマンドは以下3つ 1. /describe : PRの概要を⾃動記⼊する 2. /review : PRのコードレビューを⾏い結果をコメントする a.

    不具合やセキュリティリスク 3. /improve : PRのコードレビューを⾏い結果をコメントする a. 保守性やパフォーマンスやテスト容易性など 4. /ask : コメントの質問に対して回答する 5. /update_changelog : PRの修正に応じてCHANGELOG.mdを出⼒ 6. /similar_issue :類似するissueを出⼒ 󰴻PR-Agentとは / コードレビュー以外にも⾊々できる
  6. 利⽤できるモデル • ChatGPTの4o • Llama • Google Cloud のVertexAIで提供されているモデル •

    Amazon Bedrockで提供されているモデル • Groqで提供されているモデル • IBM watsonxで提供されているモデル • ✨ChatGPTのo1-preview/o1-mini ✨ • … 󰴻PR-Agentとは / 利⽤可能なモデルが多い
  7. GitHub Actionsのワークフローが ドキュメントに⽤意されている ※ローカルCLI, GitLab, BitBucket, Azure Devopsなどからでも実⾏可能 ※モデルにAmazon BedRockを利⽤す

    る場合は、別途AWSの認証情報設定が 必要 󰴻PR-Agentとは / GitHub Actionsで導⼊が簡単 on: pull_request: types: [opened, reopened, ready_for_review] issue_comment: jobs: pr_agent_job: if: ${{ github.event.sender.type != 'Bot' }} runs-on: ubuntu-latest permissions: issues: write pull-requests: write contents: write name: Run pr agent on every pull request, respo steps: - name: PR Agent action step id: pragent uses: Codium-ai/pr-agent@main env: OPENAI_KEY: ${{ secrets.OPENAI_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  8. 👊試してみた結果 / 1.⽇本語で出⼒されない場合がある You must always answer in Japanese. 必ず⽇本語で回答してください。

    ⽇本語を指定しても、そうならな い場合がありました • 特に /describe でよく発⽣ • プロンプトの指定が⽢かっ た? ダメだった場合
  9. 必要な費⽤ • PR-AgentのOSS利⽤:0円 • GitHubActionsの費⽤:(場合によりけり) • Amazon Bedrock(Claude 3 Haiku)の費⽤

    ◦ ⼊⼒トークン 1,000 個あたり 0.00025 USD ◦ 出⼒トークン 1,000 個あたり 0.00125 USD 👊試してみた結果 / コストが低い
  10. コード差分 \ コマンド /describe /review /improve 合計 +0 -41 $0.000852

    0.12円 $0.000916 0.13円 $0.005358 0.76円 1.01円 +251 -0 $0.0014 0.20円 $0.00139 0.20円 $0.00130 0.18円 0.58円 +600 -61 $0.0053 0.75円 $0.0047 0.67円 $0.01368 1.94円 3.36円 👊試してみた結果 / コストが低い 必要な費⽤(Amazon Bedrock(Claude 3 Haiku))
  11. • PR-Agentを使うことで、⽣成AIを利⽤しPRの概要⾃動⼊⼒‧⾃動コード レビューを⾏うことができた • AWS‧GitHubActions上で動作できるため、既にこれらを利⽤している場 合導⼊コストがとても⼩さい • 運⽤コストはSaaSに⽐べて低い • 現状ではいくつか課題がある

    ◦ ⽇本語で出⼒されない場合がある ▪ プロンプトの改善で解消される可能性あり ◦ 設定をチューニングしにくい ◦ 指摘がイマイチ... ▪ コードレビューの指摘はむやみに信⽤せず、参考程度に留めるべき 📚まとめ
  12. You are PR-Reviewer, a language model designed to review a

    Git Pull Request (PR). Your task is to provide a full description for the PR content - files walkthrough, title, type, and description. - Focus on the new PR code (lines starting with '+'). - Keep in mind that the 'Previous title', 'Previous description' and 'Commit messages' sections may be partial, simplistic, non-informative or out of date. Hence, compare them to the PR diff code, and use them only as a reference. - The generated title and description should prioritize the most significant changes. - If needed, each YAML output should be in block scalar indicator ('|-') - When quoting variables or names from the code, use backticks (`) instead of single quote ('). Extra instructions from the user: ===== {ユーザーが指定したプロンプト} ===== …(省略) 📚モデルに送られているプロンプト
  13. 😈プロジェクト⽴ち上げの課題 チーム
 ビルディング 
 顧客の
 意思決定 
 が遅い
 PJ概要 


    の理解
 顧客の
 事業理解 
 新しい技術の キャッチアッ プ
 アサイン 
 調整
 プリセールス時 と話しが違う 
 🤔
  14. マッハチームの特徴 ✔ 固定チーム → チームビルディングが不要 ✔ 技術スタックをチームで 標準化・パッケージ化   →

    最小限の時間で環境構築を行える   → PJ毎の技術的なキャッチアップが最小限に抑えられる ✔ プリセールスから開発まで一貫 して担当   → PJ概要を全て把握した状態でスタートできる ✔ 数多くプロダクトを開発してきた経験   → 顧客が意思決定に迷うポイントを先回り してサポート
  15. 技術 採⽤技術スタック ⾔語 TypeScript(JavaScript) フロントエンド React.js, Next.js, Flutter CI/CD GitHub

    Actions 開発プラットフォーム GitHub IaC AWS CDK コンピューティング Lambda, ECS on Fargate データベース DynamoDB, Aurora 認証基盤 LINE認証、Auth0 その他(AWS関連) API Gateway, ALB, WAF, SQS, SNS, EventBridge, AppSync, etc… デザイン Figma 使⽤する技術スタック