さくらのAI Engineを利用したPR-Agentの利用
プログラミング
Published: 2025-09-24

さくらインターネットが提供する「さくらの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という名前でシークレットを追加します。

secret

secret token

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-agent-ci

しばらくすると、PRにDescriptionとReviewコメントが追加されます。

description

review

まとめ

  • テストリポジトリ
  • PR-Agent + さくらのAI Engineでコードレビューを自動化できた
  • さくらのAI Engineは国産の生成AIプラットフォームで、データの安全性が高い
  • OpenAIのAPIを利用するより国外にデータが送信されないので安心(心理的にも)