class Riffer::Providers::Base
Base class for all LLM providers. A template-method flow: subclasses implement the hooks (build_request_params, execute_generate, execute_stream, extract_token_usage, extract_content, extract_tool_calls) and the base class orchestrates them.
Constants
- WIRE_SEPARATOR
-
@rbs @current_tools: Array
Public Class Methods
Source
# File lib/riffer/providers/base.rb, line 19 def self.skills_adapter(model = nil) Riffer::Skills::MarkdownAdapter end
Returns the preferred skill adapter for this provider; override in subclasses (optionally introspecting model) for provider-specific formats.
Public Instance Methods
Source
# File lib/riffer/providers/base.rb, line 27 def generate_text(prompt: nil, system: nil, messages: nil, model: nil, files: nil, **options) validate_input!(prompt: prompt, system: system, messages: messages) @current_tools = options[:tools] || [] #: Array[singleton(Riffer::Tool)] messages = normalize_messages(prompt: prompt, system: system, messages: messages, files: files) validate_normalized_messages!(messages) messages = merge_consecutive_messages(messages) params = build_request_params(messages, model, options) response = execute_generate(params) content = extract_content(response) tool_calls = extract_tool_calls(response) token_usage = extract_token_usage(response) structured_output = parse_structured_output(content) if options[:structured_output] && tool_calls.empty? Riffer::Messages::Assistant.new( content, tool_calls: tool_calls, token_usage: token_usage, structured_output: structured_output ) end
Generates text using the provider.
Source
# File lib/riffer/providers/base.rb, line 53 def stream_text(prompt: nil, system: nil, messages: nil, model: nil, files: nil, **options) validate_input!(prompt: prompt, system: system, messages: messages) @current_tools = options[:tools] || [] #: Array[singleton(Riffer::Tool)] messages = normalize_messages(prompt: prompt, system: system, messages: messages, files: files) validate_normalized_messages!(messages) messages = merge_consecutive_messages(messages) params = build_request_params(messages, model, options) Enumerator.new do |yielder| execute_stream(params, yielder) end end
Streams text from the provider.