Class: RubyLLM::MCP::Sample

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/mcp/sample.rb

Defined Under Namespace

Classes: Hint

Constant Summary collapse

REJECTED_MESSAGE =
"Sampling request was rejected"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result, coordinator) ⇒ Sample

Returns a new instance of Sample.



38
39
40
41
42
43
44
45
46
47
# File 'lib/ruby_llm/mcp/sample.rb', line 38

def initialize(result, coordinator)
  params = result.params
  @id = result.id
  @coordinator = coordinator

  @raw_messages = params["messages"] || []
  @model_preferences = Hint.new(params["model"], params["modelPreferences"])
  @system_prompt = params["systemPrompt"]
  @max_tokens = params["maxTokens"]
end

Instance Attribute Details

#max_tokensObject (readonly)

Returns the value of attribute max_tokens.



36
37
38
# File 'lib/ruby_llm/mcp/sample.rb', line 36

def max_tokens
  @max_tokens
end

#model_preferencesObject (readonly)

Returns the value of attribute model_preferences.



36
37
38
# File 'lib/ruby_llm/mcp/sample.rb', line 36

def model_preferences
  @model_preferences
end

#raw_messagesObject (readonly)

Returns the value of attribute raw_messages.



36
37
38
# File 'lib/ruby_llm/mcp/sample.rb', line 36

def raw_messages
  @raw_messages
end

#system_promptObject (readonly)

Returns the value of attribute system_prompt.



36
37
38
# File 'lib/ruby_llm/mcp/sample.rb', line 36

def system_prompt
  @system_prompt
end

Instance Method Details

#executeObject



49
50
51
52
53
54
55
56
57
58
# File 'lib/ruby_llm/mcp/sample.rb', line 49

def execute
  # Check if handler is a class or block
  handler = @coordinator.sampling_callback

  if Handlers.handler_class?(handler)
    execute_with_handler_class(handler)
  else
    execute_with_block
  end
end

#messageObject



60
61
62
# File 'lib/ruby_llm/mcp/sample.rb', line 60

def message
  @message ||= raw_messages.map { |message| message.fetch("content")&.fetch("text") }.join("\n")
end

#to_hObject Also known as: to_json



64
65
66
67
68
69
70
71
# File 'lib/ruby_llm/mcp/sample.rb', line 64

def to_h
  {
    id: @id,
    model_preferences: @model_preferences.to_h,
    system_prompt: @system_prompt,
    max_tokens: @max_tokens
  }
end