Class: Boxcars::Swagger

Inherits:
EngineBoxcar show all
Defined in:
lib/boxcars/boxcar/swagger.rb

Overview

A Boxcar that interprets a prompt and executes API calls to get an answer.

Constant Summary collapse

DESC =

the description of this engine boxcar

"useful for when you need to make Open API calls to get an answer."
CTEMPLATE =

our template

[
  syst("Study this Open API Swagger file %<swagger_url>s\n",
       "and write a Ruby Program that prints the answer to the following questions using the appropriate API calls:\n",
       "Additional context that you might need in the Ruby program: (%<context>s)\n",
       "Use the following format:\n",
       "${{Question needing API calls and code}}\n",
       "reply only with the following format:\n",
       "```ruby\n${{Ruby code with API calls and code that prints the answer}}\n```\n",
       "```output\n${{Output of your code}}\n```\n\n",
       "Otherwise, if you know the answer and do not need any API calls, you should use this simpler format:\n",
       "${{Question not needing API calls}}\n",
       "Answer: ${{Answer}}\n\n",
       "Do not give an explanation of the answer and make sure your answer starts with either 'Answer:' or '```ruby'. ",
       "Make use of the rest-client gem to make your requests to the API. Just print the answer."),
  user("%<question>s")
].freeze

Instance Attribute Summary collapse

Attributes inherited from EngineBoxcar

#engine, #prompt, #stop, #top_k

Attributes inherited from Boxcar

#description, #name, #parameters, #return_direct

Instance Method Summary collapse

Methods inherited from EngineBoxcar

#apply, #call, #check_output_keys, #extract_code, #generate, #input_key, #input_keys, #output_key, #output_keys, #predict, #prediction_input, #prediction_variables

Methods inherited from Boxcar

#apply, assi, #call, #conduct, hist, #input_keys, #load, #output_keys, #run, #save, #schema, syst, user, #validate_inputs, #validate_outputs

Constructor Details

#initialize(swagger_url:, engine: nil, prompt: nil, context: "", **kwargs) ⇒ Swagger

Returns a new instance of Swagger.

Parameters:

  • swagger_url (String)

    The URL of the Open API Swagger file to use.

  • engine (Boxcars::Engine) (defaults to: nil)

    The engine to user for this boxcar. Can be inherited from a train if nil.

  • prompt (Boxcars::Prompt) (defaults to: nil)

    The prompt to use for this boxcar. Defaults to built-in prompt.

  • context (String) (defaults to: "")

    Additional context to use for the prompt.

  • kwargs (Hash)

    Any other keyword arguments to pass to the parent class.



17
18
19
20
21
22
23
24
25
# File 'lib/boxcars/boxcar/swagger.rb', line 17

def initialize(swagger_url:, engine: nil, prompt: nil, context: "", **kwargs)
  @swagger_url = swagger_url
  @context = context
  the_prompt = prompt || my_prompt
  kwargs[:stop] ||= ["```output"]
  kwargs[:name] ||= "Swagger API"
  kwargs[:description] ||= DESC
  super(engine:, prompt: the_prompt, **kwargs)
end

Instance Attribute Details

#contextObject

Returns the value of attribute context.



10
11
12
# File 'lib/boxcars/boxcar/swagger.rb', line 10

def context
  @context
end

#swagger_urlObject

Returns the value of attribute swagger_url.



10
11
12
# File 'lib/boxcars/boxcar/swagger.rb', line 10

def swagger_url
  @swagger_url
end

Instance Method Details

#prediction_additional(_inputs) ⇒ Object

Returns Hash The additional variables for this boxcar.

Returns:

  • Hash The additional variables for this boxcar.



28
29
30
# File 'lib/boxcars/boxcar/swagger.rb', line 28

def prediction_additional(_inputs)
  { swagger_url:, context: }.merge super
end