👀

Github IssueからPull Requestを自動で作成してくれるCode Agent ライブラリを作ってみた

に公開

https://github.com/igtm/llm-coder-action
https://github.com/igtm/llm-coder

使い方

以下のようなyamlファイルを設置する

.github/workflows/llm-coder.yml
name: LLM Coder

on:
  # Issue or Pull Request へ コメントをした時
  issue_comment:
    types: [created]
  # Pull Request へ レビューコメントをした時
  pull_request_review_comment:
    types: [created]

permissions:
  contents: write
  pull-requests: write
  issues: write

jobs:
  llm-coder:
    # ユーザーが `/llm-coder` から始まるコメントだけに絞る
    if: startsWith(github.event.comment.body, '/llm-coder') && github.event.comment.user.type != 'Bot'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Run llm-coder
        uses: igtm/llm-coder-action@v1
        with:
          llm_coder_command: '/llm-coder'
          llm_model: ${{ vars.LLM_MODEL || 'gpt-4o' }}
          github_token: ${{ secrets.GITHUB_PAT }}
          extra_pip: "boto3 poetry"
        # env:
        #   https://docs.litellm.ai/docs/providers/ を参照して使いたいモデルのAPIKEYなどを設定をしてください
        #   OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}  # For OpenAI users
        #   AWS_REGION_NAME: ${{ vars.AWS_REGION_NAME }}   # For Bedrock users

これだけで、LLMが指示に従ってコードを書き、必要に応じて自動的にlintやテスト、修正まで行った後、コミットとPullRequestの作成まで行ってくれます。コミットメッセージやPullRequest説明文もLLMが生成してくれます。

作った背景

SWE-agent は Pythonコードを対象にしているし、 claude-codecodex はよさそうだが、Github Actions上で動かすのに苦労したので、もっとシンプルなものがほしいと思い自分で作ってみました。

かなりシンプルな作りになっており、計画フェーズを一度実行後、ファイル操作のツールorシェル実行のツールを繰り返すだけです。Claude 3.7 のモデルを使って試してみましたが、結構複雑な指示でもしっかり修正してくれてます。

System Prompt も toml設定ファイルから設定できるようにしているのでどのようなテストコマンドを実行してほしいかなどをプロジェクトごとで書いておくと、コード修正後に実行してくれるようになります。

内部ではlitellmライブラリを使ってるので、OpenAIやClaudeなど様々なモデルを利用できます。

設定はrootに以下のようなTOMLファイルを置くことでできます。

# llm-coder-config.toml
model = "claude-3-opus-20240229"
temperature = 0.5
max_iterations = 10
allowed_dirs = ["."]
repository_description_prompt = "このリポジトリはPythonのユーティリティツールです"

より詳細な設定例

llm-coder 自体は cli の CodingAgentライブラリなので、例えばSlackAPIと連携して 自前Devinを作るとかもできると思います。


おまけ

GitHub Copilot Coding Agent が パブリックプレビューになったので、Copilot ユーザーはこれ使ったほうがいいかもですね

Discussion