for Startups Tech Blog

フォースタ社員のエンジニアたちが思い思いのことを書き綴ります。

【GitHub Actions】actions/ai-inferenceを活用して痒いところを自動化しよう

目次

はじめに

こんにちは、フォースタートアップス株式会社エンジニアの野尻(@jsotakebmx)です。ヒューマンキャピタル支援システム(社内プロダクト)の開発を担当しています。

早速ですが、みなさんはGitHub ActionsでAIを活用できていますか?

「CI/CDにAIを組み込みたいけど、APIキーの管理やコスト計算、場合によっては稟議も必要で...」と二の足を踏んでいる方も多いのではないでしょうか。かく言う私もその一人でした。

この記事では、GitHub CopilotユーザーならAPIキー管理不要・追加契約不要でサクッと使えるactions/ai-inferenceを活用して、日々の開発業務の「ちょっと面倒な作業」から解放される術を紹介します。

actions/ai-inferenceとは?

actions/ai-inferenceは、GitHub公式が提供するGitHub ActionsでGitHub Modelsを手軽に呼び出すためのアクションです。

github.com

GitHub Models上の多様なモデル(GPT-5-mini, DeepSeek-v3, Phi-4など)のAPIを内部的に叩く形でテキスト生成や要約、コード解析などをCI/CDパイプラインの一部として実行することができます。

詳細は後述いたしますが、以下の様にactions/ai-inference@v1を呼び出すだけで簡単にGitHub Modelsをworkflow内で使うことができます。

name: 'AI inference'
on: workflow_dispatch

jobs:
  inference:
    permissions:
      models: read
    runs-on: ubuntu-latest
    steps:
      - name: Test Local Action
        id: inference
        uses: actions/ai-inference@v1
        with:
          prompt: 'Hello!'

      - name: Print Output
        id: output
        run: echo "${{ steps.inference.outputs.response }}"

公式引用

また、利用可能なモデルのカタログは以下で検索できますので興味ある方は見ていただけると色々試せて面白いと思います。

github.com

なぜactions/ai-inferenceなのか?

Claude Code GitHub ActionsGemini CLI GitHub Actionsもあるじゃん?」と思われるかもしれません。

確かにこれらは非常に強力なのですが、組織(人)によっては導入までの「社内調整コスト」に大きな差があると個人的には考えています。

他のAI Actionsとの比較

項目 actions/ai-inference Claude / Gemini
認証 GITHUB_TOKEN でOK API キー管理など
契約 GitHub 契約内で利用可能 ベンダーごとの契約・決済登録が必要
用途 日々の運用自動化(要約・分類) ガッツリ機能開発・コード修正

特に「認証」と「契約」の壁は無視できません。

Claude Codeには無料割り当てがなく、利用には契約や課金が必須ですし、Gemini CLIにはGoogle AI Studioの無料枠はありますが、コードがAIの学習に用いられてしまうため、組織で活用する場合は無料枠を使う選択肢は実質ないと思います。

一方GitHub Modelsは、各GitHubアカウントごとに無料枠(ただしレート制限あり)が割り当てられており、コードが無断で学習に用いられることはありません。

「PRの要約や社内リリースノートを自動化したいだけなのに、予算を決めて、稟議を通してSecretsキーを発行して...」というのは、正直気が滅入りますよね。私は滅入ります。

そんな同志たちにこそ是非おすすめです。

docs.github.com

実践:リリースノート自動生成ワークフロー

では、実際に「痒いところ」を自動化してみましょう。

解決したい「痒いところ」

私のチームでは、PRをマージした後にSlackで「これリリースしました」と報告する運用があるのですが、変更内容をまとめて書くのが地味にめんどくさい瞬間があります。

文化的に(チームへの)リリース報告では詳細の報告も特段していないので、変更内容が知りたければIssueやPRまで個々で見に行く必要があります。

チーム内のリリース報告の様子

そこで、「mainブランチにマージされたら、GitHub ModelsがPRの内容を要約して、Slackにリリースノートを投稿する」ワークフローを作ってみました。

権限設定(最重要)

このアクションを使うには、permissionsブロックでmodels: readを許可する必要があります。これがないと動きません。

jobs:
  summarize-release:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      models: read # <--- これがAI呼び出しに必要!

AIアクションの呼び出し

PRの取得方法に関しては本題から逸れるので詳細省きますが、ghコマンドやGraphQLを駆使してPRのコミットメッセージやタイトルを取得します。

# 一部抜粋
PR_NUMBER="${{ github.event.pull_request.number }}"

# PRの基本情報とコミット情報のみを取得(コメント、レビュー、差分は除外)
gh pr view $PR_NUMBER --json title,body,number,author,url,commits,baseRefName,headRefName > pr-info.json

# ベースブランチとヘッドブランチを取得
BASE_REF=$(jq -r '.baseRefName' pr-info.json)
HEAD_REF=$(jq -r '.headRefName' pr-info.json)

# 差分の統計情報のみを取得(git diff --stat で要約)
git diff --stat origin/$BASE_REF...origin/$HEAD_REF > pr-diff-stat.txt

# PR情報を整形してファイルに保存
cat > pr-context.txt << 'EOF'

あとはとてもシンプルで、以下のようにai-inferenceのプロンプトに上記取得した内容を渡してやるだけです。

- name: Generate release notes with AI
  id: ai-inference
  uses: actions/ai-inference@v1
  model: openai/gpt-5-mini # モデルを指定
  max-tokens: 4000 # 生成するトークンの最大数

  prompt: ${{ steps.read-context.outputs.context }}  # 前段Stepで取得したPRの内容
  system-prompt-file: './path/system-prompt.txt'  # システムプロンプトのfile pathで指定できる

今回の例だとこんな感じのリリーステンプレートにしました。

渡されたPRの内容を元に、リリースノートを作成してください。
リリースノートは以下のフォーマットに従い、日本語で記述してください。

## やったこと
(30〜100文字程度で要約)

## 主なリリース内容
- (箇条書きで主な変更内容を列挙)
- (該当がなければ「なし」と記載)

## マイグレーションの有無
 (データベースマイグレーションやインフラ変更が必要な場合は詳細を記載、なければ「なし」)

## 注意点
- (デプロイ後の動作確認事項や注意すべき点を記載)
- (該当がなければ「なし」と記載)

Slack通知

あとは、適宜Slackアプリを作ってWebhookなり、chat.postMessage API(OAuthトークン)なりでSlack通知するように組めば完了です。

- name: Slack通知
  uses: slackapi/slack-github-action@v1.24.0
  with:
    payload: |
      {
        "text": "🎉 リリースされました!\n\n${{ steps.ai_summary.outputs.answer }}"
      }
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

これで、mainにマージされるたびに自動でリリースノートが流れるようになりました。やったー

Slackに通知されたリリースノート

その他の活用アイデア

他にも、以下の使い方を検証中です。「こんな使い方してます」というのがあれば何卒ご教授ください🙏

  1. Issueの自動トリアージ
    • Issueが起票されたら、「バグ」か「機能要望」かをAIに判断させて自動でラベルを貼る。
  2. エラーログの自動解析
    • ビルド落ちした時に、膨大なログから原因と修正案をAIに提示させる。

まとめ

actions/ai-inferenceは、面倒な設定なしでGitHub ActionsにAIを組み込める便利なツールです。

非常にハードルは低いので、まずは「PRの要約」や「Issueの自動トリアージ」といった小さなタスクから試してみてはいかがでしょうか?「これ、GitHub Modelsにやらせてみましょう」とチームに提案して、開発体験を向上させていきましょう!