Module: Legion::LLM::Pipeline::EnrichmentInjector
- Extended by:
- Legion::Logging::Helper
- Defined in:
- lib/legion/llm/pipeline/enrichment_injector.rb
Class Method Summary collapse
Class Method Details
.inject(system:, enrichments:) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/legion/llm/pipeline/enrichment_injector.rb', line 13 def inject(system:, enrichments:) parts = [] # Settings-driven baseline (universal foundation, overridable via config) baseline = resolve_baseline parts << baseline if baseline # GAIA system prompt (highest priority enrichment) if (gaia = enrichments.dig('gaia:system_prompt', :content)) parts << gaia end # RAG context if (rag = enrichments.dig('rag:context_retrieval', :data, :entries)) context_text = rag.map { |e| "[#{e[:content_type]}] #{e[:content]}" }.join("\n") parts << "Relevant context:\n#{context_text}" unless context_text.empty? end # Skill injection — active skill's step output appended after the RAG context if (skill = enrichments['skill:active']) parts << skill end return system if parts.empty? parts << system if system log.info("[llm][pipeline] enrichments_injected parts=#{parts.size} baseline=#{!baseline.nil?} system_present=#{!system.nil?}") parts.join("\n\n") end |
.resolve_baseline ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/legion/llm/pipeline/enrichment_injector.rb', line 43 def resolve_baseline return nil unless defined?(Legion::Settings) value = Legion::Settings.dig(:llm, :system_baseline) value.is_a?(String) && !value.strip.empty? ? value : nil rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.pipeline.enrichment_injector.resolve_baseline') nil end |