🙄

Langflowを使ってみた ~arXivから論文引っ張ってこよう編~

に公開

今回はノーコードでGUIベースでLangChainのフローを実装できるLangflowを使って、arXivから論文のリコメンドを提供してくれるRAGを作ってみようと思います。

LangFlowとは?

Langflowとは、AIエージェントやワークフローをさまざまな用意済みAPIを利用して構築することができるノーコードツールです。とてもわかりやすいGUIで提供されており、かつセルフホストで利用できるという点もとてもいい機能だと思います。また、ドキュメントも豊富に用意されているため、利用開始時もハードルが低いと思います。

https://www.langflow.org/

今回作ってみるもの

今回は最初にも言及したように、ユーザが指定したキーワードについてarXivで論文を検索し、その中から指定した個数をリコメンドしてくれるフローを組んでみたいと思います。ちなみにarXivとはオンラインで利用できるさまざまな論文がアップロードされているサイトです。

https://arxiv.org/

なお、以下を条件に作ってみようと思います。

  • タイトルに対して検索キーワードを適用し、arXivから50個の論文を検索してくる
  • gpt-4oを利用して、100個の中からおすすめの5つを決めてもらう
  • その5つの論文について概要などを要約してもらう

環境の準備

OpenAIのAPIキーの作成

今回のデモではOpenAIのAPIを用いてAgentを作成します。具体的な作成方法は省略しますが、各自OpenAIのAPIキーをご用意ください。なお、LangFlowではOpenAIだけでなくNVIDIAなどさまざまなプロバイダーからのLLMの利用が準備されていますので、試してみたい方は他のプロバイダーもご検討ください。

Langflowサーバの構築

今回はローカルPC(macbook)上にDockerを利用してLangFlowサーバを立てます。具体的な構築方法は公式ドキュメントを参照してください。

https://docs.langflow.org/deployment-docker

フローの作成

キャンバスの表示

ここからはLangFlowサーバが立ち上がっている前提で話を進めさせてもらいます。

LangFlowサーバにアクセスすると以下のようなホーム画面が表示されます。

今回はNew Flowを選択し、右下の+ Blank Flowを選択してください。すると、今のような画面が表示されます。こちらの画面がワークフローを作成するためのキャンバスになります。

コンポーネントの配置

それでは、左のツール一覧から必要なコンポーネントを選択しましょう。基本的にはほしい機能を検索し、ドラッグ&ドロップでキャンバス上に配置します。今回は以下のコンポーネントをそれぞれ一つずつ利用します。左上の検索ウィンドウにこれらのアイテムを入力すると表示できますので、キャンバス上に配置してください。

  • Chat Input:ユーザからのチャット入力を受け取る
  • Chat Output:Agentの出力をチャットに流す
  • Agent:LLMを指定してエージェントを構築する
  • arXiv:arXivのAPIとやり取りをする

配置は以下のようにしてもらうとグラフが綺麗になると思います。なお、arXivのコンポーネントについて、右上にTool Modeというオプションがあるのでチェックを入れておいてください。チェックをすることでツールとして利用することができるようになります。

次はノードを繋いでグラフを構築してみましょう。コンポーネントの左右に丸い部分があるかと思います。ここを選択するとエッジが表示され、他のコンポーネントの丸い部分に結合することができます。今回は以下のように接続してグラフを構築します。

  • Chat InputAgentのInput
  • arXivToolsetAgentTools
  • AgentResponseChat Output

接続が完了すると以下のような見た目になると思います。

コンポーネントの設定

次に各コンポーネントの設定をしてみましょう。

Chat InputChat Outputについては設定する必要はありません。

まずはarXivの設定をしてみましょう。今回設定する項目は以下の二つです。

  • Search Field:タイトルやアブストラクトなど、何に対して検索をかけるか
  • Max Results:最大何件検索結果を取得するか

Search Fieldについては今回はタイトルで検索をかけようと思いますので、設定をtitleにしてみます。Max Resultsについては最初に設定した条件に従って50件取得します。設定すると以下のようになるはずです。

次にAgentの設定をしてみましょう。いろいろと項目はありますが、今回は以下を設定します。

  • Model Provider:どのモデルプロバイダーを使用するか
  • Model Name:プロバイダーから提供されているモデルのうちどれを利用するか
  • OpenAI API Key:OpenAIのAPIキーを指定(こちらは使うプロバイダーが変わると名称が変わります)
  • Agent Instructions:AIエージェントにインストラクションを指定

まずModel Providerは今回はOpenAIを利用しますのでOpenAIを指定します。また、モデルはgpt-4oを設定します。APIキーについては事前準備いただいたものを指定してください。Agent InstructionsについてはYou're a skilled researcher of ML field. I'll give you a keyword. So, use arXiv API and recommend best 5 papers based on the search results of arXiv API.と指定してみます(著者がMLエンジニアなのでML系の結果で検索をかけます)。すると以下のようになるかと思います。

実際に使ってみよう

Langflowでは主に2つの使い方が可能です。一つはLangflow上でPlaygroundを表示してGUIベースでチャットを行う方法です。こちらは作ったものをその場でパパッと試してみたい時に使える機能ですね。二つ目はAPIとしてPublishするという機能があります。これを利用することでREST APIとして利用できるようになります。例えばGoogle CloudのCloud Run上にLangflowサーバをホスティングしてAPI公開すると、作ったワークフローを利用するAPIサーバとして公開することができる、といったユースケースがあると思います。

今回はPlayground方式で使ってみます。画面右上に以下のような部分があると思いますので。Playgroundを選択してください。

すると以下のように対話画面が表示されるはずです。この画面については詳細な説明は省きますが、ChatGPTとかを使ったことがある方であればお馴染みの画面ではないかと思います。

それでは実際に検索してみましょう。今回は試しに画像分類に関して新しいアルゴリズムがあるか調べてみたいのでnovel image classification algorithmsと入力してみました。実行すると以下のように検索結果が表示されました。試しに一番上のリンクを開いてみると、ちゃんと指定されたarXivのページに飛ぶことがわかります。

チャット履歴を見てもらうと、arXivAPIにアクセスしたことに関する履歴なども表示されており、エージェントがアクセスした情報も参照できることがわかります。

最後に

今回はLangflowを用いてarXivから論文を検索するシステムを作ってみました。実際に使ってもらうとかなり簡単にコーディングなしでAI Agentを作れることがわかってもらえるかなと思います。ぜひ設定を変えてみたり他のAPIを利用してサービスを作ってみてもらえたらと思います。

Discussion