Class: MockServer::LLM::LlmConversationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mockserver/llm.rb

Instance Method Summary collapse

Constructor Details

#initializeLlmConversationBuilder

Returns a new instance of LlmConversationBuilder.



636
637
638
639
640
641
642
# File 'lib/mockserver/llm.rb', line 636

def initialize
  @path = nil
  @provider = nil
  @model = nil
  @isolation_source = nil
  @turns = []
end

Instance Method Details

#apply_to(client) ⇒ Array<Expectation>

Returns:



705
706
707
# File 'lib/mockserver/llm.rb', line 705

def apply_to(client)
  client.upsert(*build.map { |h| RawExpectation.new(h) })
end

#buildArray<Hash>

Returns a list of expectations.

Returns:

  • (Array<Hash>)

    a list of expectations

Raises:

  • (ArgumentError)


676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
# File 'lib/mockserver/llm.rb', line 676

def build
  raise ArgumentError, 'At least one turn must be defined' if @turns.empty?
  raise ArgumentError, 'Path must be set' if @path.nil?
  raise ArgumentError, 'Provider must be set' if @provider.nil?

  conversation_id = SCENARIO_PREFIX + SecureRandom.uuid
  scenario_name = conversation_id
  if @isolation_source
    scenario_name = conversation_id + ISOLATION_MARKER + @isolation_source.encode
  end

  n = @turns.length
  @turns.each_with_index.map do |turn, i|
    next_state = i < n - 1 ? "turn_#{i + 1}" : DONE_STATE
    llm_response = LLM.build_llm_response(
      @provider, @model, turn.completion, nil, turn.predicates, turn.chaos
    )

    {
      'httpRequest' => LLM.post_matcher(@path),
      'scenarioName' => scenario_name,
      'scenarioState' => i.zero? ? 'Started' : "turn_#{i}",
      'newScenarioState' => next_state,
      'httpLlmResponse' => llm_response
    }
  end
end

#isolate_by(source) ⇒ self

Returns:

  • (self)


663
664
665
666
# File 'lib/mockserver/llm.rb', line 663

def isolate_by(source)
  @isolation_source = source
  self
end

#turnTurnBuilder

Returns:



669
670
671
672
673
# File 'lib/mockserver/llm.rb', line 669

def turn
  turn_builder = TurnBuilder.new(self)
  @turns << turn_builder
  turn_builder
end

#with_model(model) ⇒ self

Returns:

  • (self)


657
658
659
660
# File 'lib/mockserver/llm.rb', line 657

def with_model(model)
  @model = model
  self
end

#with_path(path) ⇒ self

Returns:

  • (self)


645
646
647
648
# File 'lib/mockserver/llm.rb', line 645

def with_path(path)
  @path = path
  self
end

#with_provider(provider) ⇒ self

Returns:

  • (self)


651
652
653
654
# File 'lib/mockserver/llm.rb', line 651

def with_provider(provider)
  @provider = provider
  self
end