Skip to content

Commit cfeceba

Browse files
committed
feat(commitmsg): add support for custom AI model selection
- Introduced `--model` flag to specify AI model for commit message generation - Updated `GenerateCommitMessage` function to accept model parameter - Removed hardcoded `model` and `language` fields from `commitmsg.prompt.yml` - Enhanced README with examples for using the new `--model` flag
1 parent b684a50 commit cfeceba

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,17 @@ gh commitmsg
4343

4444
### Advanced Options
4545

46+
You can use and combine different options:
47+
4648
```bash
4749
# Use different language
4850
gh commitmsg --language russian
4951

5052
# Use previous 3 commit messages as an example for LLM
5153
gh commitmsg --examples
54+
55+
# Use a different AI model
56+
gh standup --model xai/grok-3-mini
5257
```
5358

5459
### Output examples

cmd/commitmsg/main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const extensionName = "commitmsg"
1515
var (
1616
flagLanguage string
1717
flagExamples bool
18+
flagModel string
1819
)
1920
var rootCmd = &cobra.Command{
2021
Use: extensionName,
@@ -26,6 +27,7 @@ var rootCmd = &cobra.Command{
2627
func init() {
2728
rootCmd.Flags().StringVarP(&flagLanguage, "language", "l", "english", "Language to generate commit message in")
2829
rootCmd.Flags().BoolVarP(&flagExamples, "examples", "e", false, "Add examples of commit messages to context")
30+
rootCmd.Flags().StringVarP(&flagModel, "model", "m", "openai/gpt-4o", "GitHub Models model to use")
2931
}
3032

3133
func main() {
@@ -61,7 +63,7 @@ func runCommitMsg(_ *cobra.Command, _ []string) error {
6163
}
6264

6365
fmt.Println(" Language for commit message:", flagLanguage)
64-
commitMsg, err := llmClient.GenerateCommitMessage(stagedChanges, flagLanguage, latestCommitMessages)
66+
commitMsg, err := llmClient.GenerateCommitMessage(stagedChanges, flagModel, flagLanguage, latestCommitMessages)
6567
if err != nil {
6668
return fmt.Errorf("failed to generate commit message: %w", err)
6769
}

internal/llm/client.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ var commitmsgPromptYAML []byte
2323
type PromptConfig struct {
2424
Name string `yaml:"name"`
2525
Description string `yaml:"description"`
26-
Model string `yaml:"model"`
27-
Language string `yaml:"language"`
2826
ModelParameters ModelParameters `yaml:"modelParameters"`
2927
Messages []PromptMessage `yaml:"messages"`
3028
}
@@ -90,6 +88,7 @@ func NewClient() (*Client, error) {
9088
// GenerateCommitMessage generates a commit message based on the provided changes summary
9189
func (c *Client) GenerateCommitMessage(
9290
changesSummary string,
91+
model string,
9392
language string,
9493
examples string,
9594
) (string, error) {
@@ -101,11 +100,8 @@ func (c *Client) GenerateCommitMessage(
101100
}
102101
fmt.Println("Done")
103102

104-
selectedModel := promptConfig.Model
103+
selectedModel := model
105104
selectedLanguage := language
106-
if selectedLanguage == "" {
107-
selectedLanguage = promptConfig.Language
108-
}
109105

110106
// Build messages from the prompt config, replacing template variables
111107
messages := make([]Message, len(promptConfig.Messages))

internal/llm/commitmsg.prompt.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
name: Commit Message Generator
22
description: Generates professional commit messages based on git changes
3-
model: openai/gpt-4o
4-
language: english
53
messages:
64
- role: system
75
content: >

0 commit comments

Comments
 (0)