【新機能】LangChainでWolfram Alphaを扱えるエージェントを動かす!
LangChainでWolfram Alphaが使えるように!
1/12にLangChainのv0.0.60がリリースされました!
今回のアップデートでWolfram AlphaをToolとして持つエージェントの作成が可能になったので、早速お試し!
ちなみに…
Wolfram Alphaとは、Wolframが提供する質疑応答システムです。
高度な数学の計算が可能という特徴を持っています。
おそらく学生は皆さんWolframの恩恵を受けたことがあると思いますが(積分計算など)、
LangChainのToolとしてそれが扱えるようです。
つまり、エージェントにWolframを使わせることが出来るという訳ですね。
実装
今回は公式のドキュメントとnoetbookを参考にしました。
docs:https://langchain.readthedocs.io/en/latest/modules/utils/examples/wolfram_alpha.html
notebook:https://colab.research.google.com/drive/1AAyEdTz-Z6ShKvewbt1ZHUICqak0MiwR
まずはライブラリをインストールします。LangChainはv0.0.60!
!pip install openai wolframalpha langchain==0.0.60
続いて、インポートとAPIキーの設定。
Wolfram Alphaを使うには開発者アカウントの登録が必要です。ある程度までは無料で使えます。
今回はエージェントの機能をOpenAIのtext-davinci-003で扱います。
from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI
from langchain.chains.conversation.memory import ConversationBufferMemory
import os
os.environ["OPENAI_API_KEY"] = "your API key"
os.environ["WOLFRAM_ALPHA_APPID"] = "your API key"
エージェントを使うために必要なコンポーネントを定義します。
llm = OpenAI(temperature=0)
tools = load_tools(['wolfram-alpha'])
memory = ConversationBufferMemory(memory_key="chat_history")
agent = initialize_agent(tools, llm, agent="conversational-react-description", memory=memory, verbose=True)
以下のコードを実行すればエージェントが動き出します!
agent.run("x^8の不定積分の結果を教えて")
Thought: Do I need to use a tool? Yes
Action: Wolfram Alpha
Action Input: Integral of x^8
Observation: integral x^8 dx = x^9/9 + constant
Thought: Do I need to use a tool? No
AI: はい、x^8の不定積分の結果はx^9/9 + constantです。
上手く動いていますね。ちゃんと積分の計算をしてくれています。
Wolfram Alphaだと何が出来る?
どういった質問なら回答できるのか気になったので、少し調べてみました。
以下のような質問になら対応できるようですね、凄い。
agent.run("今日の東京の天気を教えて")
Thought: Do I need to use a tool? Yes
Action: Wolfram Alpha
Action Input: Tokyo weather
Observation: temperature | 48 °F (wind chill: 45 °F)
relative humidity | 43% (dew point: 27 °F)
wind speed | 8.1 mph
(38 minutes ago)
Thought: Do I need to use a tool? No
AI: 今日の東京の天気は、気温48°F(風圧45°F)、湿度43%(露点27°F)、風速8.1mphです。
なぜか華氏ですが、ちゃんと教えてくれました!
GPTのみでは最新の情報は得られないので役に立ちますね!
1か月あたり2000件までリクエスト出来るそうなので、Wolfram Alphaで得られる情報はこっちから得た方がSerpAPIと比較して経済合理的ですね。
計算能力(LLMMathChainとの比較)について
LangChainには既にLLMMathChainと呼ばれる、数学計算用のToolが用意されています。
(実際はGPT-3に計算させてるだけ)
それによる数学計算と、Wolframによる数学計算を比較してみました。
LLMMathChainは以下で定義
from langchain.chains import LLMMathChain
from langchain.agents import Tool
llm_math_chain = LLMMathChain(llm=llm)
tools = [
Tool(
name="Calculator",
func=llm_math_chain.run,
description="useful for when you need to answer questions about math",
return_direct=True
)
]
memory2 = ConversationBufferMemory(memory_key="chat_history")
agent2 = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True, memory=memory2)
今回はx^2 + 4x + 6 = 0
を解かせました。
答えは-2±i*√2
です。虚数が出てくる点がミソですね。
LLMMathChain(GPT3)の場合
I need to solve for x
Action: Calculator
Action Input: x^2 + 4x + 6 = 0
Observation: Answer: x = -2 or x = 3
嘘つくなー!
Wolfram Alphaを使った場合
Thought: Do I need to use a tool? Yes
Action: Wolfram Alpha
Action Input: solve x^2 + 4x + 6 = 0
Observation: x = -2 - i sqrt(2)
Thought: Do I need to use a tool? No
AI: x = -2 - i sqrt(2)ですね。
賢い(確信)
おわりに
今回はLangChainに新機能として実装されたWolfram Alphaとの連携を試してみました。
最新ニュースから数学計算まで、結構幅広く回答してくれます。
色々活用して皆さんの使い方を教えて下さい!
author:@k_another_wa(https://twitter.com/k_another_wa)
LLMやLangChain関係を勉強中です。
Discussion