Module: Legion::Extensions::Helpers::Knowledge
- Includes:
- Base
- Included in:
- Core
- Defined in:
- lib/legion/extensions/helpers/knowledge.rb
Constant Summary
Constants included
from Base
Base::NAMESPACE_BOUNDARIES
Instance Method Summary
collapse
Methods included from Base
#actor_class, #actor_const, #actor_name, #amqp_prefix, #calling_class, #calling_class_array, #from_json, #full_path, #lex_class, #lex_const, #lex_name, #lex_slug, #log_tag, #normalize, #runner_class, #runner_const, #runner_name, #segments, #settings_path, #table_prefix, #to_dotted_hash
Instance Method Details
#ingest_knowledge(content_or_path, type: :auto, tags: [], scope: :global, **opts) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 11
def ingest_knowledge(content_or_path, type: :auto, tags: [], scope: :global, **opts)
target = resolve_ingest_target(scope)
return { success: false, error: :apollo_not_available } unless target
text, metadata = (content_or_path, type: type)
return { success: false, error: :extraction_failed, detail: metadata } unless text
= metadata_to_tags(metadata) if metadata
all_tags = Array(tags) + Array() + Array(knowledge_default_tags)
target.ingest(
content: text,
tags: all_tags,
source_channel: opts[:source_channel] || derive_lex_name,
**opts.except(:source_channel)
)
end
|
#knowledge_connected? ⇒ Boolean
— Status — Override these in your LEX to customise availability checks.
42
43
44
45
46
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 42
def knowledge_connected?
knowledge_global_connected? || knowledge_local_connected?
rescue StandardError
false
end
|
#knowledge_default_scope ⇒ Object
Override to set a custom default query scope for this extension. Resolution: LEX override -> Settings[:local] -> :all
66
67
68
69
70
71
72
73
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 66
def knowledge_default_scope
return :all unless defined?(Legion::Settings)
scope = Legion::Settings.dig(:apollo, :local, :default_query_scope)
scope ? scope.to_sym : :all
rescue StandardError
:all
end
|
Override to automatically attach extension-level tags to every ingest call. Resolution: LEX override -> [] (no default tags)
77
78
79
80
81
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 77
def knowledge_default_tags
[]
rescue StandardError
[]
end
|
#knowledge_global_connected? ⇒ Boolean
48
49
50
51
52
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 48
def knowledge_global_connected?
global_available?
rescue StandardError
false
end
|
#knowledge_local_connected? ⇒ Boolean
54
55
56
57
58
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 54
def knowledge_local_connected?
local_available?
rescue StandardError
false
end
|
#query_knowledge(text:, limit: 5, scope: nil) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/legion/extensions/helpers/knowledge.rb', line 29
def query_knowledge(text:, limit: 5, scope: nil, **)
scope ||= default_query_scope
case scope.to_sym
when :local then query_local(text: text, limit: limit, **)
when :global then query_global(text: text, limit: limit, **)
else query_all(text: text, limit: limit, **)
end
end
|