GitHub Models 学習ガイド
概要
GitHub Modelsは、AIモデルの検索、テスト、評価、本番環境への統合を支援する開発者向けツールスイートです。複数のAIモデル(GPT-4、Claude、Gemini等)を無料で試用でき、プロンプトの最適化、モデル間の比較、定量的な評価を通じて、最適なAI駆動型アプリケーションを構築できます。
具体的に何ができるのか:
-
コードレビューボットの開発:GPT-4とClaude 3.5を同時にテストし、どちらがより建設的なフィードバックを提供するか比較。レスポンス時間とコストを可視化し、最適なモデルを選定できます。
-
多言語カスタマーサポート:日本語の問い合わせを英語に翻訳→回答生成→日本語に再翻訳する一連の処理で、各ステップに最適なモデルを選択。類似性スコアで翻訳品質を数値化して評価できます。
-
ドキュメント自動生成:同じコードに対して複数のモデルでドキュメントを生成し、技術的正確性(根拠性スコア)と読みやすさ(関連性スコア)を定量的に比較。プロンプトをYAMLファイルとして保存し、チーム全体で共有・改善できます。
なぜすごいのか: - 即座に開始:APIキーの取得不要、GitHubアカウントだけで主要AIモデルをテスト - 定量的な評価:「なんとなく良い」ではなく、数値で品質を比較 - チーム開発に最適:プロンプトをコードと同様にレビュー、バージョン管理 - コスト削減:本番環境移行前に最適なモデルを選定し、無駄な出費を防止
このガイドでは、Git学習アシスタントの構築を例に、GitHub Modelsの基本的な使い方から本番環境への統合まで、実践的に学習します。
学習目標
このチュートリアルを完了すると、以下のことができるようになります:
- GitHub Modelsの基本概念と機能を理解する
- プロンプトエディターを使用してAIモデルをテストする
- 複数のモデルとプロンプトのバリエーションを比較評価する
- エバリュエーターを使用してモデル出力を定量的に評価する
- プロンプト設定をリポジトリに保存し、チームで共有する
- GitHub ActionsやCLIを通じてモデルを統合する
前提条件
- GitHubアカウント
- 基本的なGitの知識
- (オプション)GitHub Copilotサブスクリプション
シナリオ:Git学習アシスタントの構築
このチュートリアルでは、コマンドラインからGitを学習するユーザーを支援するAIアシスタントを構築します。このシナリオを通じて、GitHub Modelsの主要機能を実践的に学習します。
ステップ1:環境の準備
1.1 テスト用リポジトリの作成
- 新しいリポジトリページにアクセス
- リポジトリ名:
git-learning-assistant
- プライベートリポジトリとして作成
- リポジトリの作成をクリック
1.2 GitHub Modelsの有効化
- リポジトリの設定ページを開く
- サイドバーのモデルをクリック
- GitHub Modelsを有効化
ステップ2:基本的なプロンプトの作成
2.1 プロンプトエディターを開く
- リポジトリのモデルタブをクリック
- 新しいプロンプトをクリック
2.2 システムプロンプトの設定
システムプロンプトフィールドに以下を入力:
2.3 ユーザープロンプトの設定
ユーザープロンプトフィールドに以下を入力:
2.4 変数の設定
- 変数ボタンをクリック
{{topic}}
フィールドに以下を入力:
2.5 プロンプトの実行
右上の再生ボタンをクリックして、モデルの応答を確認します。
ステップ3:複数モデルの比較
3.1 比較ビューへの切り替え
- 左上の比較をクリック
- プロンプトを追加→元のプロンプトをコピーを2回実行
3.2 異なるモデルの選択
各プロンプトに対して異なるモデルを選択: - プロンプト1:GPT-4o - プロンプト2:Claude 3.5 Sonnet - プロンプト3:Gemini 1.5 Pro
3.3 テスト入力の追加
入力を追加をクリックして、以下のテスト入力を追加:
入力 | 内容 |
---|---|
1 | リベースとマージの違いと使い分け |
2 | 直前のコミットメッセージを修正する方法 |
3 | 特定のコミットを別のブランチに移動する方法 |
4 | リポジトリ履歴から特定のコミットの作者を見つける方法 |
3.4 比較の実行
実行をクリックして、各モデルの応答を比較します。以下の点に注目: - レイテンシー(応答速度) - トークン使用量(コスト) - 応答の品質と正確性
ステップ4:プロンプトバリエーションのテスト
4.1 同じモデルで異なるプロンプトを比較
すべてのプロンプトで同じモデル(例:GPT-4o)を選択し、ユーザープロンプトを変更:
プロンプト1(標準):
プロンプト2(初心者向け):
プロンプト3(上級者向け):
4.2 結果の評価
各プロンプトバリエーションの応答を比較し、ターゲットユーザーに最適なものを選択します。
ステップ5:エバリュエーターによる評価
5.1 エバリュエーターの追加
- エバリュエーターを追加をクリック
- 以下のエバリュエーターを設定:
類似性エバリュエーター: - 期待される出力を定義し、各モデルの応答がどれだけ近いかを評価
関連性エバリュエーター: - 入力に対する応答の関連性を評価
文字列チェック:
- 名前:「コマンド例の確認」
- 値:git
- 応答にGitコマンドが含まれているかを確認
5.2 評価の実行と分析
実行をクリックして、各エバリュエーターのスコアを確認します。
ステップ6:プロンプトの保存と共有
6.1 プロンプト設定の保存
- プロンプトに名前を付ける:
git-learning-assistant
- 変更をコミットをクリック
- コミットメッセージを入力して保存
6.2 YAMLファイルの確認
保存されたプロンプトは.prompt.yml
ファイルとして保存されます:
name: git-learning-assistant
description: Gitコマンドの使い方を説明するアシスタント
model: gpt-4o
modelParameters:
temperature: 0.3
max_tokens: 1000
messages:
- role: system
content: |
あなたはGitバージョン管理システムの専門家です。
ユーザーがコマンドラインからGitを使用する方法について質問した際、
明確で段階的な説明を提供してください。
- role: user
content: Gitの使い方を学びたいです。{{topic}}について教えてください。
testData:
- topic: ブランチの作成と切り替え
expected: ブランチの作成にはgit branchコマンドを使用し...
// ...existing code...
ステップ7:本番環境への統合
7.1 GitHub Actionsでの使用
このセクションで実現すること:
GitHub Actionsワークフローから保存済みのプロンプト設定(.prompt.yml
)を使って、AIモデルを自動的に呼び出す仕組みを構築します。これにより、Issueが作成されたときに自動的にAIがGitの使い方を回答するヘルプデスクのような機能を実装できます。
なぜこれが便利なのか: - 24時間365日対応: 人間のサポートを待たずに即座に回答 - 一貫性のある品質: 事前に調整したプロンプトで常に同じ品質の回答 - 完全自動化: 手動でAIに聞いてコピペする必要がない - 履歴の保存: Issueとコメントとして記録が残る
実際の動作フロー:
1. ユーザーがタイトルに [Git Help]
を含むIssueを作成
2. GitHub Actionsが自動的に起動
3. Issueの本文(質問内容)を取得
4. 保存済みの git-learning-assistant.prompt.yml
を使ってAIに質問を送信
5. AIが生成した回答をIssueのコメントとして自動投稿
.github/workflows/git-help.yml
を作成:
name: Git Help Issue Comments
on:
issues:
types: [opened]
permissions:
issues: write # Issueにコメントを投稿するため
contents: read # プロンプトファイルを読み取るため
models: read # GitHub Modelsを使用するため
jobs:
provide_git_help:
runs-on: ubuntu-latest
# タイトルに[Git Help]が含まれる場合のみ実行
if: contains(github.event.issue.title, '[Git Help]')
steps:
# リポジトリのコードをチェックアウト(プロンプトファイルを読み込むため)
- uses: actions/checkout@v4
# GitHub Models拡張機能をインストール
- name: Install gh-models extension
run: gh extension install https://github.com/github/gh-models
env:
GH_TOKEN: ${{ github.token }}
# AIモデルを実行してGitの使い方を説明
- name: Generate Git help
run: |
echo "${{ github.event.issue.body }}" |
gh models run --file git-learning-assistant.prompt.yml > response.txt
env:
GH_TOKEN: ${{ github.token }}
# AIの回答をIssueのコメントとして投稿
- name: Post response
run: |
gh issue comment ${{ github.event.issue.number }} --body-file response.txt
env:
GH_TOKEN: ${{ github.token }}
実際の使用例:
Issue タイトル: [Git Help] リベースについて教えて
Issue 本文: git rebaseの基本的な使い方と、mergeとの違いを教えてください
↓ 自動的に以下のようなコメントが投稿される ↓
AIアシスタント:
git rebaseは、コミット履歴を整理するための強力なツールです。
## 基本的な使い方
1. 現在のブランチを最新の状態に更新
...(以下、詳細な説明が続く)
7.2 CLIでの使用
このセクションで実現すること: コマンドラインから直接GitHub Modelsを呼び出し、保存済みのプロンプト設定を使ってAIに質問できるようにします。これにより、開発中にターミナルを離れることなくGitの使い方を調べられます。
なぜこれが便利なのか: - 開発フローを中断しない: ブラウザを開かずにターミナルで完結 - コマンドの出力を直接質問: パイプを使って実際のGitコマンドの結果を基に質問 - スクリプトに組み込み可能: 自動化ツールの一部として使用可能 - オフライン対応: プロンプトファイルはローカルに保存されている
実際の動作フロー: 1. GitHub CLI拡張機能をインストール 2. プロンプトファイルを指定してAIモデルを実行 3. 結果がターミナルに直接表示される
# 拡張機能のインストール(初回のみ)
gh extension install https://github.com/github/gh-models
# 基本的な使い方:単純な質問
echo "リベースの使い方" | gh models run --file git-learning-assistant.prompt.yml
# 実践的な使い方1:変数を使用した質問
gh models run --file git-learning-assistant.prompt.yml --var topic="リベースとマージの違い"
# 実践的な使い方2:システムプロンプトを指定
gh models run openai/gpt-4o "このgit statusの結果を解説してください" --system-prompt "あなたはGitの専門家です"
# 実践的な使い方3:gitコマンドの結果を直接パイプで渡す
git status | gh models run openai/gpt-4o "このgit statusの結果を解説してください"
# 実践的な使い方4:エラーメッセージの解決方法を聞く
git rebase main 2>&1 | gh models run openai/gpt-4o "このエラーの解決方法を教えてください"
# 実践的な使い方5:プロンプトファイルで変数を使用
git log --oneline -10 | gh models run --file git-learning-assistant.prompt.yml --var topic="$(cat)"
具体的な使用例:
# シナリオ:マージコンフリクトが発生した場合
$ git merge feature-branch
Auto-merging src/main.js
CONFLICT (content): Merge conflict in src/main.js
Automatic merge failed; fix conflicts and then commit the result.
# AIに解決方法を聞く(方法1:直接モデルを指定)
$ git status | gh models run openai/gpt-4o "このマージコンフリクトを解決する手順を教えてください" --system-prompt "あなたはGitの専門家です。初心者にも分かりやすく説明してください"
# AIに解決方法を聞く(方法2:プロンプトファイルを使用)
$ git status > conflict.txt
$ gh models run --file git-learning-assistant.prompt.yml --var topic="$(cat conflict.txt)"
# AIの回答:
マージコンフリクトが src/main.js で発生しています。以下の手順で解決してください:
1. コンフリクトが発生したファイルを開く
$ code src/main.js # または好きなエディタで開く
2. コンフリクトマーカーを探す
<<<<<<< HEAD
現在のブランチの内容
=======
マージしようとしているブランチの内容
>>>>>>> feature-branch
3. どちらの変更を採用するか、または両方を組み合わせるか決定
4. コンフリクトマーカーを削除して保存
5. 変更をステージング
$ git add src/main.js
6. マージを完了
$ git commit
詳細な説明が必要な場合は、具体的なコンフリクト内容を共有してください。
プロンプトファイルのカスタマイズ例: 開発チーム向けに特化したプロンプトファイルを作成することも可能:
# team-git-helper.prompt.yml
name: team-git-helper
description: 開発チームのGit運用ルールに基づくアシスタント
model: gpt-4o
modelParameters:
temperature: 0.3
max_tokens: 1500
messages:
- role: system
content: |
あなたは開発チームのGit運用をサポートするアシスタントです。
以下のチームルールに基づいて回答してください:
- feature/*、bugfix/*、hotfix/* のブランチ命名規則
- コミットメッセージは日本語で記述
- プルリクエスト前にrebaseで履歴を整理
- mainブランチへの直接pushは禁止
- role: user
content: "{{topic}}"
プロンプトファイルのカスタマイズ例: 開発チーム向けに特化したプロンプトファイルを作成することも可能:
# team-git-helper.prompt.yml
name: team-git-helper
description: 開発チームのGit運用ルールに基づくアシスタント
model: gpt-4o
modelParameters:
temperature: 0.3
max_tokens: 1500
messages:
- role: system
content: |
あなたは開発チームのGit運用をサポートするアシスタントです。
以下のチームルールに基づいて回答してください:
- feature/*、bugfix/*、hotfix/* のブランチ命名規則
- コミットメッセージは日本語で記述
- プルリクエスト前にrebaseで履歴を整理
- mainブランチへの直接pushは禁止
- role: user
content: "{{query}}"
これらの詳細な説明により、学習者は単にコマンドをコピペするだけでなく、何をしているのか、なぜそれが有用なのかを理解した上で実装できるようになります。
ベストプラクティス
プロンプトエンジニアリング
- 明確で具体的な指示を提供
- 変数を使用して再利用可能なプロンプトを作成
- 期待される出力形式を明示
モデル選択
- タスクの複雑さに応じたモデルを選択
- コストとパフォーマンスのバランスを考慮
- レイテンシー要件に基づいて選択
評価とテスト
- 複数のテストケースを用意
- エバリュエーターを使用して定量的に評価
- 継続的にプロンプトを改善
セキュリティとガバナンス
- 組織のポリシーに準拠
- センシティブなデータを含めない
- アクセス権限を適切に管理
トラブルシューティング
よくある問題と解決方法
問題:モデルが期待通りの応答を返さない - 解決:プロンプトをより具体的に調整 - 温度パラメーターを下げて一貫性を向上
問題:レート制限エラー - 解決:リクエストの頻度を調整 - 有料プランへのアップグレードを検討
問題:トークン制限の超過 - 解決:max_tokensパラメーターを調整 - プロンプトを簡潔に
まとめ
このチュートリアルでは、GitHub Modelsを使用してAI駆動型アプリケーションを構築する方法を学習しました。主な学習内容:
- プロンプトエディターでの基本的なプロンプト作成
- 複数モデルの比較評価
- プロンプトバリエーションのテスト
- エバリュエーターによる定量的評価
- プロンプト設定の保存と共有
- GitHub ActionsやCLIとの統合
これらのスキルを活用して、独自のAI駆動型アプリケーションを構築してください。
次のステップ
- GitHub Models REST APIを使用したプログラマティックな統合
- エンタープライズ環境でのGitHub Modelsの管理
- カスタムエバリュエーターの作成
- より複雑なプロンプトチェーンの構築