Module: Riffer::Agent::Run
Overview
Riffer::Agent::Run is the generation loop. A pure module of functions over an agent — Agent owns every per-call value (provider, model, tools, tool runtime, structured output, session, context); Run just orchestrates.
Tools and user code see the agent’s context (a Riffer::Agent::Context) unchanged through the loop, so downstream tool runtimes can read caller-provided keys via context[:agent] / context.dig(:key), or the framework built-ins via context.skills. Cumulative token usage is updated into agent.context.token_usage as the loop progresses.
Riffer::Agent::Run.generate(agent: my_agent, prompt: "Hello")
Riffer::Agent::Run.stream(agent: my_agent, prompt: "Hello")
Instance Method Summary collapse
-
#generate(agent:, prompt: nil, files: nil) ⇒ Object
Runs the generate loop for the given agent.
-
#stream(agent:, prompt: nil, files: nil) ⇒ Object
Runs the streaming loop for the given agent.
Methods included from Messages::Converter
#convert_to_file_part, #convert_to_message_object
Instance Method Details
#generate(agent:, prompt: nil, files: nil) ⇒ Object
Runs the generate loop for the given agent. See Riffer::Agent#generate for prompt/files semantics.
– : (agent: Riffer::Agent, ?prompt: String?, ?files: Array[Hash[Symbol, untyped] | Riffer::Messages::FilePart]?) -> Riffer::Agent::Response
27 28 29 30 |
# File 'lib/riffer/agent/run.rb', line 27 def generate(agent:, prompt: nil, files: nil) (agent, prompt, files: files) run_loop(agent) end |
#stream(agent:, prompt: nil, files: nil) ⇒ Object
Runs the streaming loop for the given agent. See Riffer::Agent#stream for prompt/files semantics.
– : (agent: Riffer::Agent, ?prompt: String?, ?files: Array[Hash[Symbol, untyped] | Riffer::Messages::FilePart]?) -> Enumerator[Riffer::StreamEvents::Base, void]
37 38 39 40 |
# File 'lib/riffer/agent/run.rb', line 37 def stream(agent:, prompt: nil, files: nil) (agent, prompt, files: files) Enumerator.new { |stream_yielder| run_loop(agent, stream_yielder: stream_yielder) } end |