Module: LlmCassette

Defined in:
lib/llm_cassette.rb,
lib/llm_cassette/errors.rb,
lib/llm_cassette/version.rb,
lib/llm_cassette/cassette.rb,
lib/llm_cassette/recorder.rb,
lib/llm_cassette/replayer.rb,
lib/llm_cassette/middleware.rb,
lib/llm_cassette/interaction.rb,
lib/llm_cassette/configuration.rb,
lib/llm_cassette/rspec/helpers.rb,
lib/llm_cassette/request_signature.rb

Defined Under Namespace

Modules: RSpec Classes: Cassette, CassetteNotFoundError, Configuration, Error, Interaction, Middleware, NoMoreInteractionsError, Recorder, Replayer, RequestSignature

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.configurationObject



19
20
21
# File 'lib/llm_cassette.rb', line 19

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



15
16
17
# File 'lib/llm_cassette.rb', line 15

def configure
  yield configuration
end

.current_cassetteObject



27
28
29
# File 'lib/llm_cassette.rb', line 27

def current_cassette
  Thread.current[:llm_cassette_current]
end

.reset!Object



23
24
25
# File 'lib/llm_cassette.rb', line 23

def reset!
  @configuration = nil
end

.use_cassette(name, record: nil, &block) ⇒ Object

Block form — wraps a block with an active cassette.

LlmCassette.use_cassette("greeting") do
  response = client.chat("say hello")
end

Options:

record: :none (default) — replay only, raise if cassette missing
record: :all            — always record (hits real API)


40
41
42
43
44
45
46
47
48
49
# File 'lib/llm_cassette.rb', line 40

def use_cassette(name, record: nil, &block)
  cassette = Cassette.new(name, record: record)
  Thread.current[:llm_cassette_current] = cassette
  begin
    block.call(cassette)
  ensure
    cassette.eject!
    Thread.current[:llm_cassette_current] = nil
  end
end