じゃあ、おうちで学べる

思考を呼び覚ます このコードに、君は抗えるか。

まずPR-AgentをPromptとします。

「ツールよりもプロンプトのほうが、隙間がなくて効率的なのでは?」... ああ、面倒なブログになるな、とおれは直感した。

はじめに

近年、プルリクエスト(PR)の管理が開発フローにおいてますます重要な位置を占めるようになっています。ただし、PRをより良く作る作業は往々にして煩雑で手間がかかりがちです。その解決策として、Codium AIによって開発されたPR-Agentが脚光を浴びています。このAIソフトウェアは、OpenAIのGPT-4技術を基盤にしており、単にOpenAIのAPIキーを設定するだけで、既存のCI/CDパイプラインに簡単にインテグレーションできます。

github.com

PR-Agentの主な機能

PR-Agentは、様々なPR関連作業を自動化するための多機能なオープンソースプロジェクトです。具体的には、以下のような機能群を提供しています。

PR-AgentはOpenAIのAPIキーを設定するだけでCI環境に簡単に組み込め、開発者が効率的なPR作成と管理を行えるよう支援します。このツールはGPT-4を用いて高精度なソースコード解析とレビューを自動で行い、開発者が重要なポイントに集中できるようにします。さらに、「PR Compression Strategy」と呼ばれる独自のアルゴリズムによって、大規模なPRでも重要なファイルと主要な言語のコードブロックに焦点を当てた効率的なレビューが可能です。それ以外にもさまざまな設定により、PR-AgentはPR作成とレビューのプロセスを自動化し、効率化する強力なツールであり、大規模プロジェクトにおいてもスムーズかつ効率的なレビュープロセスを実現します。これらをどのように動作させればよいのかはUsage guideを読んでみてください。

PR-Agent のPrompt

PR Compression Strategyにより、送信するファイルの戦略が定められています。その設定に加えて、pr-agent/pr_agent/settings/ ディレクトリには、TOML形式でプルリクエスト(PR)のレビュープロンプトのテンプレートが含まれています。具体的には、pr_review_promptpr_reviewer_prompts.toml ファイルに定義されており、これがPRのレビュープロセスにおける基本的な指示とフォーマットを規定しています。この構成により、PRレビューが一貫性を持ち、効率的に行えるよう設計されています。

pr_reviewer_prompts.toml 解説

pr_reviewer_prompts.tomlは、Pull Request(PR)レビューに関する設定と指示を定義する設定ファイルです。この設定ファイルは、PRレビューを自動化する際に利用されます。

pr_review_prompt セクション

system

この設定は、レビュワーがどのような役割を果たすべきかを定義しています。具体的なPR Diffの入力例も提供され、新しく追加されたコード(+で始まる行)に焦点を当てるよう指示されています。

system="You are PR-Reviewer, a language model designed to review git pull requests. ..."

num_code_suggestions

コード提案が必要な場合、その数や重要度についての指示がこの部分に記載されています。

{%- if num_code_suggestions > 0 %}
- Provide up to {{ num_code_suggestions }} code suggestions. ...
{%- endif %}

extra_instructions

パラメータで、追加的な指示や設定を行うために使用されます。この項目は主に以下のような用途で利用されることが多いです。

{%- if extra_instructions %}
Extra instructions from the user:
{{ extra_instructions }}
{% endif %}

YAMLスキーマ

この部分で、PRレビュワーが出力するレビュー結果のYAMLフォーマットが定義されています。

Main theme, PR summary, Type of PR, etc.

これらは、PRに関する基本情報を整理するためのフィールドです。

Main theme:
  type: string
  description: a short explanation of the PR

Score, Relevant tests added, Insights from user's answer, etc.

これらのフィールドは、PRに関する詳細な評価やテスト情報、ユーザーからのフィードバックに基づく評価を行います。

Score:
  type: int
  description: Rate this PR on a scale of 0-100 ...

General suggestions, Code feedback, Security concerns

これらのフィールドは、具体的なコード提案やセキュリティ上の懸念など、PRのコードに関する詳細なフィードバックを提供します。

General suggestions:
  type: string
  description: General suggestions and feedback for the contributors ...

user セクション

このセクションは、PR作成者から提供される情報(タイトル、ブランチ、説明文など)を取り込む場所です。

user="PR Info:
Title: '{{title}}'
Branch: '{{branch}}'
Description: '{{description}}' ..."

この設定ファイルによって、PRレビューのプロセスが自動化され、一貫性を持つようになります。特定のプロジェクトやチームに特有の要件に応じて、これらの設定はカスタマイズ可能です。

まとめ

pr_reviewer_prompts.tomlといった設定ファイルを読んで全体としてPRのフォーマットに忠実にプロンプトを作成していったのがわかりました。参考にしていきたいと思います。

github.com

参考