Skip to content

Commit fa35b84

Browse files
DmitrySychevclaude
andcommitted
Add require_categories DSL option and fix ActiveSupport dependency
- Add `require_categories true` DSL macro: when set, multi-label classifiers return Result.failure when no valid categories are found (previously multi-label always returned success with empty array) - Fix .blank? call in Web content fetcher's normalize_redirect_url that required ActiveSupport. Replaced with nil/empty check. - Bump version to 0.2.0 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c0a7360 commit fa35b84

3 files changed

Lines changed: 16 additions & 4 deletions

File tree

‎lib/llm_classifier/classifier.rb‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ module LlmClassifier
77
class Classifier
88
class << self
99
attr_reader :defined_categories, :defined_system_prompt, :defined_model,
10-
:defined_adapter, :defined_multi_label, :defined_knowledge,
10+
:defined_adapter, :defined_multi_label, :defined_require_categories,
11+
:defined_knowledge,
1112
:before_classify_callbacks, :after_classify_callbacks
1213

1314
def categories(*cats)
@@ -50,6 +51,14 @@ def multi_label(value = nil)
5051
end
5152
end
5253

54+
def require_categories(value = nil)
55+
if value.nil?
56+
@defined_require_categories || false
57+
else
58+
@defined_require_categories = value
59+
end
60+
end
61+
5362
def knowledge(&)
5463
if block_given?
5564
@defined_knowledge = Knowledge.new
@@ -192,7 +201,10 @@ def extract_valid_categories(json)
192201
end
193202

194203
def should_fail?(valid_categories)
195-
valid_categories.empty? && !self.class.categories.empty? && !self.class.multi_label
204+
return false if valid_categories.any?
205+
return false if self.class.categories.empty?
206+
207+
!self.class.multi_label || self.class.require_categories
196208
end
197209

198210
def build_failure_result(response, json)

‎lib/llm_classifier/content_fetchers/web.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def private_ip?(address)
7777
end
7878

7979
def normalize_redirect_url(base_url, redirect_url)
80-
return nil if redirect_url.blank?
80+
return nil if redirect_url.nil? || redirect_url.empty?
8181

8282
if redirect_url.start_with?("http://", "https://")
8383
redirect_url

‎lib/llm_classifier/version.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module LlmClassifier
4-
VERSION = "0.1.0"
4+
VERSION = "0.2.0"
55
end

0 commit comments

Comments
 (0)