さくらインターネットが提供する「さくらのAI Engine」を利用して、PR-Agentを構築する方法について解説します。 さくらインターネットの中の人としてこれを開発に使わないという選択肢はないでしょう。
さくらのAI Engineとは
さくらの生成AIプラットフォームの「さくらのAI Engine」は、さくらインターネットが提供する生成AIモデルを利用できるサービスです。
「さくらのAI Engine」は従量課金型で様々な生成AIモデルを使える基盤プラットフォームサービスです。
対応しているLLMモデルはすべてさくらインターネットによりホスティングされているため、データはすべてお客様と
さくらインターネット間の通信だけで完結し、チャット補完などに使われるデータはLLMモデルなどのの学習に使われることのない、
データ安全性の高いサービスです。
ということで、国産企業が提供するため、海外にデータが送信されることなく、安心して利用できるのが特徴です。
PRエージェントとは
PR-Agentは、GitHubのプルリクエストをLLM(大規模言語モデル)を活用して自動的にレビューするツールです。 PR-Agentは、コードの変更点を理解し、潜在的な問題や改善点を指摘することができます。 これにより、開発者はコードレビューの負担を軽減し、品質の向上に集中できます。
さくらのAI EngineでPR-Agentを利用する
マニュアルに沿って、さくらのAI Engineのアカウントトークンを取得します。
PR-Agentを使うリポジトリにTOKENを設定する
GitHubのリポジトリのSettings > Secrets and variables > Actionsに移動し、SAKURA_AI_ENGINE_API_KEYという名前でシークレットを追加します。
GitHub Actionsの設定
PR-AgentはGitHub Actionsを利用して動作します。リポジトリの.github/workflowsディレクトリに以下のようなYAMLファイルを作成します。
今回は、モデルとして、Qwen3-Coder-480B-A35B-Instruct-FP8を利用します。
name: PR-Agent
on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
issue_comment:
types: [created, edited]
workflow_dispatch:
permissions:
issues: write
pull-requests: write
contents: write
jobs:
pr_agent_job:
runs-on: ubuntu-latest
name: Run pr agent on every pull request
steps:
- name: PR Agent action step
id: pragent
uses: qodo-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.SAKURA_AI_ENGINE_API_KEY }}
OPENAI__API_BASE: https://api.ai.sakura.ad.jp/v1
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
github_action_config.auto_review: "true"
github_action_config.auto_describe: "true"
github_action_config.auto_improve: "true"
config.model: "openai/Qwen3-Coder-480B-A35B-Instruct-FP8"
config.custom_model_max_tokens: "100000"
config.fallback_models: '[ "openai/Qwen3-Coder-480B-A35B-Instruct-FP8" ]'
pr_reviewer.extra_instructions: >-
日本語で回答してください。
pr_description.extra_instructions: >-
日本語で回答してください。
pr_code_suggestions.extra_instructions: >-
日本語で回答してください。
pr_code_suggestions.num_code_suggestions: "2"
openai/ をモデル名のプレフィクス入れないとPR-Agentが認識しないので注意してください。
実際に動かしてみる
PR-AgentのGitHub Actionsがトリガーされ、プルリクエストに対して自動的にレビューコメントが追加されます。 ということで、いかにも指摘されそうな、main.goを作成して、PRを作成してみます。
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
name = "World"
}
body, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, "Unable to read body", http.StatusBadRequest)
return
}
r.Body.Close()
fmt.Fprintf(w, "Hello, %s!", name)
fmt.Fprintf(w, "\nYou sent: %s", string(body))
}
func calculate(x int, y int) int {
result := x + y
return result
}
func processData(data []string) {
for _, item := range data {
fmt.Println(item)
}
}
PRを作成すると、PR-AgentのCIが動作します。
しばらくすると、PRにDescriptionとReviewコメントが追加されます。
まとめ
- テストリポジトリ
- PR-Agent + さくらのAI Engineでコードレビューを自動化できた
- さくらのAI Engineは国産の生成AIプラットフォームで、データの安全性が高い
- OpenAIのAPIを利用するより国外にデータが送信されないので安心(心理的にも)




