Class: PromptCanary::PromptExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/prompt_canary/prompt_executor.rb

Instance Method Summary collapse

Constructor Details

#initialize(prompt_class:, adapter: nil, recorder: nil) ⇒ PromptExecutor

Returns a new instance of PromptExecutor.



5
6
7
8
9
# File 'lib/prompt_canary/prompt_executor.rb', line 5

def initialize(prompt_class:, adapter: nil, recorder: nil)
  @prompt_class = prompt_class
  @adapter      = adapter  || AdapterFactory.build(PromptCanary.configuration.adapter)
  @recorder     = recorder || Recorder.new(storage: StorageFactory.build(PromptCanary.configuration.storage))
end

Instance Method Details

#call(context: {}, **args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/prompt_canary/prompt_executor.rb', line 11

def call(context: {}, **args)
  version   = Router.choose(@prompt_class, context)
  telemetry = @adapter.call(version: version, args: args)
  @recorder.record(prompt: @prompt_class.name, version: version, telemetry: telemetry)

  Result.new(
    text: telemetry[:text],
    version_used: version.name,
    model: version.model,
    latency_ms: telemetry[:latency_ms],
    tokens: telemetry[:tokens],
    error: telemetry[:error],
    recorded_at: Time.now
  )
end