llmed 0.3.15 → 0.3.16

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: 30eeed29b9cd4f299f5068f1f1a81a8fe66e0b4b621716a5c0a0485bd7585bcb
4
- data.tar.gz: 0eeae9aaa6bf875acdfa19f6de7ee81d8ddf9758b70b969ac2fb3cb837f9857f
3
+ metadata.gz: 3d5362d8a48de51f33d6cc43bdd166387d7d36f0242cca147c126da4678721fc
4
+ data.tar.gz: 25d0960a155f4c8abb600eae9853b28215808635a4d0da812f381db31bf74a1a
5
5
  SHA512:
6
- metadata.gz: b48247b4d11fc5288613a19559f2fa6f0087538f9f537348b9a05c8a77d3220a082dc97f6054d807c37621ab3cc6ca0931a8fb1759fb35598eeb08eea0b6683f
7
- data.tar.gz: a698093a3166e0804de4cf7ad75e1ef1c49d6873d2101384fc8369fdd134c770c0c2c66519c3dc42354627ae51a67602bb59b137a6d99db4b1d38e15e0f67420
6
+ metadata.gz: d9fbca340377b6b8370426839faa236ce23b803870651d00da2d2c719ded31cbd4d5a9929fd8855fd486bb79f60780f13acc3f82b228e29d4df5ebdd8fcf9d5c
7
+ data.tar.gz: 697c10a3fd025fc31cb3e8ef0f33765eb686ebf6fb174f33bbc79a51eed1020615489a33cd0557b97b058ab10badc446c3e74665deb6ccc448ffabbd4dddaa96
data/lib/llm.rb CHANGED
@@ -21,8 +21,10 @@ class LLMed
21
21
  class OpenAI
22
22
 
23
23
  DEFAULT_URI_BASE = "https://api.openai.com/".freeze
24
+ MAX_TOKENS = 8192
24
25
 
25
26
  def initialize(**args)
27
+ @logger = args.delete(:logger)
26
28
  @llm = Langchain::LLM::OpenAI.new(**llm_arguments(args))
27
29
  end
28
30
 
@@ -37,7 +39,9 @@ class LLMed
37
39
  end
38
40
 
39
41
  start = Time.now
40
- llm_response = @llm.chat(messages: messages)
42
+ llm_response = @llm.chat(messages: messages, max_tokens: MAX_TOKENS)
43
+ warn_token_limits(llm_response)
44
+
41
45
  stop = Time.now
42
46
  Response.new({ provider: provider,
43
47
  model: @llm.chat_parameters[:model],
@@ -47,6 +51,12 @@ class LLMed
47
51
  end
48
52
 
49
53
  private
54
+ def warn_token_limits(llm_response)
55
+ if llm_response.completion_tokens >= MAX_TOKENS
56
+ @logger.warn("POSSIBLE INCONSISTENCY COMPLETED TOKENS REACHED MAX TOKENS #{MAX_TOKENS}")
57
+ end
58
+ end
59
+
50
60
  def llm_arguments(args)
51
61
  args
52
62
  end
@@ -64,6 +74,7 @@ class LLMed
64
74
  private
65
75
 
66
76
  def llm_arguments(args)
77
+ @logger = args.delete(:logger)
67
78
  args.merge({ llm_options: { uri_base: 'https://api.anthropic.com/v1/' } })
68
79
  end
69
80
 
@@ -3,7 +3,8 @@
3
3
 
4
4
  class LLMed
5
5
  class Configuration
6
- def initialize
6
+ def initialize(logger:)
7
+ @logger = logger
7
8
  # Manual tested, pass 5 times execution
8
9
  @prompt = LLMed::LLM::Template.build(template: "
9
10
  You are a software developer with knowledge only of the programming language {language}, following the SOLID principles strictly, you always use only imperative and functional programming, design highly isolated components.
@@ -70,16 +71,19 @@ Wrap with comment every code that belongs to the indicated context, example in {
70
71
  case @provider
71
72
  when :openai
72
73
  LLMed::LLM::OpenAI.new(
74
+ logger: @logger,
73
75
  api_key: @provider_api_key,
74
- default_options: { temperature: 0.7, chat_model: @provider_model }
76
+ default_options: { max_tokens: nil, temperature: 0.7, chat_model: @provider_model }
75
77
  )
76
78
  when :anthropic
77
79
  LLMed::LLM::Anthropic.new(
80
+ logger: @logger,
78
81
  api_key: @provider_api_key,
79
- default_options: { temperature: 0.7, chat_model: @provider_model }
82
+ default_options: { max_tokens: nil, temperature: 0.7, chat_model: @provider_model }
80
83
  )
81
84
  when :like_openai
82
85
  LLMed::LLM::LikeOpenAI.new(
86
+ logger: @logger,
83
87
  api_key: @provider_api_key,
84
88
  default_options: { temperature: 0.7, chat_model: @provider_model },
85
89
  llm_options: @provider_options
data/lib/llmed.rb CHANGED
@@ -17,7 +17,7 @@ class LLMed
17
17
  @logger = logger
18
18
  @applications = []
19
19
  @deploys = []
20
- @configuration = Configuration.new
20
+ @configuration = Configuration.new(logger: logger)
21
21
  @release_dir = release_dir || output_dir
22
22
  @output_dir = output_dir
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: llmed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.15
4
+ version: 0.3.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jovany Leandro G.C