Class: Ollama::Pipeline
- Inherits:
-
Object
- Object
- Ollama::Pipeline
- Defined in:
- lib/ollama/pipeline.rb
Overview
Pipeline orchestrates the middleware execution chain. It wraps the transport and applies middleware in order.
Instance Attribute Summary collapse
-
#events ⇒ Object
readonly
Returns the value of attribute events.
-
#middlewares ⇒ Object
readonly
Returns the value of attribute middlewares.
-
#transport ⇒ Object
readonly
Returns the value of attribute transport.
Instance Method Summary collapse
-
#call(request) ⇒ Ollama::Transport::Response
Execute a request through the pipeline.
-
#initialize(transport, middlewares: [], events: nil) ⇒ Pipeline
constructor
A new instance of Pipeline.
-
#stream(request) {|chunk| ... } ⇒ Ollama::Transport::Response
Execute a streaming request through the pipeline.
-
#use(middleware, **options) ⇒ Pipeline
Add a middleware to the pipeline.
Constructor Details
#initialize(transport, middlewares: [], events: nil) ⇒ Pipeline
Returns a new instance of Pipeline.
12 13 14 15 16 |
# File 'lib/ollama/pipeline.rb', line 12 def initialize(transport, middlewares: [], events: nil) @transport = transport @middlewares = middlewares.dup.freeze @events = events || Events.new end |
Instance Attribute Details
#events ⇒ Object (readonly)
Returns the value of attribute events.
10 11 12 |
# File 'lib/ollama/pipeline.rb', line 10 def events @events end |
#middlewares ⇒ Object (readonly)
Returns the value of attribute middlewares.
10 11 12 |
# File 'lib/ollama/pipeline.rb', line 10 def middlewares @middlewares end |
#transport ⇒ Object (readonly)
Returns the value of attribute transport.
10 11 12 |
# File 'lib/ollama/pipeline.rb', line 10 def transport @transport end |
Instance Method Details
#call(request) ⇒ Ollama::Transport::Response
Execute a request through the pipeline
32 33 34 35 36 37 |
# File 'lib/ollama/pipeline.rb', line 32 def call(request) env = { request: request, started_at: Process.clock_gettime(Process::CLOCK_MONOTONIC) } # Execute middleware chain execute_chain(request, env) end |
#stream(request) {|chunk| ... } ⇒ Ollama::Transport::Response
Execute a streaming request through the pipeline
43 44 45 46 47 |
# File 'lib/ollama/pipeline.rb', line 43 def stream(request, &block) env = { request: request, started_at: Process.clock_gettime(Process::CLOCK_MONOTONIC) } execute_stream_chain(request, env, &block) end |
#use(middleware, **options) ⇒ Pipeline
Add a middleware to the pipeline
22 23 24 25 26 27 |
# File 'lib/ollama/pipeline.rb', line 22 def use(middleware, **) middleware_instance = middleware.is_a?(Class) ? middleware.new(**) : middleware raise ArgumentError, "Middleware must be a subclass of Ollama::Middleware" unless middleware_instance.is_a?(Middleware) self.class.new(@transport, middlewares: @middlewares + [middleware_instance], events: @events) end |