langchainrb 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +5 -0
 - data/Gemfile.lock +7 -1
 - data/README.md +2 -2
 - data/lib/langchain/agent/chain_of_thought_agent/chain_of_thought_agent.rb +5 -6
 - data/lib/langchain/tool/calculator.rb +2 -0
 - data/lib/langchain/tool/ruby_code_interpreter.rb +27 -0
 - data/lib/langchain/tool/serp_api.rb +2 -0
 - data/lib/langchain/tool/wikipedia.rb +2 -0
 - data/lib/langchain.rb +3 -1
 - data/lib/version.rb +1 -1
 - metadata +31 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 100c9989f1a6787168064f6d810f009c6ded8129949f0040a7c1ed05ebff9d20
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 0cf01f053841e9a45353d72b62df9a29c0daf7268fb69aff794aae830f7db448
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: becea5f089e7455e8dd9437cb3647c921eebb3155a9685697190e0e757d31ec8d9f4572faa3e299911b44b371c097bd9b5edf3da35772562027d1b12cd743b9e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 44cfe6f8cb2056d6a0a5c619ded7828a9cdad0e5f4e8876242adad2f13251ea1c3dbb64c9feffea25b61e91f163245954c1f272fadb9f4f3a2a06cadd64bd9a0
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## [0.4.1] - 2023-06-02
         
     | 
| 
      
 4 
     | 
    
         
            +
            - Beautiful colored log messages
         
     | 
| 
      
 5 
     | 
    
         
            +
            - 🛠️ Tools
         
     | 
| 
      
 6 
     | 
    
         
            +
              - Introducing `Langchain::Tool::RubyCodeInterpreter`, a tool executes sandboxed Ruby code
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       3 
8 
     | 
    
         
             
            ## [0.4.0] - 2023-06-01
         
     | 
| 
       4 
9 
     | 
    
         
             
            - [BREAKING] Everything is namespaced under `Langchain::` now
         
     | 
| 
       5 
10 
     | 
    
         
             
            - Pgvector similarity search uses the cosine distance by default now
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                langchainrb (0.4. 
     | 
| 
      
 4 
     | 
    
         
            +
                langchainrb (0.4.1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  colorize (~> 0.8.1)
         
     | 
| 
       5 
6 
     | 
    
         
             
                  tiktoken_ruby (~> 0.0.5)
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            GEM
         
     | 
| 
         @@ -32,6 +33,7 @@ GEM 
     | 
|
| 
       32 
33 
     | 
    
         
             
                ast (2.4.2)
         
     | 
| 
       33 
34 
     | 
    
         
             
                builder (3.2.4)
         
     | 
| 
       34 
35 
     | 
    
         
             
                byebug (11.1.3)
         
     | 
| 
      
 36 
     | 
    
         
            +
                childprocess (4.1.0)
         
     | 
| 
       35 
37 
     | 
    
         
             
                chroma-db (0.3.0)
         
     | 
| 
       36 
38 
     | 
    
         
             
                  dry-monads (~> 1.6)
         
     | 
| 
       37 
39 
     | 
    
         
             
                  ruby-next-core (>= 0.15.0)
         
     | 
| 
         @@ -39,6 +41,7 @@ GEM 
     | 
|
| 
       39 
41 
     | 
    
         
             
                cohere-ruby (0.9.4)
         
     | 
| 
       40 
42 
     | 
    
         
             
                  faraday (>= 1.0.0)
         
     | 
| 
       41 
43 
     | 
    
         
             
                  faraday_middleware (>= 1.0.0)
         
     | 
| 
      
 44 
     | 
    
         
            +
                colorize (0.8.1)
         
     | 
| 
       42 
45 
     | 
    
         
             
                concurrent-ruby (1.2.2)
         
     | 
| 
       43 
46 
     | 
    
         
             
                crass (1.0.6)
         
     | 
| 
       44 
47 
     | 
    
         
             
                diff-lcs (1.5.0)
         
     | 
| 
         @@ -250,6 +253,8 @@ GEM 
     | 
|
| 
       250 
253 
     | 
    
         
             
                ruby-rc4 (0.1.5)
         
     | 
| 
       251 
254 
     | 
    
         
             
                ruby2_keywords (0.0.5)
         
     | 
| 
       252 
255 
     | 
    
         
             
                rubyzip (2.3.2)
         
     | 
| 
      
 256 
     | 
    
         
            +
                safe_ruby (1.0.4)
         
     | 
| 
      
 257 
     | 
    
         
            +
                  childprocess (>= 0.3.9)
         
     | 
| 
       253 
258 
     | 
    
         
             
                standard (1.28.2)
         
     | 
| 
       254 
259 
     | 
    
         
             
                  language_server-protocol (~> 3.17.0.2)
         
     | 
| 
       255 
260 
     | 
    
         
             
                  lint_roller (~> 1.0)
         
     | 
| 
         @@ -313,6 +318,7 @@ DEPENDENCIES 
     | 
|
| 
       313 
318 
     | 
    
         
             
              replicate-ruby (~> 0.2.2)
         
     | 
| 
       314 
319 
     | 
    
         
             
              rspec (~> 3.0)
         
     | 
| 
       315 
320 
     | 
    
         
             
              ruby-openai (~> 4.0.0)
         
     | 
| 
      
 321 
     | 
    
         
            +
              safe_ruby (~> 1.0.4)
         
     | 
| 
       316 
322 
     | 
    
         
             
              standardrb
         
     | 
| 
       317 
323 
     | 
    
         
             
              weaviate-ruby (~> 0.8.0)
         
     | 
| 
       318 
324 
     | 
    
         
             
              wikipedia-client (~> 1.17.0)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -260,10 +260,10 @@ agent.run(question: "How many full soccer fields would be needed to cover the di 
     | 
|
| 
       260 
260 
     | 
    
         
             
            | Name         | Description                                        | ENV Requirements                                              | Gem Requirements                          |
         
     | 
| 
       261 
261 
     | 
    
         
             
            | ------------ | :------------------------------------------------: | :-----------------------------------------------------------: | :---------------------------------------: |
         
     | 
| 
       262 
262 
     | 
    
         
             
            | "calculator" | Useful for getting the result of a math expression |                                                               | `gem "eqn", "~> 1.6.5"`                   |
         
     | 
| 
       263 
     | 
    
         
            -
            | " 
     | 
| 
      
 263 
     | 
    
         
            +
            | "ruby_code_interpreter" | Interprets Ruby expressions             |                                                               | `gem "safe_ruby", "~> 1.0.4"`             |
         
     | 
| 
      
 264 
     | 
    
         
            +
            | "search"     | A wrapper around Google Search                     | `ENV["SERPAPI_API_KEY"]` (https://serpapi.com/manage-api-key) | `gem "google_search_results", "~> 2.0.0"` |
         
     | 
| 
       264 
265 
     | 
    
         
             
            | "wikipedia"  | Calls Wikipedia API to retrieve the summary        |                                                               | `gem "wikipedia-client", "~> 1.17.0"`     |
         
     | 
| 
       265 
266 
     | 
    
         | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
       267 
267 
     | 
    
         
             
            #### Loaders 🚚
         
     | 
| 
       268 
268 
     | 
    
         | 
| 
       269 
269 
     | 
    
         
             
            Need to read data from various sources? Load it up.
         
     | 
| 
         @@ -42,7 +42,7 @@ module Langchain::Agent 
     | 
|
| 
       42 
42 
     | 
    
         
             
                  )
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                  loop do
         
     | 
| 
       45 
     | 
    
         
            -
                    Langchain.logger.info(" 
     | 
| 
      
 45 
     | 
    
         
            +
                    Langchain.logger.info("[#{self.class.name}]".red + ": Sending the prompt to the #{llm} LLM")
         
     | 
| 
       46 
46 
     | 
    
         
             
                    response = llm_client.complete(
         
     | 
| 
       47 
47 
     | 
    
         
             
                      prompt: prompt,
         
     | 
| 
       48 
48 
     | 
    
         
             
                      stop_sequences: ["Observation:"],
         
     | 
| 
         @@ -59,12 +59,11 @@ module Langchain::Agent 
     | 
|
| 
       59 
59 
     | 
    
         
             
                      # Find the input to the action in the "Action Input: [action_input]" format
         
     | 
| 
       60 
60 
     | 
    
         
             
                      action_input = response.match(/Action Input: "?(.*)"?/)&.send(:[], -1)
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                      Langchain.logger.info("Agent: Using the \"#{action}\" Tool with \"#{action_input}\"")
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
62 
     | 
    
         
             
                      # Retrieve the Tool::[ToolName] class and call `execute`` with action_input as the input
         
     | 
| 
       65 
     | 
    
         
            -
                       
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
                      tool = Langchain::Tool.const_get(Langchain::Tool::Base::TOOLS[action.strip])
         
     | 
| 
      
 64 
     | 
    
         
            +
                      Langchain.logger.info("[#{self.class.name}]".red + ": Invoking \"#{tool}\" Tool with \"#{action_input}\"")
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                      result = tool.execute(input: action_input)
         
     | 
| 
       68 
67 
     | 
    
         | 
| 
       69 
68 
     | 
    
         
             
                      # Append the Observation to the prompt
         
     | 
| 
       70 
69 
     | 
    
         
             
                      prompt += if prompt.end_with?("Observation:")
         
     | 
| 
         @@ -18,6 +18,8 @@ module Langchain::Tool 
     | 
|
| 
       18 
18 
     | 
    
         
             
                # @param input [String] math expression
         
     | 
| 
       19 
19 
     | 
    
         
             
                # @return [String] Answer
         
     | 
| 
       20 
20 
     | 
    
         
             
                def execute(input:)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  Langchain.logger.info("[#{self.class.name}]".light_blue + ": Executing \"#{input}\"")
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       21 
23 
     | 
    
         
             
                  Eqn::Calculator.calc(input)
         
     | 
| 
       22 
24 
     | 
    
         
             
                rescue Eqn::ParseError, Eqn::NoVariableValueError
         
     | 
| 
       23 
25 
     | 
    
         
             
                  # Sometimes the input is not a pure math expression, e.g: "12F in Celsius"
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Langchain::Tool
         
     | 
| 
      
 4 
     | 
    
         
            +
              class RubyCodeInterpreter < Base
         
     | 
| 
      
 5 
     | 
    
         
            +
                description <<~DESC
         
     | 
| 
      
 6 
     | 
    
         
            +
                  A Ruby code interpreter. Use this to execute ruby expressions. Input should be a valid ruby expression. If you want to see the output of the tool, make sure to return a value.
         
     | 
| 
      
 7 
     | 
    
         
            +
                DESC
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(timeout: 30)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @timeout = timeout
         
     | 
| 
      
 11 
     | 
    
         
            +
                  depends_on "safe_ruby"
         
     | 
| 
      
 12 
     | 
    
         
            +
                  require "safe_ruby"
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # @param input [String] ruby code expression
         
     | 
| 
      
 16 
     | 
    
         
            +
                # @return [String] Answer
         
     | 
| 
      
 17 
     | 
    
         
            +
                def execute(input:)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Langchain.logger.info("[#{self.class.name}]".light_blue + ": Executing \"#{input}\"")
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  safe_eval(input)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def safe_eval(code)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  SafeRuby.eval(code, timeout: @timeout)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -33,6 +33,8 @@ module Langchain::Tool 
     | 
|
| 
       33 
33 
     | 
    
         
             
                # TODO: Glance at all of the fields that langchain Python looks through: https://github.com/hwchase17/langchain/blob/v0.0.166/langchain/utilities/serpapi.py#L128-L156
         
     | 
| 
       34 
34 
     | 
    
         
             
                # We may need to do the same thing here.
         
     | 
| 
       35 
35 
     | 
    
         
             
                def execute(input:)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  Langchain.logger.info("[#{self.class.name}]".light_blue + ": Executing \"#{input}\"")
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       36 
38 
     | 
    
         
             
                  hash_results = execute_search(input: input)
         
     | 
| 
       37 
39 
     | 
    
         | 
| 
       38 
40 
     | 
    
         
             
                  hash_results.dig(:answer_box, :answer) ||
         
     | 
| 
         @@ -22,6 +22,8 @@ module Langchain::Tool 
     | 
|
| 
       22 
22 
     | 
    
         
             
                # @param input [String] search query
         
     | 
| 
       23 
23 
     | 
    
         
             
                # @return [String] Answer
         
     | 
| 
       24 
24 
     | 
    
         
             
                def execute(input:)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  Langchain.logger.info("[#{self.class.name}]".light_blue + ": Executing \"#{input}\"")
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       25 
27 
     | 
    
         
             
                  page = ::Wikipedia.find(input)
         
     | 
| 
       26 
28 
     | 
    
         
             
                  # It would be nice to figure out a way to provide page.content but the LLM token limit is an issue
         
     | 
| 
       27 
29 
     | 
    
         
             
                  page.summary
         
     | 
    
        data/lib/langchain.rb
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require "logger"
         
     | 
| 
       4 
4 
     | 
    
         
             
            require "pathname"
         
     | 
| 
      
 5 
     | 
    
         
            +
            require "colorize"
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            require_relative "./version"
         
     | 
| 
       7 
8 
     | 
    
         
             
            require_relative "./dependency_helper"
         
     | 
| 
         @@ -13,7 +14,7 @@ module Langchain 
     | 
|
| 
       13 
14 
     | 
    
         
             
                attr_reader :root
         
     | 
| 
       14 
15 
     | 
    
         
             
              end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              @logger ||= ::Logger.new($stdout, level: :warn, formatter: ->(severity, datetime, progname, msg) { "[LangChain.rb] #{msg}\n" })
         
     | 
| 
      
 17 
     | 
    
         
            +
              @logger ||= ::Logger.new($stdout, level: :warn, formatter: ->(severity, datetime, progname, msg) { "[LangChain.rb]".yellow + " #{msg}\n" })
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
       18 
19 
     | 
    
         
             
              @root = Pathname.new(__dir__)
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
         @@ -28,6 +29,7 @@ module Langchain 
     | 
|
| 
       28 
29 
     | 
    
         
             
              module Tool
         
     | 
| 
       29 
30 
     | 
    
         
             
                autoload :Base, "langchain/tool/base"
         
     | 
| 
       30 
31 
     | 
    
         
             
                autoload :Calculator, "langchain/tool/calculator"
         
     | 
| 
      
 32 
     | 
    
         
            +
                autoload :RubyCodeInterpreter, "langchain/tool/ruby_code_interpreter"
         
     | 
| 
       31 
33 
     | 
    
         
             
                autoload :SerpApi, "langchain/tool/serp_api"
         
     | 
| 
       32 
34 
     | 
    
         
             
                autoload :Wikipedia, "langchain/tool/wikipedia"
         
     | 
| 
       33 
35 
     | 
    
         
             
              end
         
     | 
    
        data/lib/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: langchainrb
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.4. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andrei Bondarev
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2023-06- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-06-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: tiktoken_ruby
         
     | 
| 
         @@ -24,6 +24,20 @@ dependencies: 
     | 
|
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: 0.0.5
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: colorize
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 0.8.1
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: 0.8.1
         
     | 
| 
       27 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
42 
     | 
    
         
             
              name: dotenv-rails
         
     | 
| 
       29 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -276,6 +290,20 @@ dependencies: 
     | 
|
| 
       276 
290 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       277 
291 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       278 
292 
     | 
    
         
             
                    version: 4.0.0
         
     | 
| 
      
 293 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 294 
     | 
    
         
            +
              name: safe_ruby
         
     | 
| 
      
 295 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 296 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 297 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 298 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 299 
     | 
    
         
            +
                    version: 1.0.4
         
     | 
| 
      
 300 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 301 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 302 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 303 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 304 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 305 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 306 
     | 
    
         
            +
                    version: 1.0.4
         
     | 
| 
       279 
307 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       280 
308 
     | 
    
         
             
              name: weaviate-ruby
         
     | 
| 
       281 
309 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -353,6 +381,7 @@ files: 
     | 
|
| 
       353 
381 
     | 
    
         
             
            - lib/langchain/prompt/prompt_template.rb
         
     | 
| 
       354 
382 
     | 
    
         
             
            - lib/langchain/tool/base.rb
         
     | 
| 
       355 
383 
     | 
    
         
             
            - lib/langchain/tool/calculator.rb
         
     | 
| 
      
 384 
     | 
    
         
            +
            - lib/langchain/tool/ruby_code_interpreter.rb
         
     | 
| 
       356 
385 
     | 
    
         
             
            - lib/langchain/tool/serp_api.rb
         
     | 
| 
       357 
386 
     | 
    
         
             
            - lib/langchain/tool/wikipedia.rb
         
     | 
| 
       358 
387 
     | 
    
         
             
            - lib/langchain/utils/token_length_validator.rb
         
     |