mokkku 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 234a86d569711e52239d937a81d56f24f2b15df2fc70d3bdc534cb95775e1d7b
4
- data.tar.gz: 2f25efb4d4351948b99991f698621cb9a44ba512146ecf2834bb60cf2c9db818
3
+ metadata.gz: 3069dcc17521f52cabc1f043476f7d0c01e657460f7a756f8e3c9dc0e7e27d23
4
+ data.tar.gz: b7cb51c7bf5d8a45604dd17c7143a3657c857901a22fad09819eed548b05046a
5
5
  SHA512:
6
- metadata.gz: b4f7e2e15f31417967cd38fa3141197e8515b9e58fe867a79a5a8e0fbe826579002afb16676dfdaba0aa3fca8d3d75dac162ba516b14036b4d12c87800d0ebad
7
- data.tar.gz: 9bf25b64bcc41d563c8b5f64f395b6d2325f42fb2599b5c2d16c6ed5810544f7ea461646e61b12d7b02b22436216680a1b50310b8a65dae25be37b6096447a4f
6
+ metadata.gz: 01cc5b791e4d82c189c9d36491bb5d0f9eb52a7170fb536a53c0957188de8a40bf22a03b6ecc14c111995440629663d7b7f9dc96bfaede49a0986e725eafccd0
7
+ data.tar.gz: a5f1111d24cbbb13b959ca1cc4b85c4a08fd8643359027ea9b672c57e1ea4c21e6d42dd6be1fd4ebb70d2c56dcbb40557b9c1b91e9870721d3de5c2f80b0377c
@@ -1,6 +1,7 @@
1
1
  require_relative 'validator'
2
2
  require_relative 'prompt'
3
3
  require_relative '../generators/builder'
4
+ require_relative '../yaml_sanitizer'
4
5
 
5
6
  module Mokkku
6
7
  module Cli
@@ -21,7 +22,10 @@ module Mokkku
21
22
  mock_file_name = model_name.to_s.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
22
23
 
23
24
  puts "Write mocks for #{model_name} model in #{mock_file_name}.yml"
24
- File.write(File.join(options.fetch(:mocks_path, './spec/mocks'), "#{mock_file_name}.yml"), yaml_mock)
25
+ File.write(
26
+ File.join(options.fetch(:mocks_path, './spec/mocks'), "#{mock_file_name}.yml"),
27
+ ::Mokkku::YamlSanitizer.sanitize(yaml_mock)
28
+ )
25
29
  end
26
30
 
27
31
  puts 'Done!'
@@ -1,4 +1,6 @@
1
1
  require_relative 'gpt'
2
+ require_relative 'claude'
3
+ require_relative 'gemini'
2
4
 
3
5
  module Mokkku
4
6
  module Generators
@@ -9,6 +11,10 @@ module Mokkku
9
11
  case generator
10
12
  when 'gpt'
11
13
  Mokkku::Generators::Gpt
14
+ when 'claude'
15
+ Mokkku::Generators::Claude
16
+ when 'gemini'
17
+ Mokkku::Generators::Gemini
12
18
  else
13
19
  raise UnsupportedGenerator
14
20
  end
@@ -0,0 +1,24 @@
1
+ require 'anthropic'
2
+
3
+ module Mokkku
4
+ module Generators
5
+ class Claude
6
+ def self.call(api_key:, prompt:)
7
+ client = Anthropic::Client.new(access_token: api_key)
8
+
9
+ response = client.messages(
10
+ parameters: {
11
+ model: 'claude-3-5-sonnet-20240620',
12
+ system: 'Respond only with code.',
13
+ messages: [
14
+ { 'role': 'user', 'content': prompt },
15
+ ],
16
+ max_tokens: 1_000
17
+ }
18
+ )
19
+
20
+ response['content'].first['text']
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ require 'gemini-ai'
2
+
3
+ module Mokkku
4
+ module Generators
5
+ class Gemini
6
+ def self.call(api_key:, prompt:)
7
+ client = ::Gemini.new(
8
+ credentials: {
9
+ service: 'generative-language-api',
10
+ api_key: api_key
11
+ },
12
+ options: { model: 'gemini-pro', server_sent_events: false }
13
+ )
14
+
15
+ result = client.generate_content({
16
+ contents: { role: 'user', parts: { text: prompt } }
17
+ })
18
+
19
+ result['candidates'].first['content']['parts'].first['text']
20
+ end
21
+ end
22
+ end
23
+ end
@@ -3,7 +3,7 @@ module Mokkku
3
3
  module_function
4
4
 
5
5
  def to_s
6
- '0.0.2'
6
+ '0.0.4'
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,13 @@
1
+ module Mokkku
2
+ class YamlSanitizer
3
+ def self.sanitize(yaml_content)
4
+ # Some LLMs ignore the instructions and return YAML with additions
5
+ yaml_lines = yaml_content.split("\n")
6
+ yaml_lines.shift if yaml_lines.first.start_with?("`")
7
+ yaml_lines.pop if yaml_lines.last.start_with?("`")
8
+ yaml_lines.shift unless yaml_lines.first.strip.start_with?('-')
9
+
10
+ yaml_lines.join("\n")
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mokkku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paweł Dąbrowski
@@ -58,6 +58,34 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: 7.1.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: anthropic
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 0.3.0
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.3.0
75
+ - !ruby/object:Gem::Dependency
76
+ name: gemini-ai
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '4.2'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '4.2'
61
89
  description: Generate mock data that is unique for your application
62
90
  email: contact@paweldabrowski.com
63
91
  executables:
@@ -71,10 +99,13 @@ files:
71
99
  - lib/mokkku/cli/runner.rb
72
100
  - lib/mokkku/cli/validator.rb
73
101
  - lib/mokkku/generators/builder.rb
102
+ - lib/mokkku/generators/claude.rb
103
+ - lib/mokkku/generators/gemini.rb
74
104
  - lib/mokkku/generators/gpt.rb
75
105
  - lib/mokkku/mocked_object.rb
76
106
  - lib/mokkku/utils.rb
77
107
  - lib/mokkku/version.rb
108
+ - lib/mokkku/yaml_sanitizer.rb
78
109
  homepage:
79
110
  licenses: []
80
111
  metadata: {}