Class: LastLLM::Providers::TestProvider

Inherits:
LastLLM::Provider show all
Defined in:
lib/last_llm/providers/test_provider.rb

Overview

A provider implementation for testing purposes

Constant Summary collapse

BASE_ENDPOINT =

API Configuration (not used for testing but included for consistency)

'http://test.example.com'
DEFAULT_MODEL =
'test-model'
DEFAULT_TEXT_RESPONSE =

Default response values

'Test response'
DEFAULT_OBJECT_RESPONSE =
{}

Instance Attribute Summary collapse

Attributes inherited from LastLLM::Provider

#config, #name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from LastLLM::Provider

#handle_request_error, #parse_response

Constructor Details

#initialize(config = {}) ⇒ TestProvider

Returns a new instance of TestProvider.



19
20
21
22
23
24
25
26
27
# File 'lib/last_llm/providers/test_provider.rb', line 19

def initialize(config = {})
  # Skip parent's initialize which checks for API key
  # Instead implement our own initialization
  @config = config.is_a?(Hash) ? config : {}
  @name = Constants::TEST
  @text_response = DEFAULT_TEXT_RESPONSE
  @object_response = DEFAULT_OBJECT_RESPONSE
  logger.debug("#{@name}: Initialized test provider")
end

Instance Attribute Details

#object_responseObject

Returns the value of attribute object_response.



17
18
19
# File 'lib/last_llm/providers/test_provider.rb', line 17

def object_response
  @object_response
end

#text_responseObject

Returns the value of attribute text_response.



17
18
19
# File 'lib/last_llm/providers/test_provider.rb', line 17

def text_response
  @text_response
end

Class Method Details

.execute_tool(tool, _response) ⇒ Hash?

Execute a test tool

Parameters:

  • tool (LastLLM::Tool)

    The tool to execute

  • _response (Hash)

    Not used in test provider

Returns:

  • (Hash, nil)

    Always returns nil in test provider



65
66
67
# File 'lib/last_llm/providers/test_provider.rb', line 65

def self.execute_tool(tool, _response)
  nil # Test provider doesn't execute tools by default
end

.format_tool(tool) ⇒ Hash

Format a tool for the test provider

Parameters:

Returns:

  • (Hash)

    The tool in test format



53
54
55
56
57
58
59
# File 'lib/last_llm/providers/test_provider.rb', line 53

def self.format_tool(tool)
  {
    name: tool.name,
    description: tool.description,
    parameters: tool.parameters
  }
end

Instance Method Details

#generate_object(prompt, schema, options = {}) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/last_llm/providers/test_provider.rb', line 42

def generate_object(prompt, schema, options = {})
  model = options[:model] || @config[:model] || DEFAULT_MODEL
  logger.info("#{@name}: Generating object with model: #{model}")
  logger.debug("#{@name}: Object prompt with schema: #{schema.inspect}")
  logger.debug("#{@name}: Generated test object response")
  @object_response
end

#generate_text(prompt, options = {}) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/last_llm/providers/test_provider.rb', line 34

def generate_text(prompt, options = {})
  model = options[:model] || @config[:model] || DEFAULT_MODEL
  logger.info("#{@name}: Generating text with model: #{model}")
  logger.debug("#{@name}: Text prompt: #{truncate_text(prompt.to_s)}")
  logger.debug("#{@name}: Generated test response of #{@text_response.length} characters")
  @text_response
end

#validate_config!Object

Override validate_config! to not require API key



30
31
32
# File 'lib/last_llm/providers/test_provider.rb', line 30

def validate_config!
  # No validation needed for test provider
end