langchainrb 0.14.0 → 0.15.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -2
- data/lib/langchain/assistants/assistant.rb +175 -131
- data/lib/langchain/assistants/messages/ollama_message.rb +9 -21
- data/lib/langchain/contextual_logger.rb +11 -5
- data/lib/langchain/evals/ragas/faithfulness.rb +5 -1
- data/lib/langchain/llm/google_gemini.rb +1 -1
- data/lib/langchain/llm/ollama.rb +23 -17
- data/lib/langchain/llm/openai.rb +1 -1
- data/lib/langchain/llm/response/ollama_response.rb +1 -15
- data/lib/langchain/llm/unified_parameters.rb +2 -2
- data/lib/langchain/tool/calculator.rb +38 -0
- data/lib/langchain/tool/{database/database.rb → database.rb} +24 -12
- data/lib/langchain/tool/file_system.rb +44 -0
- data/lib/langchain/tool/{google_search/google_search.rb → google_search.rb} +17 -23
- data/lib/langchain/tool/{news_retriever/news_retriever.rb → news_retriever.rb} +41 -14
- data/lib/langchain/tool/ruby_code_interpreter.rb +41 -0
- data/lib/langchain/tool/{tavily/tavily.rb → tavily.rb} +24 -10
- data/lib/langchain/tool/vectorsearch.rb +40 -0
- data/lib/langchain/tool/weather.rb +109 -0
- data/lib/langchain/tool/{wikipedia/wikipedia.rb → wikipedia.rb} +17 -13
- data/lib/langchain/tool_definition.rb +212 -0
- data/lib/langchain/utils/colorizer.rb +19 -0
- data/lib/langchain/utils/hash_transformer.rb +9 -17
- data/lib/langchain/utils/to_boolean.rb +27 -0
- data/lib/langchain/vectorsearch/chroma.rb +2 -2
- data/lib/langchain/vectorsearch/elasticsearch.rb +2 -2
- data/lib/langchain/vectorsearch/epsilla.rb +3 -3
- data/lib/langchain/vectorsearch/milvus.rb +2 -2
- data/lib/langchain/vectorsearch/pgvector.rb +2 -2
- data/lib/langchain/vectorsearch/pinecone.rb +2 -2
- data/lib/langchain/vectorsearch/qdrant.rb +2 -2
- data/lib/langchain/vectorsearch/weaviate.rb +4 -4
- data/lib/langchain/version.rb +1 -1
- data/lib/langchain.rb +1 -2
- metadata +18 -54
- data/lib/langchain/tool/base.rb +0 -107
- data/lib/langchain/tool/calculator/calculator.json +0 -19
- data/lib/langchain/tool/calculator/calculator.rb +0 -34
- data/lib/langchain/tool/database/database.json +0 -46
- data/lib/langchain/tool/file_system/file_system.json +0 -57
- data/lib/langchain/tool/file_system/file_system.rb +0 -32
- data/lib/langchain/tool/google_search/google_search.json +0 -19
- data/lib/langchain/tool/news_retriever/news_retriever.json +0 -122
- data/lib/langchain/tool/ruby_code_interpreter/ruby_code_interpreter.json +0 -19
- data/lib/langchain/tool/ruby_code_interpreter/ruby_code_interpreter.rb +0 -37
- data/lib/langchain/tool/tavily/tavily.json +0 -54
- data/lib/langchain/tool/vectorsearch/vectorsearch.json +0 -24
- data/lib/langchain/tool/vectorsearch/vectorsearch.rb +0 -36
- data/lib/langchain/tool/weather/weather.json +0 -19
- data/lib/langchain/tool/weather/weather.rb +0 -55
- data/lib/langchain/tool/wikipedia/wikipedia.json +0 -19
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Langchain::Tool
|
4
|
-
class Weather < Base
|
5
|
-
#
|
6
|
-
# A weather tool that gets current weather data
|
7
|
-
#
|
8
|
-
# Current weather data is free for 1000 calls per day (https://home.openweathermap.org/api_keys)
|
9
|
-
# Forecast and historical data require registration with credit card, so not supported yet.
|
10
|
-
#
|
11
|
-
# Gem requirements:
|
12
|
-
# gem "open-weather-ruby-client", "~> 0.3.0"
|
13
|
-
# api_key: https://home.openweathermap.org/api_keys
|
14
|
-
#
|
15
|
-
# Usage:
|
16
|
-
# weather = Langchain::Tool::Weather.new(api_key: ENV["OPEN_WEATHER_API_KEY"])
|
17
|
-
# weather.execute(input: "Boston, MA; imperial")
|
18
|
-
#
|
19
|
-
NAME = "weather"
|
20
|
-
ANNOTATIONS_PATH = Langchain.root.join("./langchain/tool/#{NAME}/#{NAME}.json").to_path
|
21
|
-
|
22
|
-
attr_reader :client, :units
|
23
|
-
|
24
|
-
# Initializes the Weather tool
|
25
|
-
#
|
26
|
-
# @param api_key [String] Open Weather API key
|
27
|
-
# @return [Langchain::Tool::Weather] Weather tool
|
28
|
-
def initialize(api_key:, units: "metric")
|
29
|
-
depends_on "open-weather-ruby-client"
|
30
|
-
require "open-weather-ruby-client"
|
31
|
-
|
32
|
-
OpenWeather::Client.configure do |config|
|
33
|
-
config.api_key = api_key
|
34
|
-
config.user_agent = "Langchainrb Ruby Client"
|
35
|
-
end
|
36
|
-
|
37
|
-
@client = OpenWeather::Client.new
|
38
|
-
end
|
39
|
-
|
40
|
-
# Returns current weather for a city
|
41
|
-
#
|
42
|
-
# @param input [String] comma separated city and unit (optional: imperial, metric, or standard)
|
43
|
-
# @return [String] Answer
|
44
|
-
def execute(input:)
|
45
|
-
Langchain.logger.info("Executing for \"#{input}\"", for: self.class)
|
46
|
-
|
47
|
-
input_array = input.split(";")
|
48
|
-
city, units = *input_array.map(&:strip)
|
49
|
-
|
50
|
-
data = client.current_weather(city: city, units: units)
|
51
|
-
weather = data.main.map { |key, value| "#{key} #{value}" }.join(", ")
|
52
|
-
"The current weather in #{data.name} is #{weather}"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"type": "function",
|
4
|
-
"function": {
|
5
|
-
"name": "wikipedia__execute",
|
6
|
-
"description": "Executes Wikipedia API search and returns the answer",
|
7
|
-
"parameters": {
|
8
|
-
"type": "object",
|
9
|
-
"properties": {
|
10
|
-
"input": {
|
11
|
-
"type": "string",
|
12
|
-
"description": "search query"
|
13
|
-
}
|
14
|
-
},
|
15
|
-
"required": ["input"]
|
16
|
-
}
|
17
|
-
}
|
18
|
-
}
|
19
|
-
]
|