👀
Github IssueからPull Requestを自動で作成してくれるCode Agent ライブラリを作ってみた
使い方
以下のような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-code や codex はよさそうだが、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