aigcm 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/aigcm/commit_message_generator.rb +40 -10
- data/lib/aigcm/version.rb +1 -1
- data/lib/aigcm.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2cc53c8ffef5c597adb196deffc67ad3c0f89d5a47e9bcbfc617ece6f6a73600
|
|
4
|
+
data.tar.gz: 6262260bc17b80ef51b668e19a7014c8e9cd4429f22f2654b8682303fb79ea39
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c5b256a8478183fd3bd53188916e36f2e48639927251ea128111f28baf0dc42910ba7104f95d9a8fd98f6f2df804ea9403eb6c8c1f179b22b1f1675979ed2e15
|
|
7
|
+
data.tar.gz: 063a9e30564ad0b791ea9707e2e57c333d9372330e4784cc4858431725ac6f0184ffa6a331cdb8651d97e50fe2d0a4e363a83cea7d96e9577251c30761069055
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require "net/http"
|
|
2
2
|
require "json"
|
|
3
3
|
require "open3"
|
|
4
|
-
require "
|
|
4
|
+
require "ruby_llm"
|
|
5
5
|
|
|
6
6
|
module Aigcm
|
|
7
7
|
class CommitMessageGenerator
|
|
@@ -15,10 +15,11 @@ module Aigcm
|
|
|
15
15
|
@max_tokens = max_tokens
|
|
16
16
|
@force_external = force_external
|
|
17
17
|
@amend = amend
|
|
18
|
-
|
|
18
|
+
infer_provider_from_model
|
|
19
19
|
check_provider_availability
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
configure_ruby_llm
|
|
22
|
+
@chat = RubyLLM.chat(model: @model)
|
|
22
23
|
rescue StandardError => e
|
|
23
24
|
raise Error, "Failed to initialize AI client: #{e.message}"
|
|
24
25
|
end
|
|
@@ -38,8 +39,8 @@ module Aigcm
|
|
|
38
39
|
prompt = build_prompt(diff, style_guide, processed_context)
|
|
39
40
|
|
|
40
41
|
begin
|
|
41
|
-
response = @
|
|
42
|
-
response.
|
|
42
|
+
response = @chat.ask(prompt)
|
|
43
|
+
response.content.strip
|
|
43
44
|
rescue StandardError => e
|
|
44
45
|
"Error generating commit message: #{e.message}"
|
|
45
46
|
end
|
|
@@ -47,11 +48,40 @@ module Aigcm
|
|
|
47
48
|
|
|
48
49
|
private
|
|
49
50
|
|
|
50
|
-
def
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
def infer_provider_from_model
|
|
52
|
+
return if @provider
|
|
53
|
+
|
|
54
|
+
model_lower = @model.to_s.downcase
|
|
55
|
+
@provider = if model_lower.include?('gpt') || model_lower.include?('o1') || model_lower.include?('o3')
|
|
56
|
+
:openai
|
|
57
|
+
elsif model_lower.include?('claude')
|
|
58
|
+
:anthropic
|
|
59
|
+
elsif model_lower.include?('gemini')
|
|
60
|
+
:google
|
|
61
|
+
elsif model_lower.include?('mistral') || model_lower.include?('mixtral')
|
|
62
|
+
:mistral
|
|
63
|
+
elsif model_lower.include?('llama') || model_lower.include?('qwen') || model_lower.include?('deepseek')
|
|
64
|
+
:ollama
|
|
65
|
+
else
|
|
66
|
+
:openai
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def configure_ruby_llm
|
|
71
|
+
RubyLLM.configure do |config|
|
|
72
|
+
case @provider
|
|
73
|
+
when :ollama
|
|
74
|
+
config.ollama_api_base = 'http://localhost:11434/v1'
|
|
75
|
+
when :openai
|
|
76
|
+
config.openai_api_key = ENV.fetch('OPENAI_API_KEY', nil)
|
|
77
|
+
when :anthropic
|
|
78
|
+
config.anthropic_api_key = ENV.fetch('ANTHROPIC_API_KEY', nil)
|
|
79
|
+
when :google
|
|
80
|
+
config.gemini_api_key = ENV.fetch('GEMINI_API_KEY', nil)
|
|
81
|
+
when :mistral
|
|
82
|
+
config.mistral_api_key = ENV.fetch('MISTRAL_API_KEY', nil)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
55
85
|
end
|
|
56
86
|
|
|
57
87
|
def check_provider_availability
|
data/lib/aigcm/version.rb
CHANGED
data/lib/aigcm.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aigcm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dewayne VanHoozer
|
|
@@ -10,19 +10,19 @@ cert_chain: []
|
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name:
|
|
13
|
+
name: ruby_llm
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0
|
|
18
|
+
version: '0'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
|
-
- - "
|
|
23
|
+
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0
|
|
25
|
+
version: '0'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: minitest
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|