Class: Agent::SessionContext::SemanticPipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/agent/session_context/semantic_pipeline.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(backend:, packet: EvidencePacket.new, parser: SummaryParser.new) ⇒ SemanticPipeline

Returns a new instance of SemanticPipeline.



8
9
10
11
12
# File 'lib/agent/session_context/semantic_pipeline.rb', line 8

def initialize(backend:, packet: EvidencePacket.new, parser: SummaryParser.new)
  @backend = backend
  @packet = packet
  @parser = parser
end

Instance Method Details

#call(transcript:, observed:) ⇒ Object



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
# File 'lib/agent/session_context/semantic_pipeline.rb', line 14

def call(transcript:, observed:)
  packet = @packet.call(transcript:, observed:)
  warnings = packet.warnings.dup

  extracted_items = packet.chunks.flat_map do |chunk|
    parsed = parse_chunk(chunk, allowed_refs: packet.source_refs_for(chunk))
    warnings.concat(parsed.warnings)
    parsed.items
  end

  items =
    if packet.chunks.length > 1
      parsed = parse_reduction(extracted_items, allowed_refs: reduction_allowed_refs(extracted_items))
      warnings.concat(parsed.warnings)
      parsed.items
    else
      extracted_items
    end

  Result.new(
    items: items.freeze,
    warnings: warnings.freeze,
    metadata: { backend: backend_name, chunks: packet.chunks.length }.freeze
  )
end