LangChainの Wolfram Alpha 連携を試す
「LangChain」の「Wolfram Alpha」連携を試したので、まとめました。
前回
1. Wolfram Alpha
「Wolfram Alpha」は、Wolfram Researchが開発した質問応答システムです。事実についての質問に対し、構造化されたデータを使って計算し、直接答えを返すオンラインサービスになります。
2022年時点では日本語に対応しているのは数学関連のクエリのみですが、「5個のボールの並べ方は何通りあるか」「ニュートン法を使ってxcos x=0 を解く」などの質問に対して日本語で答えることができます。
具体的に、どのような質問ができるかは、以下を参照してください。
2. AppIDの取得
「Wolfram Alpha」のAPIを利用するには、AppIDが必要です。
(1) Wolfram Alpha API のサイトでアカウントを作成してログイン。
無料版では、1月2000件の非商用API呼び出が可能です。
(2) 「Get an AppID」ボタンを押す。
(3) 「Application name」と「Description」を記述し、「Get AppID」ボタンを押す。
「AppID」が表示されます。
3. Colabでの実行
Google Colabでの実行手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install langchain==0.0.60
!pip install openai
!pip install wolframalpha
(2) 環境変数の準備。
以下のコードの <OpenAI_APIのトークン> にはOpenAI APIのトークン、<Wolfram_AlphaのAppID> にはWalframAlphaのAppIDを指定します。
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトークン>"
os.environ["WOLFRAM_ALPHA_APPID"] = "<Walfram_AlphaのAppID>"
(3) WalframAlphaツールを持つエージェントの準備。
from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI
from langchain.chains.conversation.memory import ConversationBufferMemory
# エージェントの準備
agent = initialize_agent(
tools=load_tools(['wolfram-alpha']), # WalframAlpha
llm=OpenAI(temperature=0),
agent="conversational-react-description",
memory=ConversationBufferMemory(memory_key="chat_history"),
verbose=True
)
(4) 質問応答。
東京都と大阪の距離を聞いてみます。
agent.run("東京都と大阪の距離は?")
> Entering new AgentExecutor chain...
Thought: Do I need to use a tool? Yes
Action: Wolfram Alpha
Action Input: Distance between Tokyo and Osaka
Observation: 251.1 miles
Thought: Do I need to use a tool? No
AI: 東京都と大阪の距離は251.1マイルです。
> Finished chain.
'東京都と大阪の距離は251.1マイルです。
(5) 質問応答。
マイルではわからないので、キロで答えてもらいます。
agent.run("キロ単位で教えて")
> Entering new AgentExecutor chain...
Thought: Do I need to use a tool? Yes
Action: Wolfram Alpha
Action Input: Tokyo to Osaka distance in kilometers
Observation: 404.1 km (kilometers)
Thought: Do I need to use a tool? No
AI: 東京都と大阪の距離は404.1キロです。
> Finished chain.
'東京都と大阪の距離は404.1キロです。'
次回
この記事が気に入ったらサポートをしてみませんか?