Class: RubyBots::RouterBot

Inherits:
OpenAIBot show all
Defined in:
lib/ruby_bots/bots/router_bot.rb

Overview

Class to provide a router to different tools. This bot connects to the OpenAI API and uses gpt-3.5-turbo by default to choose a proper tool to route the user’s input. The bot will only select and use one tool by default.

Constant Summary collapse

DEFAULT_DESCRIPTION =
<<~DESCRIPTION.strip_heredoc
  This bot will route the user's input to the appropriate tool. It will only select and use one tool."
DESCRIPTION

Instance Attribute Summary

Attributes inherited from OpenAIBot

#tools

Attributes inherited from Tool

#description, #errors, #name

Instance Method Summary collapse

Methods inherited from OpenAITool

#client, #default_params

Methods inherited from Tool

#response, validate_input, validate_output

Constructor Details

#initialize(tools:, name: 'Router bot', description: DEFAULT_DESCRIPTION) ⇒ RouterBot

Returns a new instance of RouterBot.



10
11
12
# File 'lib/ruby_bots/bots/router_bot.rb', line 10

def initialize(tools:, name: 'Router bot', description: DEFAULT_DESCRIPTION)
  super(tools:, name:, description:)
end

Instance Method Details

#system_instructionsObject



14
15
16
17
18
19
20
21
22
# File 'lib/ruby_bots/bots/router_bot.rb', line 14

def system_instructions
  <<~PROMPT
    You are an assistant helping to route a user's input to the correct tool.
    You can use the following tools (name - description):
    #{tools.map { |t| "#{t.name} - #{t.description}" }.join('\n')}

    Return only the name of the tool that best fits the user's request.
  PROMPT
end