GitHub Copilot Enterprise Knowledge Base

Git
この記事は約6分で読めます。
記事内に広告が含まれています。

概要と活用例を超特急で書いていきます。

どんな機能

GitHub Copilot Enterprise Knowledge Baseに関する公式リンク。

Copilot サポート技術情報の管理 - GitHub Enterprise Cloud Docs
組織の所有者は、1 つまたは複数のリポジトリにまたがる Markdown ドキュメントを 1 つにまとめたナレッジ ベースを作成でき、組織のメンバーはそのナレッジ ベースを Copilot Chat in GitHub.com のコンテキス...

一般的な生成AIで言えば検索拡張生成 (RAG: Retrieval Augmented Generation)のことです。

  • Copilotモデルが持っていない固有情報を使う。
  • 固有情報を考慮して回答してくれる。
Q
固有情報って何よ?
A

社内ナレッジ情報とか、言語モデルが持っていない情報ですね。

  1. 対象ドメイン(例: 医療、金融、製造)の専門知識。
    → Copilotも賢いですが、専門性には劣る点があるため、補うことが出来ます。
  2. 社内情報や問い合わせ情報
    → 門外不出の情報を与えることで、より社内に沿った回答を得られます。
    ※学習はされないためご安心ください(要設定)
  3. 最新情報
    → 言語モデルは最新情報を持っていません。最新情報を与えることで、最新の情勢を考慮した回答が可能となります。
    ※これについてはBing連携という手もある。

通常のプログラミング支援であれば必要なさそうだけど、使うことあるのだろうか?この後、試してみます。

試してみよう

何点か試してみます。

Knowledge basesの準備

任意リポジトリに次のmdファイルを保存しておきます。

# 関数のコメントには次の内容を含むこと。
- 変更履歴、変更理由、承認者
- 日付の書式はdd/mm/yyyy(例:23/08/2024)とすること。

# 関数名
- 関数名の先頭はXXXXを付けること。(例:XXXX_functionA)

# サービスXの固有情報
- 最新社内係数:0.99
- 責任者:Na7

# na7log.comの情報
- 取り扱い:技術情報、IT資格、ガジェット関係
- 更新頻度:不定期

OrganizationのCopilotのKnowledge basesより、指定リポジトリを新規knowledge baseとして登録します。

登録する際は、

  • 任意のリポジトリを選択可能です。
  • パスを選択可能です。(任意mdファイルだけ指定する)
Q
登録可能なファイルは?
A

md、またはmdxファイルだけです(2024/8時点)。
早くwikiやその他ファイル(ExcelやPDF)も登録対象になって欲しいものですね。

Knowledge basesを指定した問い合わせ

GitHub.com上でのCopilot Chatで、Knowledge baseを指定可能です。

ここでは「InternarlTest」というナレッジを選択。

さっそく質問してみます。

質問:
na7log.comが扱っている情報ってなんだっけ?

回答:
na7log.comが取り扱っている情報は以下の通りです:
取り扱い:技術情報、IT資格、ガジェット関係
更新頻度:不定期

ナレッジ情報を抜き出して回答してくれています。
けど、プログラムっぽくないため、続けて別の質問をしてみます。

質問:
pythonで次の関数を作成して。
・与えられた文字列をCSVファイルに保存する。
・関数名やコメントは規則を守ってください。

質問:
import csv
def XXXX_save_to_csv(data, filename):
    """
    与えられた文字列をCSVファイルに保存する関数。

    変更履歴:
    - 23/08/2024: 初版作成, 承認者: Na7
    
    Args:
    data (str): 保存する文字列。
    filename (str): 保存するCSVファイルの名前。
    """
    with open(filename, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        for line in data.split('\n'):
            writer.writerow([line])

回答のポイントは次の通りです。

  • 関数名の先頭に「XXXX」が付与されている。
  • 関数コメントの変更履歴がある。
  • 日付フォーマットがdd/mm/yyyyとなっている。

与えられたルール(ナレッジ)に沿って、付与されました。

けど、日付は「例」をコピーするのではなく、現在の日付にして欲しかった・・・。この辺りはナレッジベースの整備方法なのか、プロンプトを変えるべきなのでしょう。


Knowledge basesを指定しない場合の結果を見てみたい。

質問(1):
na7log.comが扱っている情報ってなんだっけ?

回答(1):
私にはGitHubリポジトリやコードベースの情報を提供する機能がありますが、特定のウェブサイトやその内容に関する情報は提供できません。GitHubリポジトリやプロジェクトに関連する質問についてはお答えできます。何か他にお手伝いできることがありますか?


質問(2):
pythonで次の関数を作成して。
・与えられた文字列をCSVファイルに保存する。
・関数名やコメントは規則を守ってください。

回答(2):
import csv
def save_string_to_csv(file_path, string_data):
    """
    Save a given string to a CSV file.

    Parameters:
    file_path (str): The path to the CSV file.
    string_data (str): The string data to be saved.
    """
    with open(file_path, mode='w', newline='') as file:
        writer = csv.writer(file)
        writer.writerow([string_data])

# Example usage
save_string_to_csv('output.csv', 'This is a sample string')

このようにKnowledge basesを指定しない場合は、無難な回答(提案)になります。
※固有情報には答えてくれない。

最後に

本記事ではGitHub Copilot Enterpriseで扱えるKnowledge Baseについて紹介しました。

  • Knowledge Baseを利用すると固有情報を考慮して回答してくれます。
  • 特定のドメインやコーディングルールを考慮したAIプログラミングが可能になります。

最後までお付き合いいただき、ありがとうございました。

コメント

Top
タイトルとURLをコピーしました