Guitar
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes | List of all members
CommitMessageGenerator Class Reference

#include <CommitMessageGenerator.h>

Collaboration diagram for CommitMessageGenerator:
Collaboration graph
[legend]

Classes

struct  CommitPair
 
struct  Request
 
class  Result
 

Public Member Functions

 CommitMessageGenerator (GenerativeAI::Model const &model, CommitMessageGenerator::Request const &request)
 
void set_ai_model (GenerativeAI::Model model)
 
std::string generatePrompt () const
 diffからAIへ送るプロンプト文字列を生成する。 More...
 
AiResult request ()
 

Static Public Member Functions

static Result parse_response (GenerativeAI::Model model, const AiResult &result)
 AIレスポンスのJSON文字列を解析してコミットメッセージ候補を取り出す。 More...
 
static bool accept_file_diff (const std::string &filename, const std::string &mimetype)
 ファイルのdiffをAIに送るべきか判定する。 More...
 
static std::string make_diff (const std::string &gitcommand, const std::string &dir, CommitPair const &commits)
 コミット差分を取得する。 More...
 

Public Attributes

CommitMessageGenerator::Request request_
 

Static Public Attributes

constexpr static int max_diff_size = 200000
 

Private Attributes

AiApiBridge api_
 

Constructor & Destructor Documentation

◆ CommitMessageGenerator()

CommitMessageGenerator::CommitMessageGenerator ( GenerativeAI::Model const &  model,
CommitMessageGenerator::Request const &  request 
)
inline

< システムロールの内容(OpenAI Chat Completions 形式で使用)

Here is the call graph for this function:

Member Function Documentation

◆ accept_file_diff()

bool CommitMessageGenerator::accept_file_diff ( const std::string &  filename,
const std::string &  mimetype 
)
static

ファイルのdiffをAIに送るべきか判定する。

画像やバイナリ、PDFなどは行単位のdiffが意味をなさないため除外する。 Qtの翻訳ファイル(*.ts)も行番号変化が多く差分がノイズになるため除外する。

Parameters
filenameファイル名
mimetypeファイルのMIMEタイプ
Returns
diff対象に含めるべきならtrue、そうでなければfalse
Here is the call graph for this function:

◆ generatePrompt()

std::string CommitMessageGenerator::generatePrompt ( ) const

diffからAIへ送るプロンプト文字列を生成する。

AIにJSONフォーマット({"messages": [...]})で返すよう指示する。

Parameters
diffコミット対象のdiff文字列
max生成するコミットメッセージ候補の最大数
Returns
AIに送るプロンプト文字列

◆ make_diff()

std::string CommitMessageGenerator::make_diff ( const std::string &  gitcommand,
const std::string &  dir,
CommitPair const &  commits 
)
static

コミット差分を取得する。

コマンドラインの git を呼び出して diff を取得する内部実装。GitRunner を引数に取らないオーバーロード。

Parameters
gitcommandgitコマンドのパス(例: "/usr/bin/git" または "C:\\Program Files\\Git\\bin\\git.exe")
dirgitコマンドを実行するディレクトリ(例: リポジトリのルートディレクトリ)
id_a比較対象のコミットID(例: "HEAD")
id_b比較対象のコミットID(例: "" なら作業ツリーとの差分)
Returns
連結されたdiff文字列
Here is the call graph for this function:

◆ parse_response()

CommitMessageGenerator::CommitMessageGenerator::Result CommitMessageGenerator::parse_response ( GenerativeAI::Model  model,
const AiResult result 
)
static

AIレスポンスのJSON文字列を解析してコミットメッセージ候補を取り出す。

Parameters
inAIから返ってきたレスポンス文字列(JSON)
provider使用したAIプロバイダー
Returns
コミットメッセージ候補のリスト、またはエラー情報
Here is the call graph for this function:

◆ request()

AiResult CommitMessageGenerator::request ( )
inline
Here is the call graph for this function:

◆ set_ai_model()

void CommitMessageGenerator::set_ai_model ( GenerativeAI::Model  model)
inline
Here is the call graph for this function:

Member Data Documentation

◆ api_

AiApiBridge CommitMessageGenerator::api_
private

◆ max_diff_size

constexpr static int CommitMessageGenerator::max_diff_size = 200000
staticconstexpr

◆ request_

CommitMessageGenerator::Request CommitMessageGenerator::request_

The documentation for this class was generated from the following files: