Module: Legion::Extensions::Agentic::Language::Language::Runners::Language
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/language/language/runners/language.rb
Instance Method Summary collapse
- #can_answer_wonder?(wonder:, traces: []) ⇒ Boolean
- #knowledge_map ⇒ Object
- #language_stats ⇒ Object
- #summarize(domain:, depth: :standard, traces: []) ⇒ Object
- #what_do_i_know(domain:, depth: :standard, traces: []) ⇒ Object
Instance Method Details
#can_answer_wonder?(wonder:, traces: []) ⇒ Boolean
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 41 def can_answer_wonder?(wonder:, traces: [], **) domain = wonder.is_a?(Hash) ? wonder[:domain] : :general relevant = filter_traces(traces, domain) answerable = relevant.size >= Helpers::Constants::RESOLUTION_THRESHOLD confidence = answerable ? compute_answer_confidence(relevant) : 0.0 { answerable: answerable, confidence: confidence.round(3), domain: domain, trace_count: relevant.size, threshold: Helpers::Constants::RESOLUTION_THRESHOLD } end |
#knowledge_map ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 57 def knowledge_map(**) { domains: lexicon.knowledge_map, known_domains: lexicon.known_domains, total_domains: lexicon.size } end |
#language_stats ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 65 def language_stats(**) { cached_domains: lexicon.size, known_domains: lexicon.known_domains, knowledge_map: lexicon.knowledge_map } end |
#summarize(domain:, depth: :standard, traces: []) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 13 def summarize(domain:, depth: :standard, traces: [], **) traces = filter_traces(traces, domain) summary = Helpers::Summarizer.summarize_domain(traces, domain: domain.to_sym, depth: depth.to_sym) lexicon.store_summary(domain, summary) log.debug "[language] summarize domain=#{domain} traces=#{traces.size} " \ "knowledge=#{summary[:knowledge_level]}" summary end |
#what_do_i_know(domain:, depth: :standard, traces: []) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 23 def what_do_i_know(domain:, depth: :standard, traces: [], **) summary = if lexicon.stale?(domain) summarize(domain: domain, depth: depth, traces: traces) else lexicon.get_summary(domain) end prose = generate_knowledge_prose(summary) { domain: domain.to_sym, knowledge_level: summary[:knowledge_level], prose: prose, fact_count: summary[:key_facts]&.size || 0, summary: summary } end |