Class: Langchain::Tool::Calculator

Inherits:
Base
  • Object
show all
Defined in:
lib/langchain/tool/calculator/calculator.rb

Constant Summary collapse

NAME =

A calculator tool that falls back to the Google calculator widget

Gem requirements:

gem "eqn", "~> 1.6.5"
gem "google_search_results", "~> 2.0.0"

Usage:

calculator = Langchain::Tool::Calculator.new
"calculator"
ANNOTATIONS_PATH =
Langchain.root.join("./langchain/tool/#{NAME}/#{NAME}.json").to_path

Instance Method Summary collapse

Methods inherited from Base

logger_options, #method_annotations, #name, #to_openai_tools

Methods included from DependencyHelper

#depends_on

Constructor Details

#initializeCalculator

Returns a new instance of Calculator.



18
19
20
# File 'lib/langchain/tool/calculator/calculator.rb', line 18

def initialize
  depends_on "eqn"
end

Instance Method Details

#execute(input:) ⇒ String

Evaluates a pure math expression or if equation contains non-math characters (e.g.: “12F in Celsius”) then it uses the google search calculator to evaluate the expression

Parameters:

  • input (String)

    math expression

Returns:

  • (String)

    Answer



26
27
28
29
30
31
32
# File 'lib/langchain/tool/calculator/calculator.rb', line 26

def execute(input:)
  Langchain.logger.info("Executing \"#{input}\"", for: self.class)

  Eqn::Calculator.calc(input)
rescue Eqn::ParseError, Eqn::NoVariableValueError
  "\"#{input}\" is an invalid mathematical expression"
end