langchainrb 2

ruby
ai
code
llm
Author

geeknees

Published

August 8, 2023

require 'bundler/setup'
require "langchain"

thread = Langchain::Thread.new
assistant = Langchain::Assistant.new(
  Langchain::LLM::OpenAI.new(ENV["OPENAI_API_KEY"]),
  thread,
  [
    Langchain::Tool::GoogleSearch.new(ENV["SERPAPI_API_KEY"]),
    Langchain::Tool::Calculator.new
    ]
)

assistant.add_message_and_run("How many full soccer fields would be needed to cover the distance between NYC and DC in a straight line?", true)
assistant.thread.messages.last.content
I, [2024-04-25T23:01:57.152109 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:01:58.476055 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::GoogleSearch]: Executing "distance between NYC and DC in miles"
I, [2024-04-25T23:01:58.670410 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:03.179314 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::GoogleSearch]: Executing "coordinates of New York City"
I, [2024-04-25T23:02:03.302254 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::GoogleSearch]: Executing "coordinates of Washington D.C."
I, [2024-04-25T23:02:03.406316 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:05.226543 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::GoogleSearch]: Executing "distance between 40.7128° N, 74.0060° W and 38.9072° N, 77.0369° W"
I, [2024-04-25T23:02:05.318653 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:07.928577 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Calculator]: Executing "203 miles * 1760 yards/mile / 100 yards"
I, [2024-04-25T23:02:07.931278 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:10.167832 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Calculator]: Executing "203 miles * 1760 yards / 100 yards"
I, [2024-04-25T23:02:10.176856 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:12.046014 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Calculator]: Executing "203 miles * 1760 yards / 100"
I, [2024-04-25T23:02:12.046893 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:13.884682 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Calculator]: Executing "203 miles * 1760 yards"
I, [2024-04-25T23:02:13.888773 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
"The distance between New York City and Washington D.C. is approximately 203 miles. To cover this distance in a straight line with soccer fields, we would need approximately 356 soccer fields."
thread = Langchain::Thread.new

assistant = Langchain::Assistant.new(
  Langchain::LLM::OpenAI.new(ENV["OPENAI_API_KEY"]),
  thread,
  [
    Langchain::Tool::GoogleSearch.new(ENV["SERPAPI_API_KEY"]),
    Langchain::Tool::Calculator.new,
    # Langchain::Tool::RubyCodeInterpreter.new,
    Langchain::Tool::Weather.new(ENV["OPEN_WEATHER_API_KEY"]),
    Langchain::Tool::Wikipedia.new
    ]
)

assistant.add_message_and_run( "明日の東京の天気は?", true)
assistant.thread.messages.last.content
I, [2024-04-25T23:02:15.479595 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:16.331624 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Weather]: Executing for "Tokyo, Japan"
I, [2024-04-25T23:02:16.869189 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
"明日の東京の天気は、気温が約29.3度で、湿度は73%です。"
assistant.add_message_and_run( "聖徳太子の生涯について要約して", true)
assistant.thread.messages.last.content
I, [2024-04-25T23:02:18.137505 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:19.030074 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Wikipedia]: Executing "Prince Shotoku"
I, [2024-04-25T23:02:20.475130 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
"聖徳太子(Shōtoku Taishi)は、日本の飛鳥時代に活躍した半伝説的な摂政であり、推古天皇の下で政治家として奉仕しました。彼は、推古天皇とその妃である穴穂部間人皇女の間に生まれました。彼は日本の政府行政の近代化や仏教の普及を推進したことで知られています。また、彼の周りには、日本や皇室、仏教の保護のために聖徳太子を崇拝する信仰が生まれました。"
assistant.add_message_and_run( "rubyでランダムな数字の配列を作ってください", true)
assistant.thread.messages.last.content
I, [2024-04-25T23:02:25.367592 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
I, [2024-04-25T23:02:26.394224 #28323]  INFO -- : [Langchain.rb] [Langchain::Tool::Calculator]: Executing "Array.new(5) { rand(1..10) }"
I, [2024-04-25T23:02:26.398501 #28323]  INFO -- : [Langchain.rb] [Langchain::Assistant]: Sending a call to Langchain::LLM::OpenAI
"申し訳ありません、計算機で直接ランダムな数字の配列を生成することはできません。代わりに、Rubyのコードを使用してランダムな数字の配列を生成する方法を示します。\n\n```ruby\n# ランダムな数字の配列を生成する\nrandom_array = Array.new(5) { rand(1..10) }\nputs random_array\n```\n\nこのRubyコードを実行すると、5つの要素からなるランダムな数字の配列が生成されます。"