Module: LLM::Sequel::Plugin::InstanceMethods

Defined in:
lib/llm/sequel/plugin.rb

Constant Summary collapse

Utils =
Plugin::Utils

Instance Method Summary collapse

Instance Method Details

#unwrap! ⇒ LLM::Context, LLM::Agent

Returns the runtime this record wraps: an LLM::Context for plugin :llm, and an LLM::Agent for plugin :agent. The runtime is memoized, so every call returns the same object.

Returns:



347
348
349
# File 'lib/llm/sequel/plugin.rb', line 347

def unwrap!
  __context__
end

#ask ⇒ LLM::Response

Continues the stored context with new input.

The conversation is saved by LLM::Step at each request.

Returns:

See Also:



177
178
179
# File 'lib/llm/sequel/plugin.rb', line 177

def ask(...)
  __context__.ask(...)
end

#wait ⇒ Array<LLM::Function::Return>

Waits for queued tool work to finish.

Returns:

See Also:



185
186
187
# File 'lib/llm/sequel/plugin.rb', line 185

def wait(...)
  __context__.wait(...)
end

#mode ⇒ Symbol

Returns:

  • (Symbol)

See Also:



192
193
194
# File 'lib/llm/sequel/plugin.rb', line 192

def mode
  __context__.mode
end

#messages ⇒ LLM::Buffer

Note:

There is no view over the jsonb column on this side, so a record always loads the runtime to answer this - unlike ActiveRecord, where a jsonb record reads the column directly. The two wrappers are written to mirror each other, and this is the one place they do not.

Returns:

See Also:



204
205
206
# File 'lib/llm/sequel/plugin.rb', line 204

def messages
  __context__.messages
end

#messages! ⇒ LLM::Buffer

Note:

The same call #messages makes here, and here for the sake of the name: on ActiveRecord the two differ for a jsonb record, and a wrapper that answered to a name the other one does not is the next reader's surprise.

Returns:

See Also:



215
216
217
# File 'lib/llm/sequel/plugin.rb', line 215

def messages!
  __context__.messages
end

#model! ⇒ String

Note:

The bang is used because Sequel reserves model for the underlying model class on instances.

Returns:

  • (String)

See Also:



224
225
226
# File 'lib/llm/sequel/plugin.rb', line 224

def model!
  __context__.model
end

#pending_functions ⇒ Array<LLM::Function>

Returns:

See Also:



231
232
233
# File 'lib/llm/sequel/plugin.rb', line 231

def pending_functions
  __context__.pending_functions
end

#pending_functions? ⇒ Boolean

Returns:

  • (Boolean)

See Also:



238
239
240
# File 'lib/llm/sequel/plugin.rb', line 238

def pending_functions?
  __context__.pending_functions?
end

#returns ⇒ Array<LLM::Function::Return>

Returns:

See Also:



245
246
247
# File 'lib/llm/sequel/plugin.rb', line 245

def returns
  __context__.returns
end

#cost ⇒ LLM::Cost

Returns:

See Also:



252
253
254
# File 'lib/llm/sequel/plugin.rb', line 252

def cost
  __context__.cost
end

#context_window ⇒ Integer

Returns:

  • (Integer)

See Also:



259
260
261
# File 'lib/llm/sequel/plugin.rb', line 259

def context_window
  __context__.context_window
end

#context_used ⇒ Integer

Returns how many tokens have been used within the context window

Returns:

  • (Integer)


267
268
269
# File 'lib/llm/sequel/plugin.rb', line 267

def context_used
  __context__.context_used
end

#context_usage ⇒ Rational?

Returns context window usage as a Rational

Returns:

  • (Rational, nil)


274
275
276
# File 'lib/llm/sequel/plugin.rb', line 274

def context_usage
  __context__.context_usage
end

#token_usage ⇒ LLM::Usage Also known as: usage

Returns usage from the mapped usage columns.

Returns:



281
282
283
# File 'lib/llm/sequel/plugin.rb', line 281

def token_usage
  __context__.token_usage
end

#interrupt! ⇒ nil Also known as: cancel!

Returns:

  • (nil)

See Also:



289
290
291
# File 'lib/llm/sequel/plugin.rb', line 289

def interrupt!
  __context__.interrupt!
end

#prompt ⇒ LLM::Prompt Also known as: build_prompt

Returns:

See Also:



297
298
299
# File 'lib/llm/sequel/plugin.rb', line 297

def prompt(&)
  __context__.prompt(&)
end

#image_url ⇒ LLM::Object

Returns:

See Also:



305
306
307
# File 'lib/llm/sequel/plugin.rb', line 305

def image_url(...)
  __context__.image_url(...)
end

#local_file ⇒ LLM::Object

Returns:

See Also:



312
313
314
# File 'lib/llm/sequel/plugin.rb', line 312

def local_file(...)
  __context__.local_file(...)
end

#remote_file ⇒ LLM::Object

Returns:

See Also:



319
320
321
# File 'lib/llm/sequel/plugin.rb', line 319

def remote_file(...)
  __context__.remote_file(...)
end

#tracer ⇒ LLM::Tracer

Returns:

See Also:



326
327
328
# File 'lib/llm/sequel/plugin.rb', line 326

def tracer
  __context__.tracer
end

#llm ⇒ LLM::Provider

Returns the resolved provider instance for this record.

Returns:



333
334
335
336
337
338
339
# File 'lib/llm/sequel/plugin.rb', line 333

def llm
  options = self.class.llm_plugin_options
  return @llm if @llm
  @llm = Utils.resolve_provider(self, options, Plugin::EMPTY_HASH)
  @llm.tracer = Utils.resolve_option(self, options[:tracer]) if options[:tracer]
  @llm
end

#talk ⇒ LLM::Response

Continues the stored context with new input.

The conversation is saved by LLM::Step at each request.

Returns:

See Also:



167
168
169
# File 'lib/llm/sequel/plugin.rb', line 167

def talk(...)
  __context__.talk(...)
end