llm_chain 0.5.3 → 0.5.5

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -2
  3. data/README.md +15 -6
  4. data/examples/quick_demo.rb +1 -1
  5. data/examples/tools_example.rb +2 -2
  6. data/exe/llm-chain +7 -4
  7. data/lib/llm_chain/builders/memory_context.rb +24 -0
  8. data/lib/llm_chain/builders/prompt.rb +26 -0
  9. data/lib/llm_chain/builders/rag_documents.rb +25 -0
  10. data/lib/llm_chain/builders/retriever_context.rb +25 -0
  11. data/lib/llm_chain/builders/tool_responses.rb +27 -0
  12. data/lib/llm_chain/chain.rb +89 -88
  13. data/lib/llm_chain/client_registry.rb +2 -0
  14. data/lib/llm_chain/clients/base.rb +24 -2
  15. data/lib/llm_chain/clients/deepseek_coder_v2.rb +32 -0
  16. data/lib/llm_chain/configuration_validator.rb +1 -1
  17. data/lib/llm_chain/interfaces/builders/memory_context_builder.rb +20 -0
  18. data/lib/llm_chain/interfaces/builders/prompt_builder.rb +23 -0
  19. data/lib/llm_chain/interfaces/builders/rag_documents_builder.rb +20 -0
  20. data/lib/llm_chain/interfaces/builders/retriever_context_builder.rb +22 -0
  21. data/lib/llm_chain/interfaces/builders/tool_responses_builder.rb +20 -0
  22. data/lib/llm_chain/interfaces/memory.rb +38 -0
  23. data/lib/llm_chain/interfaces/tool_manager.rb +87 -0
  24. data/lib/llm_chain/memory/array.rb +18 -1
  25. data/lib/llm_chain/memory/redis.rb +20 -3
  26. data/lib/llm_chain/system_diagnostics.rb +73 -0
  27. data/lib/llm_chain/tools/base.rb +103 -0
  28. data/lib/llm_chain/tools/base_tool.rb +6 -76
  29. data/lib/llm_chain/tools/calculator.rb +118 -45
  30. data/lib/llm_chain/tools/code_interpreter.rb +43 -43
  31. data/lib/llm_chain/tools/date_time.rb +58 -0
  32. data/lib/llm_chain/tools/tool_manager.rb +46 -88
  33. data/lib/llm_chain/tools/tool_manager_factory.rb +44 -0
  34. data/lib/llm_chain/tools/web_search.rb +168 -336
  35. data/lib/llm_chain/version.rb +1 -1
  36. data/lib/llm_chain.rb +58 -56
  37. metadata +19 -2
data/lib/llm_chain.rb CHANGED
@@ -9,18 +9,21 @@ require_relative "llm_chain/clients/ollama_base"
9
9
  require_relative "llm_chain/clients/qwen"
10
10
  require_relative "llm_chain/clients/llama2"
11
11
  require_relative "llm_chain/clients/gemma3"
12
+ require_relative "llm_chain/clients/deepseek_coder_v2"
12
13
  require_relative "llm_chain/memory/array"
13
14
  require_relative "llm_chain/memory/redis"
14
- require_relative "llm_chain/tools/base_tool"
15
+ require_relative "llm_chain/tools/base"
15
16
  require_relative "llm_chain/tools/calculator"
16
17
  require_relative "llm_chain/tools/web_search"
17
18
  require_relative "llm_chain/tools/code_interpreter"
18
19
  require_relative "llm_chain/tools/tool_manager"
20
+ require_relative "llm_chain/tools/date_time"
19
21
  require_relative "llm_chain/embeddings/clients/local/weaviate_vector_store"
20
22
  require_relative "llm_chain/embeddings/clients/local/weaviate_retriever"
21
23
  require_relative "llm_chain/embeddings/clients/local/ollama_client"
22
24
 
23
25
  module LLMChain
26
+ # Exception classes
24
27
  class Error < StandardError; end
25
28
  class UnknownModelError < Error; end
26
29
  class InvalidModelVersion < Error; end
@@ -30,20 +33,34 @@ module LLMChain
30
33
  class MemoryError < Error; end
31
34
  end
32
35
 
33
- # Загружаем валидатор после определения базовых классов
36
+ # Load validator and diagnostics after base classes are defined
34
37
  require_relative "llm_chain/configuration_validator"
38
+ require_relative "llm_chain/system_diagnostics"
35
39
 
36
40
  module LLMChain
37
-
38
- # Простая система конфигурации
41
+ # Simple configuration system for LLMChain
39
42
  class Configuration
43
+ # Configuration constants
44
+ DEFAULT_MODEL = "qwen3:1.7b"
45
+ DEFAULT_TIMEOUT = 30
46
+ DEFAULT_MEMORY_SIZE = 100
47
+ DEFAULT_SEARCH_ENGINE = :google
48
+
40
49
  attr_accessor :default_model, :timeout, :memory_size, :search_engine
41
50
 
42
51
  def initialize
43
- @default_model = "qwen3:1.7b"
44
- @timeout = 30
45
- @memory_size = 100
46
- @search_engine = :google
52
+ @default_model = DEFAULT_MODEL
53
+ @timeout = DEFAULT_TIMEOUT
54
+ @memory_size = DEFAULT_MEMORY_SIZE
55
+ @search_engine = DEFAULT_SEARCH_ENGINE
56
+ end
57
+
58
+ def reset_to_defaults
59
+ initialize
60
+ end
61
+
62
+ def valid?
63
+ default_model && timeout.positive? && memory_size.positive?
47
64
  end
48
65
  end
49
66
 
@@ -58,61 +75,46 @@ module LLMChain
58
75
  yield(configuration)
59
76
  end
60
77
 
61
- # Быстрое создание цепочки с настройками по умолчанию
78
+ def reset_configuration
79
+ @configuration = nil
80
+ end
81
+
82
+ # Quick chain creation with default settings
62
83
  def quick_chain(model: nil, tools: true, memory: true, validate_config: true, **options)
63
- model ||= configuration.default_model
64
-
65
- chain_options = {
66
- model: model,
84
+ chain_options = build_chain_options(model, tools, memory, validate_config, **options)
85
+ Chain.new(**chain_options)
86
+ end
87
+
88
+ # System diagnostics
89
+ def diagnose_system
90
+ SystemDiagnostics.run
91
+ end
92
+
93
+ private
94
+
95
+ def build_chain_options(model, tools, memory, validate_config, **options)
96
+ {
97
+ model: model || configuration.default_model,
98
+ tools: build_tools(tools),
99
+ memory: build_memory(memory),
67
100
  retriever: false,
68
101
  validate_config: validate_config,
69
102
  **options
70
103
  }
71
-
72
- if tools
73
- tool_manager = Tools::ToolManager.create_default_toolset
74
- chain_options[:tools] = tool_manager
75
- end
76
-
77
- if memory
78
- chain_options[:memory] = Memory::Array.new(max_size: configuration.memory_size)
79
- end
80
-
81
- Chain.new(**chain_options)
82
104
  end
83
105
 
84
- # Диагностика системы
85
- def diagnose_system
86
- puts "🔍 LLMChain System Diagnostics"
87
- puts "=" * 50
88
-
89
- results = ConfigurationValidator.validate_environment
90
-
91
- puts "\n📋 System Components:"
92
- puts " Ruby: #{results[:ruby] ? '✅' : '❌'} (#{RUBY_VERSION})"
93
- puts " Python: #{results[:python] ? '✅' : '❌'}"
94
- puts " Node.js: #{results[:node] ? '✅' : '❌'}"
95
- puts " Internet: #{results[:internet] ? '✅' : '❌'}"
96
- puts " Ollama: #{results[:ollama] ? '✅' : '❌'}"
97
-
98
- puts "\n🔑 API Keys:"
99
- results[:apis].each do |api, available|
100
- puts " #{api.to_s.capitalize}: #{available ? '✅' : '❌'}"
101
- end
102
-
103
- if results[:warnings].any?
104
- puts "\n⚠️ Warnings:"
105
- results[:warnings].each { |warning| puts " • #{warning}" }
106
- end
107
-
108
- puts "\n💡 Recommendations:"
109
- puts " • Install missing components for full functionality"
110
- puts " • Configure API keys for enhanced features"
111
- puts " • Start Ollama server: ollama serve" unless results[:ollama]
112
-
113
- puts "\n" + "=" * 50
114
-
115
- results
106
+ def build_tools(tools)
107
+ return Tools::ToolManagerFactory.create_default_toolset if tools == true
108
+ return nil if tools == false
109
+
110
+ tools
111
+ end
112
+
113
+ def build_memory(memory)
114
+ return Memory::Array.new(max_size: configuration.memory_size) if memory == true
115
+ return nil if memory == false
116
+
117
+ memory
116
118
  end
117
119
  end
118
120
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: llm_chain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - FuryCow
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-07-05 00:00:00.000000000 Z
11
+ date: 2025-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -127,9 +127,15 @@ files:
127
127
  - examples/tools_example.rb
128
128
  - exe/llm-chain
129
129
  - lib/llm_chain.rb
130
+ - lib/llm_chain/builders/memory_context.rb
131
+ - lib/llm_chain/builders/prompt.rb
132
+ - lib/llm_chain/builders/rag_documents.rb
133
+ - lib/llm_chain/builders/retriever_context.rb
134
+ - lib/llm_chain/builders/tool_responses.rb
130
135
  - lib/llm_chain/chain.rb
131
136
  - lib/llm_chain/client_registry.rb
132
137
  - lib/llm_chain/clients/base.rb
138
+ - lib/llm_chain/clients/deepseek_coder_v2.rb
133
139
  - lib/llm_chain/clients/gemma3.rb
134
140
  - lib/llm_chain/clients/llama2.rb
135
141
  - lib/llm_chain/clients/ollama_base.rb
@@ -139,12 +145,23 @@ files:
139
145
  - lib/llm_chain/embeddings/clients/local/ollama_client.rb
140
146
  - lib/llm_chain/embeddings/clients/local/weaviate_retriever.rb
141
147
  - lib/llm_chain/embeddings/clients/local/weaviate_vector_store.rb
148
+ - lib/llm_chain/interfaces/builders/memory_context_builder.rb
149
+ - lib/llm_chain/interfaces/builders/prompt_builder.rb
150
+ - lib/llm_chain/interfaces/builders/rag_documents_builder.rb
151
+ - lib/llm_chain/interfaces/builders/retriever_context_builder.rb
152
+ - lib/llm_chain/interfaces/builders/tool_responses_builder.rb
153
+ - lib/llm_chain/interfaces/memory.rb
154
+ - lib/llm_chain/interfaces/tool_manager.rb
142
155
  - lib/llm_chain/memory/array.rb
143
156
  - lib/llm_chain/memory/redis.rb
157
+ - lib/llm_chain/system_diagnostics.rb
158
+ - lib/llm_chain/tools/base.rb
144
159
  - lib/llm_chain/tools/base_tool.rb
145
160
  - lib/llm_chain/tools/calculator.rb
146
161
  - lib/llm_chain/tools/code_interpreter.rb
162
+ - lib/llm_chain/tools/date_time.rb
147
163
  - lib/llm_chain/tools/tool_manager.rb
164
+ - lib/llm_chain/tools/tool_manager_factory.rb
148
165
  - lib/llm_chain/tools/web_search.rb
149
166
  - lib/llm_chain/version.rb
150
167
  - sig/llm_chain.rbs