Class: SmartBrain::Adapters::SmartRag::DirectClient

Inherits:
Object
  • Object
show all
Includes:
ScopeFilter
Defined in:
lib/smart_brain/adapters/smart_rag/direct_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(rag:, scope_mapper: nil, fail_closed: true) ⇒ DirectClient

Returns a new instance of DirectClient.



11
12
13
14
15
# File 'lib/smart_brain/adapters/smart_rag/direct_client.rb', line 11

def initialize(rag:, scope_mapper: nil, fail_closed: true)
  @rag = rag
  @scope_mapper = scope_mapper
  @fail_closed = fail_closed
end

Instance Method Details

#retrieve(plan) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/smart_brain/adapters/smart_rag/direct_client.rb', line 17

def retrieve(plan)
  scoped_plan, required, ignored, warnings = prepare_scoped_plan(plan)
  return scope_failure_pack(plan, ignored, warnings, prefix: 'scope-blocked') unless scoped_plan

  response = rag.retrieve(plan: scoped_plan)
  pack = normalize_pack(response, request_id: plan[:request_id])
  enforce_scope_confirmation(pack, required: required, ignored: ignored, warnings: warnings)
rescue StandardError => e
  {
    version: '0.1',
    request_id: plan[:request_id],
    plan_id: "direct-error-#{plan[:request_id]}",
    generated_at: Time.now.utc.iso8601,
    evidences: [],
    stats: { candidates: 0, returned: 0, took_ms: 0 },
    explain: { ignored_fields: [] },
    warnings: ["smart_rag direct retrieve failed: #{e.message}"]
  }
end