Sha256: 200a7b0e5d0425d3c33ebe4094e30f4b4190ea94961c2afe14cd136047d255a8
Contents?: true
Size: 805 Bytes
Versions: 1
Compression:
Stored size: 805 Bytes
Contents
module Bristow class Agency attr_reader :agents def initialize(agents: []) @agents = agents end def chat(messages, &block) # Convert string message to proper format messages = [{ role: "user", content: messages }] if messages.is_a?(String) # Convert array of strings to proper format messages = messages.map { |msg| msg.is_a?(String) ? { role: "user", content: msg } : msg } if messages.is_a?(Array) raise NotImplementedError, "Agency#chat must be implemented by a subclass" end def find_agent(name) agents.find { |agent| agent.name == name } end protected def call_agent(agent, messages, &block) response = agent.chat(messages, &block) response.last # Return just the last message end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bristow-0.1.0 | lib/bristow/agency.rb |