Class: MockServer::LLM::LlmConversationBuilder
- Inherits:
-
Object
- Object
- MockServer::LLM::LlmConversationBuilder
- Defined in:
- lib/mockserver/llm.rb
Instance Method Summary collapse
- #apply_to(client) ⇒ Array<Expectation>
-
#build ⇒ Array<Hash>
A list of expectations.
-
#initialize ⇒ LlmConversationBuilder
constructor
A new instance of LlmConversationBuilder.
- #isolate_by(source) ⇒ self
- #turn ⇒ TurnBuilder
- #with_model(model) ⇒ self
- #with_path(path) ⇒ self
- #with_provider(provider) ⇒ self
Constructor Details
#initialize ⇒ LlmConversationBuilder
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>
705 706 707 |
# File 'lib/mockserver/llm.rb', line 705 def apply_to(client) client.upsert(*build.map { |h| RawExpectation.new(h) }) end |
#build ⇒ Array<Hash>
Returns a list of expectations.
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
663 664 665 666 |
# File 'lib/mockserver/llm.rb', line 663 def isolate_by(source) @isolation_source = source self end |
#turn ⇒ TurnBuilder
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
657 658 659 660 |
# File 'lib/mockserver/llm.rb', line 657 def with_model(model) @model = model self end |
#with_path(path) ⇒ self
645 646 647 648 |
# File 'lib/mockserver/llm.rb', line 645 def with_path(path) @path = path self end |
#with_provider(provider) ⇒ self
651 652 653 654 |
# File 'lib/mockserver/llm.rb', line 651 def with_provider(provider) @provider = provider self end |