見出し画像

LangChainの新機能🦜🕸️LangGraphを試す

概要

#LangGraph は、LangChainの上に構築されたライブラリで、LLMを用いた状態を持つ、複数のアクターを含むアプリケーションの構築を可能にします。このライブラリはLangChain Expression Languageを拡張し、複数の計算ステップにわたって複数のチェーン(アクター)を循環的に調整する能力を持っています。このアプローチはPregelやApache Beamに触発されており、現在のインターフェースはNetworkXにインスパイアされたものです。

LangGraphの主な用途は、LLMアプリケーションに「サイクル」を追加することです。ここで重要なのは、LangGraphはDAG(有向非巡回グラフ)フレームワークではないという点です。DAGを構築したい場合はLangChain Expression Languageを使用するべきです。

サイクルは、エージェントのような振る舞いにおいて重要で、LLMをループ内で呼び出し、次に取るべきアクションを尋ねるプロセスに不可欠です。これにより、アプリケーションはより複雑でインタラクティブなタスクを効率的に処理することが可能になります。

実行

Quick Start

LangChainのドキュメントよりQuick Startを試すことが可能です。

実行結果

最もシンプルなデモとして東京の天気を尋ねてみました。

{'input': 'what is the weather in Tokyo',
 'intermediate_steps': [(AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': 'weather in Tokyo'}, log="\nInvoking: `tavily_search_results_json` with `{'query': 'weather in Tokyo'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"query":"weather in Tokyo"}', 'name': 'tavily_search_results_json'}})]),
   [{'url': 'https://weatherspark.com/h/m/143809/2024/1/Historical-Weather-in-January-2024-in-Tokyo-Japan',
     'content': 'January 2024 Weather History in Tokyo Japan  Cloud Cover in January 2024 in Tokyo Observed Weather in January 2024 in Tokyo  Humidity Comfort Levels in January 2024 in Tokyo Wind Speed in January 2024 in Tokyo  Tokyo Temperature History January 2024 Hourly Temperature in January 2024 in Tokyo Compare Tokyo to another city:January 2024 Weather History in Tokyo Japan The data for this report comes from the Tokyo International Airport. See all nearby weather stations Latest Report — 9:00 PM Wed, Jan 3, 2024 25 min ago UTC 12:00 Call Sign RJTT Temp. 50 °F cold Precipitation No Report Wind 3.5 mph light air Wind Dir. 160 deg, SSE Cloud Cover Overcast 9,000 ft'}])],
 'agent_outcome': AgentFinish(return_values={'output': 'The current weather in Tokyo is as follows:\n- Temperature: 50 °F\n- Wind: 3.5 mph, coming from the SSE direction\n- Cloud Cover: Overcast at 9,000 ft\n\nFor more detailed historical weather information, you can visit this [link](https://weatherspark.com/h/m/143809/2024/1/Historical-Weather-in-January-2024-in-Tokyo-Japan).'}, log='The current weather in Tokyo is as follows:\n- Temperature: 50 °F\n- Wind: 3.5 mph, coming from the SSE direction\n- Cloud Cover: Overcast at 9,000 ft\n\nFor more detailed historical weather information, you can visit this [link](https://weatherspark.com/h/m/143809/2024/1/Historical-Weather-in-January-2024-in-Tokyo-Japan).')}

ここでのプロセスは以下のように展開されています:

  1. 入力クエリ

    • 'input': 'what is the weather in Tokyo'

    • この入力は、東京の天気に関する情報を求めるユーザーのクエリです。

  2. 中間ステップ ('intermediate_steps'):

    • ここには、エージェントが実行したアクションとその結果が含まれています。

    • エージェントはtavily_search_results_jsonというツールを使用して、'weather in Tokyo'というクエリで天気情報を検索しています。

    • 検索結果は、2024年1月の東京の天気に関する詳細な情報を含むウェブサイトへのリンク('url': 'https://weatherspark.com/h/m/143809/2024/1/Historical-Weather-in-January-2024-in-Tokyo-Japan')と、そのページの内容の要約を含んでいます。この内容には、温度、風速、風向き、雲のカバーなどの情報が含まれています。

  3. エージェントの結果 ('agent_outcome'):

    • AgentFinishは、エージェントの処理が完了し、最終的な出力が生成されたことを示しています。

    • エージェントは最終的な出力として、東京の現在の天気状況(温度、風速、風向、雲のカバー)を提供し、さらに詳細な歴史的天気情報を提供するリンクを含んでいます。

この実行結果は、LangGraphを用いて複雑な情報検索タスクを効率的に実行し、ユーザーのクエリに対して関連する情報を提供するプロセスの一例として理解できます。エージェントはユーザーの入力に基づいて適切なツールを呼び出し、必要な情報を取得して処理し、最終的な結果をユーザーに提示します。

もう少し複雑な例として、複数のデータソースを検索して、集約、比較とマルチステップで実行する必要があるタスクを試すため以下のクエリを実行しました。
「最近5年間の東京とニューヨークの平均気温と降水量を比較するためのデータを集めてください。各年のデータを集約し、それぞれの都市の気候の違いを分析して、簡潔な報告を作成してください。」

{'input': '最近5年間の東京とニューヨークの平均気温と降水量を比較するためのデータを集めてください。各年のデータを集約し、それぞれの都市の気候の違いを分析して、簡潔な報告を作成してください。',
 'intermediate_steps': [(AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': '東京 平均気温 5年間データ'}, log="\nInvoking: `tavily_search_results_json` with `{'query': '東京 平均気温 5年間データ'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"query":"東京 平均気温 5年間データ"}', 'name': 'tavily_search_results_json'}})]),
   [{'url': 'https://ja.weatherspark.com/y/143809/東京都、日本における年間の平均的な気候',
     'content': '東京都における平均最高・最低気温 以下の数字は、1 年を通した時間ごとの平均気温の特徴を 1 目でわかるように表示しています。 横軸は日付で、縦軸は時刻、そして色はその日と時刻の平均気温です。 東京都の 1 時間ごとの平均気温  東京都 における年間の気候および平均気象 日本  東京都の平均水温 1 年のうち訪問に最適な時期 1 年を通して東京都の気候がいかに快適であるかを特徴づけるため、2 つの旅行点数を計算しました。  東京都 における平均気温 暑い季節は、6月26日から 9月17日まで 2.7 か月続き、1 日平均の最高気温は 26°C を超えます。 東京都 における 1 年の最も暑い月は 8月で、平均最高気温は 30°C、最低気温は 24°C です。極寒で -9°C 凍えそうに寒く 0°C 非常に寒く 7°C 寒く 13°C 涼しく 18°C 快適で 24°C 暖かく 29°C 暑く 35°C うだるように暑く 毎時の報告された、帯に色分けされた平均気温。 影付きのオーバーレイは、夜間および市民薄明を示しています。'}]),
  (AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': '東京 降水量 5年間データ'}, log="\nInvoking: `tavily_search_results_json` with `{'query': '東京 降水量 5年間データ'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"query":"東京 降水量 5年間データ"}', 'name': 'tavily_search_results_json'}})]),
   [{'url': 'https://graphtochart.com/japan/tokyo-yearly-precipitation.php',
     'content': '2021年の総務省による統計ダッシュボード調査が最新のデータ(2023年4月1日確認) 2024年の統計データは発表され次第即時反映させて頂きます。 東京都の降水量(年間)推移グラフ(1975年~現在)  また、下記は1975~2021年までの東京都の降水量(年間)の推移を一覧表にしたものです。※表が画面幅を越えている場合は横スクロール可能  東京都の降水量(年間)はどのくらい? 東京都の降水量(年間)は、2,053(mm)です。(2021年調査) ※Source:総務省による統計ダッシュボード 詳細  ↓こちらは、上記の東京都の降水量(年間)グラフの全体図です。 このグラフ画像をシェア・保存する※Source:総務省による統計ダッシュボード 詳細東京都の2024年に分かる最新の降水量(年間)は2,053(mm)。日本全国(都道府県別)で17番目に多いです。東京都の降水量(年間)推移グラフや人口が近い神奈川県(神奈川県)との比較表データはcsv出力・無料ダウンロード可能。保存後EXCEL使用可能'}]),
  (AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': 'ニューヨーク 平均気温 5年間データ'}, log="\nInvoking: `tavily_search_results_json` with `{'query': 'ニューヨーク 平均気温 5年間データ'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"query":"ニューヨーク 平均気温 5年間データ"}', 'name': 'tavily_search_results_json'}})]),
   [{'url': 'https://ja.climate-data.org/北アメリカ/アメリカ合衆国/ニューヨーク州/ニューヨーク-1091/',
     'content': '雨温図 ニューヨーク Data: 1991 - 2021 平均低温 (°C), 平均高温 (°C), 降水量, 湿度, 雨の日. Data: 1999 - 2019: 日照時間  ニューヨークでは、年間を通じて約 2912.72 時間の日照が数えられます。 平均して、月に 95.71 時間の日照があります。 水温 ニューヨーク(大西洋)  気温グラフ ニューヨーク 一番温かい月の気温は24.5 °Cまで達します。 年間最低気温を記録するのは1月です。-1.0 °Cと寒いです。 雨温図 ニューヨーク  水温 ニューヨーク(大西洋) 平均して、%city%(%ocean_name%)の水温は1年で%wt_annual%に達します。< > Data: 1991 - 2021 平均低温 (°C), 平均高温 (°C), 降水量, 湿度, 雨の日. Data: 1999 - 2019: 日照時間 最低降水量月と最高降水量月の降水量の差は30 mmです。 年間平均気温は25.4 °Cの差があります。 気候表を読むためのヒント:毎月、降水量(mm)、平均気温、最高気温、最低気温(摂氏と華氏)に関するデータがあります。 最初の行の意味:1月、2月、3月、4月、4月、5月、6月、7月、8月、9月、9月 、(10)10月、(11)11月、(12)12月。 相対湿度の最低値は2月 (63.56 %)に測定されます。'}]),
  (AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': 'ニューヨーク 降水量 5年間データ'}, log="\nInvoking: `tavily_search_results_json` with `{'query': 'ニューヨーク 降水量 5年間データ'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"query":"ニューヨーク 降水量 5年間データ"}', 'name': 'tavily_search_results_json'}})]),
   [{'url': 'https://graphtochart.com/environment/united-states-of-america-average-precipitation-in-depth.php',
     'content': '2024年の統計データは発表され次第即時反映 アメリカ合衆国の平均降水雨量推移グラフ(1962年~現在) では、現在のアメリカ合衆国の平均降水雨量の「715(mm/年)」は、過去と比べてどう変化してきているのでしょうか?  アメリカ合衆国の平均降水雨量の1962~2014年までの推移をグラフに表してみます。 ※こちらは、1962~2014年までの推移を年ごとに動くグラフとして作成したものです。総人口とも比較可能です。  上記のアメリカ合衆国の平均降水雨量の推移グラフを見てみると、1962~2014年までのデータが全て同じ結果となっており、変化がないことが分かります。  ※アメリカ合衆国の平均降水雨量の推移(1962~2014年)データの無料ダウンロードはこちらから↓ csv出力(ダウンロード) (EXCELでも開けます) ※【データ内容】1行目:年代,2行目:平均降水雨量平均降水雨量とは、その国の年間降水量の深さ(空間と時間)の1年間の平均値のことです。 ... 2024年の統計データは発表され次第即時反映 アメリカ合衆国の平均降水雨量推移グラフ(1962年~現在)'}])],
 'agent_outcome': AgentFinish(return_values={'output': 'データ収集結果を元に、東京とニューヨークの平均気温と降水量の比較を行います。\n\n東京の平均気温は夏に最も高く、8月の平均最高気温は30°C、最低気温は24°Cです。一方、ニューヨークの夏の平均最高気温は24.5°Cです。東京の方が夏の気温が高いことがわかります。\n\n東京の年間降水量は2,053(mm)であり、ニューヨークは年間715(mm)の降水量です。東京の方が降水量が多いことがわかります。\n\nこれらのデータから、東京の方が夏の気温が高く、年間降水量も多いことがわかります。また、ニューヨークの方が気温差が少なく、年間降水量が少ないことがわかります。\n\nこの情報を元に、各都市の気候の違いを分析した簡潔な報告を作成しました。'}, log='データ収集結果を元に、東京とニューヨークの平均気温と降水量の比較を行います。\n\n東京の平均気温は夏に最も高く、8月の平均最高気温は30°C、最低気温は24°Cです。一方、ニューヨークの夏の平均最高気温は24.5°Cです。東京の方が夏の気温が高いことがわかります。\n\n東京の年間降水量は2,053(mm)であり、ニューヨークは年間715(mm)の降水量です。東京の方が降水量が多いことがわかります。\n\nこれらのデータから、東京の方が夏の気温が高く、年間降水量も多いことがわかります。また、ニューヨークの方が気温差が少なく、年間降水量が少ないことがわかります。\n\nこの情報を元に、各都市の気候の違いを分析した簡潔な報告を作成しました。')}

先ほどと同様にこの実行結果プロセスを確認します。

  1. 入力クエリ:

    • 'input': '最近5年間の東京とニューヨークの平均気温と降水量を比較するためのデータを集めてください。'

    • このクエリは、東京とニューヨークの気候データの比較を要求しています。

  2. 中間ステップ ('intermediate_steps'):

    • この部分には、様々なデータソースからの気温と降水量の情報が含まれています。

    • 東京の平均気温と降水量に関する情報がtavily_search_results_jsonツールを用いて検索され、関連するウェブサイトのURLと内容の要約が提供されています。

    • 同様に、ニューヨークの平均気温と降水量に関する情報も検索され、関連するウェブサイトのURLと内容の要約が提供されています。

  3. エージェントの結果 ('agent_outcome'):

    • AgentFinishは、エージェントがデータ収集を完了し、最終的な出力を生成したことを示しています。

    • エージェントは、収集したデータを基に東京とニューヨークの気候の違いを分析し、その結果を報告しています。この報告には、東京の夏の気温が高く、降水量も多いこと、一方でニューヨークは気温差が少なく、降水量が少ないことが示されています。

この実行結果から、エージェントは複数のデータソースからの情報を効率的に収集し、それらを比較・分析して、両都市の気候の違いに関する簡潔な報告を作成することができることが分かります。

この記事が気に入ったらサポートをしてみませんか?