Class: Silas::Agent
- Inherits:
-
Object
- Object
- Silas::Agent
- Defined in:
- lib/silas/agent.rb
Overview
The parsed agent definition: app/agent/agent.yml (data-only config, eve's keys) over Silas.config defaults.
Class Method Summary collapse
Instance Method Summary collapse
- #description ⇒ Object
-
#initialize(attrs = {}) ⇒ Agent
constructor
A new instance of Agent.
- #limits ⇒ Object
-
#max_cost ⇒ Object
dollars per turn.
-
#max_input_tokens ⇒ Object
cumulative input tokens per turn.
- #max_steps ⇒ Object
- #model ⇒ Object
-
#start(input:, metadata: {}, channel: nil, continuation_token: nil) ⇒ Object
Start a session with its first turn.
-
#timeout ⇒ Object
wall-clock seconds per turn.
Constructor Details
#initialize(attrs = {}) ⇒ Agent
Returns a new instance of Agent.
13 14 15 |
# File 'lib/silas/agent.rb', line 13 def initialize(attrs = {}) @attrs = attrs end |
Class Method Details
.load(root: Rails.root, dir: nil) ⇒ Object
7 8 9 10 11 |
# File 'lib/silas/agent.rb', line 7 def self.load(root: Rails.root, dir: nil) dir ||= root.join("app/agent") path = Pathname(dir).join("agent.yml") new(path.exist? ? YAML.safe_load(path.read) || {} : {}) end |
Instance Method Details
#description ⇒ Object
18 |
# File 'lib/silas/agent.rb', line 18 def description = @attrs["description"].to_s |
#limits ⇒ Object
19 |
# File 'lib/silas/agent.rb', line 19 def limits = @attrs["limits"] || {} |
#max_cost ⇒ Object
dollars per turn
22 |
# File 'lib/silas/agent.rb', line 22 def max_cost = limits["max_cost"] # dollars per turn |
#max_input_tokens ⇒ Object
cumulative input tokens per turn
21 |
# File 'lib/silas/agent.rb', line 21 def max_input_tokens = limits["max_input_tokens"] # cumulative input tokens per turn |
#max_steps ⇒ Object
20 |
# File 'lib/silas/agent.rb', line 20 def max_steps = limits["max_steps"] || Silas.config.max_steps |
#model ⇒ Object
17 |
# File 'lib/silas/agent.rb', line 17 def model = @attrs["model"] || Silas.config.default_model |
#start(input:, metadata: {}, channel: nil, continuation_token: nil) ⇒ Object
Start a session with its first turn. channel/continuation_token let a channel bind the session to an external thread (backward-compatible).
27 28 29 30 31 |
# File 'lib/silas/agent.rb', line 27 def start(input:, metadata: {}, channel: nil, continuation_token: nil) session = Session.create!(metadata: , channel: channel, continuation_token: continuation_token) session.continue(input: input) session end |
#timeout ⇒ Object
wall-clock seconds per turn
23 |
# File 'lib/silas/agent.rb', line 23 def timeout = limits["timeout"] # wall-clock seconds per turn |