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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -2
- data/README.md +15 -6
- data/examples/quick_demo.rb +1 -1
- data/examples/tools_example.rb +2 -2
- data/exe/llm-chain +7 -4
- data/lib/llm_chain/builders/memory_context.rb +24 -0
- data/lib/llm_chain/builders/prompt.rb +26 -0
- data/lib/llm_chain/builders/rag_documents.rb +25 -0
- data/lib/llm_chain/builders/retriever_context.rb +25 -0
- data/lib/llm_chain/builders/tool_responses.rb +27 -0
- data/lib/llm_chain/chain.rb +89 -88
- data/lib/llm_chain/client_registry.rb +2 -0
- data/lib/llm_chain/clients/base.rb +24 -2
- data/lib/llm_chain/clients/deepseek_coder_v2.rb +32 -0
- data/lib/llm_chain/configuration_validator.rb +1 -1
- data/lib/llm_chain/interfaces/builders/memory_context_builder.rb +20 -0
- data/lib/llm_chain/interfaces/builders/prompt_builder.rb +23 -0
- data/lib/llm_chain/interfaces/builders/rag_documents_builder.rb +20 -0
- data/lib/llm_chain/interfaces/builders/retriever_context_builder.rb +22 -0
- data/lib/llm_chain/interfaces/builders/tool_responses_builder.rb +20 -0
- data/lib/llm_chain/interfaces/memory.rb +38 -0
- data/lib/llm_chain/interfaces/tool_manager.rb +87 -0
- data/lib/llm_chain/memory/array.rb +18 -1
- data/lib/llm_chain/memory/redis.rb +20 -3
- data/lib/llm_chain/system_diagnostics.rb +73 -0
- data/lib/llm_chain/tools/base.rb +103 -0
- data/lib/llm_chain/tools/base_tool.rb +6 -76
- data/lib/llm_chain/tools/calculator.rb +118 -45
- data/lib/llm_chain/tools/code_interpreter.rb +43 -43
- data/lib/llm_chain/tools/date_time.rb +58 -0
- data/lib/llm_chain/tools/tool_manager.rb +46 -88
- data/lib/llm_chain/tools/tool_manager_factory.rb +44 -0
- data/lib/llm_chain/tools/web_search.rb +168 -336
- data/lib/llm_chain/version.rb +1 -1
- data/lib/llm_chain.rb +58 -56
- 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/
|
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 =
|
44
|
-
@timeout =
|
45
|
-
@memory_size =
|
46
|
-
@search_engine =
|
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
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
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.
|
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-
|
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
|