LangChain.jsは、大規模言語モデル(LLM)と連携するアプリケーションを開発するためのフレームワークです。LLMは、自然言語処理の分野で高い性能を発揮する人工知能の一種です。LangChain.jsは、LLMをデータや環境と結びつけて、より強力で差別化されたアプリケーションを作ることができます。この記事では、LangChain.jsを使ってフロントからWeb記事をロードして要約を書くところを紹介します。

やり方だけ記載するが、ポイントとしては、ロード→分割→LLM投げる という流れが、公式ドキュメントではわからないので、そこを補えればと。

LangChain.jsのインストール

LangChain.jsは、npmパッケージとして提供されています。npmを使ってインストールすることができます。以下は、LangChain.jsをインストールする方法です。

yarn add langchain
Setup and Installation | 🦜️🔗 Langchain
Updating from <0.0.52? See this section for instructions.

Webデータをロードする

indexesを使いロードする

        import { CheerioWebBaseLoader } from "langchain/document_loaders/web/cheerio";

        const loader = new CheerioWebBaseLoader(url);
        const docs = await loader.load();
Web Loaders | 🦜️🔗 Langchain
These loaders are used to load web resources.

データの分割

        const splitter = new CharacterTextSplitter({
            chunkSize: 1000,
            chunkOverlap: 100,
        });

        const docOutput = await splitter.splitDocuments([
            docs[0],
        ]);
Text Splitters: Examples | 🦜️🔗 Langchain

ChatGPTに問い合わせする

ここでは、LangChainエージェントからURL参照が必要だったケースとしているので、Chainを利用する。llmは、const llm = new OpenAI({ で作ったもの。

        const chainA = loadQAStuffChain(llm);
        const res = await chainA.call({
            input_documents: docOutput,
            question: '要約して',
        });
        console.log(res)
Getting Started: Chains | 🦜️🔗 Langchain
Conceptual Guide

これでWEBの内容を要約してくれる。

注意点

Google検索結果などは、ページが大きすぎてToken上限にひっかかり、検索結果をそのままChatGPTに投げて解析してもらうという運用は今の所できなそう。