mokkku 0.0.2 → 0.0.4

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 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: {}