EXPLAZA Tech Blog

株式会社エクスプラザのテックブログです

コミットからPRまでの自動化! llm・OpenCommit・pr-agentを連携してコード改善を効率化

EXPLAZAの jun です。
開発現場では、コミットメッセージの作成、プルリクエストのレビュー、コード改善提案などの作業に多くの時間を費やしています。これらの手作業が開発の足かせとなり、生産性の低下を招いています。しかし最近では、llm、OpenCommit、pr-agentなどのAIツールを組み合わせることで、これらの作業を自動化し、効率的な開発を実現できるようになってきました。本記事では、これらのツールを使ってGitHubでのコミット、レビュー、コード改善を自動化する具体的な方法を紹介します。

今回は以下のAIツールを使っていきます。

  • simonw/llm
    コマンドラインからLLMにアクセスができるようになります。 github.com

  • di-sukharev/opencommit
    コミットを作成してくれます。 github.com

  • Codium-ai/pr-agent
    プルリクエストのレビュー、説明文の入力、コードの改善案をしてくれます。 github.com

事前準備

まずAIツールをそれぞれインストールしてみましょう!

llmのインストールとOpenAI keyの登録

Homebrewもしくはpipでインストールしてください。

brew install llm
pip install llm

次はOpen AI keyの登録です。

llm keys set openai

以下のようにキー入力が求められます。
Enter key: <paste here>

OpenCommitのインストールとOpenAI keyの登録

npm install -g opencommit

次はOpen AI keyの登録です。

oco config set OCO_OPENAI_API_KEY=<OpenAI key>

.envに以下を追加して、一行のコミットメッセージが作成されるようにします。

OCO_ONE_LINE_COMMIT=true

pr-agentをGithub Actionsで導入

対象となるリポジトリの Actions Secret に OPENAI_KEY を追加し、 OpenAI のkeyを登録します。

Actions Secret

次に.github/workflows/pr-agent.yamlにワークフローを定義していきます。

name: pr-agent

on:
  pull_request:
    types: [opened, reopened, synchronize]
  issue_comment:
    types: [created, edited]

permissions:
  pull-requests: write
  issues: write

jobs:
  pr_agent:
    runs-on: ubuntu-latest
    name: Run PR Agent
    if: ${{ github.event.sender.type != 'Bot' }}
    steps:
      - id: pr-agent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_REVIEWER.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          PR_DESCRIPTION.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          PR_CODE_SUGGESTIONS.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          GITHUB_ACTION.AUTO_REVIEW: true
          GITHUB_ACTION.AUTO_DESCRIBE: true
          GITHUB_ACTION.AUTO_IMPROVE: true

プルリクエストが作成されたタイミングで、レビュー、説明文の入力、コードの改善案が実行されるように定義しています。

GITHUB_ACTION.AUTO_REVIEW: true
GITHUB_ACTION.AUTO_DESCRIBE: true
GITHUB_ACTION.AUTO_IMPROVE: true

実践

ここからは準備したAIツールを使っていきます。 まず.github/workflows/pr-agent.yamlを作成したので、llmを使ってブランチ名を作成します。

cat .github/workflows/pr-agent.yaml | llm -m gpt-4 -s "ブランチ名を考えてください"

pr-agent-enhancementが作成されました。


次はllmとOpenCommitを使ってコミットメッセージを作成していきます。

cat .github/workflows/pr-agent.yaml | llm -m gpt-4 -s "コミットメッセージを作成してください"

llmではAdded PR agent and updated workflowsが作成されました。


OpenCommitでも作成していきます。

git add .github/workflows/pr-agent.yaml

opencommit

作成されたコミットメッセージが問題なければ、「Yes」を選択してください。
 Confirm the commit message?
│  ● Yes / ○ No

OpenCommitでは以下のようなコミットメッセージが生成されました。こちらのコミットメッセージを使っていきます。
feat(pr-agent.yaml): add GitHub Actions workflow for pr-agent to automate PR reviews and descriptions with support for Japanese language instructions


最後にプルリクエストを作成して、pr-agentを試します。 GitHub Actions の実行が完了するとプルリクエストの説明文が入力されました。


レビュー結果とコードの改善案もコメントされています。


これで、AIを活用して開発プロセスを効率化する方法についての紹介は終わりです。今回紹介したツールは、コミットメッセージの作成からPRのレビューまで、一連の開発作業をAIの力で支援します。技術の進化は日々加速しており、これらのツールも進化し続けるでしょう。これらの新しいツールを取り入れることで、より生産的な作業に集中できるようになります。
みなさんもぜひ試してみてください!!