Module: Legion::LLM::Inference::GaiaCaller
- Extended by:
- Legion::Logging::Helper
- Defined in:
- lib/legion/llm/inference/gaia_caller.rb
Class Method Summary collapse
- .chat(message:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) ⇒ Object
- .embed(text:) ⇒ Object
- .gaia_caller(phase, caller_class: nil, caller_client: nil) ⇒ Object
- .gaia_tracing(phase, trace_id, span_id) ⇒ Object
- .structured(message:, schema:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) ⇒ Object
Class Method Details
.chat(message:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/legion/llm/inference/gaia_caller.rb', line 13 def chat(message:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) log.info("[llm][gaia] chat phase=#{phase} model=#{kwargs[:model] || 'default'}") request = Request.build( messages: [{ role: :user, content: }], system: kwargs[:system], routing: { provider: kwargs[:provider], model: kwargs[:model] }.compact, caller: caller || gaia_caller(phase, caller_class: caller_class, caller_client: caller_client), tracing: gaia_tracing(phase, tick_trace_id, tick_span_id) ) Executor.new(request).call end |
.embed(text:) ⇒ Object
42 43 44 45 |
# File 'lib/legion/llm/inference/gaia_caller.rb', line 42 def (text:, **) log.info("[llm][gaia] embed text_chars=#{text.to_s.length}") LLM.(text, **) end |
.gaia_caller(phase, caller_class: nil, caller_client: nil) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/legion/llm/inference/gaia_caller.rb', line 47 def gaia_caller(phase, caller_class: nil, caller_client: nil) hash = { requested_by: { identity: "gaia:tick:#{phase}", type: :system, credential: :internal, name: "GAIA #{phase.to_s.tr('_', ' ').capitalize}" } } hash[:class] = caller_class if caller_class hash[:client] = caller_client if caller_client hash end |
.gaia_tracing(phase, trace_id, span_id) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/legion/llm/inference/gaia_caller.rb', line 61 def gaia_tracing(phase, trace_id, span_id) { trace_id: trace_id || SecureRandom.hex(16), span_id: SecureRandom.hex(8), parent_span_id: span_id, correlation_id: "gaia:tick:#{phase}" } end |
.structured(message:, schema:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/legion/llm/inference/gaia_caller.rb', line 27 def structured(message:, schema:, phase: 'unknown', tick_trace_id: nil, tick_span_id: nil, caller: nil, caller_class: nil, caller_client: nil, **kwargs) log.info("[llm][gaia] structured phase=#{phase} model=#{kwargs[:model] || 'default'}") request = Request.build( messages: [{ role: :user, content: }], system: kwargs[:system], routing: { provider: kwargs[:provider], model: kwargs[:model] }.compact, response_format: { type: :json_schema, schema: schema }, caller: caller || gaia_caller(phase, caller_class: caller_class, caller_client: caller_client), tracing: gaia_tracing(phase, tick_trace_id, tick_span_id) ) Executor.new(request).call end |