langchainrb 0.11.0 → 0.11.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18814b2bd22af2484ef0358ad83b144a80d1d814e95dcae3bbfd36409d08487b
4
- data.tar.gz: ceac615304514e3a19e201b15af41fa0652c7fed8d81caf26bc643b4211b4e45
3
+ metadata.gz: 0d2eb76b006864583607672a93cd81a5c37b259a34a2760f7d686f8923b60b22
4
+ data.tar.gz: 4e307d737f9e519e68c6adb632ff863ca365907789183756fcabe7bf0a79df4f
5
5
  SHA512:
6
- metadata.gz: 5ac5b9e6e3e846ca56ef080b1329f88d136a1df652a882a3c4f80fccb1ef10a5d1e3649a23332715147bfc35e44ed541d32155e7d23e77483c49f2cf85090886
7
- data.tar.gz: 94f99281fdabaa37ebe0da64f231cf4c12fce588f97ea17dddd30f6800e8c4a914592a9e896ab2c7dcf7728582f05c4fc04482eb0b696391420d557f02ba57c9
6
+ metadata.gz: 757e6fd5733b0365eb5b4309589f8dfab8659f451a8f31e922c7ded5ca1d974ab6d6a9b8178aa773f2b812058ea51db2f1560d18215beb4364c15b953f57648d
7
+ data.tar.gz: 8c7ffe8b7f94c32a0e1afedff943871a097811266981e5cb0e3353b66f7eebdb387565f3d2292dda665d69dac2ad29584cad14c07c90b9c2def768ec93a403ea
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.11.2]
4
+ - New `Langchain::Assistant#clear_thread!` and `Langchain::Assistant#instructions=` methods
5
+
6
+ ## [0.11.1]
7
+ - Langchain::Tool::Vectorsearch that wraps Langchain::Vectorsearch::* classes. This allows the Assistant to call the tool and inject data from vector DBs.
8
+
3
9
  ## [0.11.0]
4
10
  - Delete previously deprecated `Langchain::Agent::ReActAgent` and `Langchain::Agent::SQLQueryAgent` classes
5
11
  - New `Langchain::Agent::FileSystem` tool that can read files, write to files, and list the contents of a directory
@@ -125,12 +125,36 @@ module Langchain
125
125
  add_message(role: "tool", content: output, tool_call_id: tool_call_id)
126
126
  end
127
127
 
128
+ # Delete all messages in the thread
129
+ #
130
+ # @return [Array] Empty messages array
131
+ def clear_thread!
132
+ thread.messages = []
133
+ end
134
+
135
+ # Set new instructions
136
+ #
137
+ # @param [String] New instructions that will be set as a system message
138
+ # @return [Array<Langchain::Message>] The messages in the thread
139
+ def instructions=(new_instructions)
140
+ @instructions = new_instructions
141
+
142
+ # Find message with role: "system" in thread.messages and delete it from the thread.messages array
143
+ thread.messages.delete_if(&:system?)
144
+
145
+ # Set new instructions by adding new system message
146
+ message = build_message(role: "system", content: new_instructions)
147
+ thread.messages.unshift(message)
148
+ end
149
+
128
150
  private
129
151
 
130
152
  # Call to the LLM#chat() method
131
153
  #
132
154
  # @return [Langchain::LLM::BaseResponse] The LLM response object
133
155
  def chat_with_llm
156
+ Langchain.logger.info("Sending a call to #{llm.class}", for: self.class)
157
+
134
158
  params = {messages: thread.openai_messages}
135
159
 
136
160
  if tools.any?
@@ -54,7 +54,7 @@ module Langchain::LLM
54
54
  model: defaults[:embeddings_model_name],
55
55
  encoding_format: nil,
56
56
  user: nil,
57
- dimensions: nil
57
+ dimensions: @defaults[:dimensions]
58
58
  )
59
59
  raise ArgumentError.new("text argument is required") if text.empty?
60
60
  raise ArgumentError.new("model argument is required") if model.empty?
@@ -185,7 +185,7 @@ module Langchain::LLM
185
185
  end
186
186
 
187
187
  def default_dimension
188
- @defaults[:dimension] || EMBEDDING_SIZES.fetch(defaults[:embeddings_model_name])
188
+ @defaults[:dimensions] || EMBEDDING_SIZES.fetch(defaults[:embeddings_model_name])
189
189
  end
190
190
 
191
191
  private
@@ -0,0 +1,24 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "function": {
5
+ "name": "vectorsearch-similarity_search",
6
+ "description": "Vectorsearch: Retrieves relevant document for the query",
7
+ "parameters": {
8
+ "type": "object",
9
+ "properties": {
10
+ "query": {
11
+ "type": "string",
12
+ "description": "Query to find similar documents for"
13
+ },
14
+ "k": {
15
+ "type": "integer",
16
+ "description": "Number of similar documents to retrieve",
17
+ "default": 4
18
+ }
19
+ },
20
+ "required": ["query"]
21
+ }
22
+ }
23
+ }
24
+ ]
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Langchain::Tool
4
+ class Vectorsearch < Base
5
+ #
6
+ # A tool wraps vectorsearch classes
7
+ #
8
+ # Usage:
9
+ # # Initialize the LLM that will be used to generate embeddings
10
+ # ollama = Langchain::LLM::Ollama.new(url: ENV["OLLAMA_URL"]
11
+ # chroma = Langchain::Vectorsearch::Chroma.new(url: ENV["CHROMA_URL"], index_name: "my_index", llm: ollama)
12
+ #
13
+ # # This tool can now be used by the Assistant
14
+ # vectorsearch_tool = Langchain::Tool::Vectorsearch.new(vectorsearch: chroma)
15
+ #
16
+ NAME = "vectorsearch"
17
+ ANNOTATIONS_PATH = Langchain.root.join("./langchain/tool/#{NAME}/#{NAME}.json").to_path
18
+
19
+ attr_reader :vectorsearch
20
+
21
+ # Initializes the Vectorsearch tool
22
+ #
23
+ # @param vectorsearch [Langchain::Vectorsearch::Base] Vectorsearch instance to use
24
+ def initialize(vectorsearch:)
25
+ @vectorsearch = vectorsearch
26
+ end
27
+
28
+ # Executes the vector search and returns the results
29
+ #
30
+ # @param query [String] The query to search for
31
+ # @param k [Integer] The number of results to return
32
+ def similarity_search(query:, k: 4)
33
+ vectorsearch.similarity_search(query:, k: 4)
34
+ end
35
+ end
36
+ end
@@ -86,6 +86,10 @@ module Langchain::Vectorsearch
86
86
  client.search_knn(embedding, k)
87
87
  end
88
88
 
89
+ # TODO: Add the ask() method
90
+ # def ask
91
+ # end
92
+
89
93
  private
90
94
 
91
95
  #
@@ -9,7 +9,7 @@ module Langchain::Vectorsearch
9
9
  # gem "weaviate-ruby", "~> 0.8.9"
10
10
  #
11
11
  # Usage:
12
- # weaviate = Langchain::Vectorsearch::Weaviate.new(url:, api_key:, index_name:, llm:)
12
+ # weaviate = Langchain::Vectorsearch::Weaviate.new(url: ENV["WEAVIATE_URL"], api_key: ENV["WEAVIATE_API_KEY"], index_name: "Docs", llm: llm)
13
13
  #
14
14
 
15
15
  # Initialize the Weaviate adapter
@@ -71,6 +71,22 @@ module Langchain::Vectorsearch
71
71
  end
72
72
  end
73
73
 
74
+ # Deletes a list of texts in the index
75
+ # @param ids [Array] The ids of texts to delete
76
+ # @return [Hash] The response from the server
77
+ def remove_texts(ids:)
78
+ raise ArgumentError, "ids must be an array" unless ids.is_a?(Array)
79
+
80
+ client.objects.batch_delete(
81
+ class_name: index_name,
82
+ where: {
83
+ path: ["__id"],
84
+ operator: "ContainsAny",
85
+ valueTextArray: ids
86
+ }
87
+ )
88
+ end
89
+
74
90
  # Create default schema
75
91
  # @return [Hash] The response from the server
76
92
  def create_default_schema
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Langchain
4
- VERSION = "0.11.0"
4
+ VERSION = "0.11.2"
5
5
  end
data/lib/langchain.rb CHANGED
@@ -31,6 +31,7 @@ loader.collapse("#{__dir__}/langchain/tool/database")
31
31
  loader.collapse("#{__dir__}/langchain/tool/file_system")
32
32
  loader.collapse("#{__dir__}/langchain/tool/google_search")
33
33
  loader.collapse("#{__dir__}/langchain/tool/ruby_code_interpreter")
34
+ loader.collapse("#{__dir__}/langchain/tool/vectorsearch")
34
35
  loader.collapse("#{__dir__}/langchain/tool/weather")
35
36
  loader.collapse("#{__dir__}/langchain/tool/wikipedia")
36
37
 
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.11.0
4
+ version: 0.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Bondarev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-05 00:00:00.000000000 Z
11
+ date: 2024-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -776,6 +776,8 @@ files:
776
776
  - lib/langchain/tool/google_search/google_search.rb
777
777
  - lib/langchain/tool/ruby_code_interpreter/ruby_code_interpreter.json
778
778
  - lib/langchain/tool/ruby_code_interpreter/ruby_code_interpreter.rb
779
+ - lib/langchain/tool/vectorsearch/vectorsearch.json
780
+ - lib/langchain/tool/vectorsearch/vectorsearch.rb
779
781
  - lib/langchain/tool/weather/weather.json
780
782
  - lib/langchain/tool/weather/weather.rb
781
783
  - lib/langchain/tool/wikipedia/wikipedia.json