OllamaとLangchainでWebページを要約する方法【Pythonコード解説】

前回の記事でollama+Langchainが動くこと確認できたので、次はWebページをLLMに与えて、要約できるのかトライしてみました。

ollama+Langchain動作環境構築やollamaのインストール方法については、以下を参照してみてください。

では早速やっていきます!!

プログラム全貌

まずはプログラム全体をお見せします。

import os
import sys

from langchain_community.document_loaders import WebBaseLoader

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate

URL = "https://niyanmemo.com/3713/"

def main():

    loader = WebBaseLoader(URL)
    docs = loader.load()
    print(docs[0].page_content)

    llm = Ollama(model="gemma2")

    chat_template = ChatPromptTemplate.from_messages(
        [
            ("system", "あなたは優秀なライターです。"),
            ("human", "このHTMLの内容を日本語で要約してください"),
            ("human", "{input}"),
            
        ]
    )
    chain = chat_template | llm
    result = chain.invoke({"input":docs[0].page_content})
    print(result)
    

if __name__ == '__main__':
    main()

実行結果

↓の通り回答が返ってきて、それっぽいことを言ってくれています。
以下のページのURLを与えて要約させています。

記事の内容から、PyInstallerを使う方法について説明されてますね!

簡単に言うと、 **PyInstaller は Python のプログラムを .exe ファイルに変換して実行できるようにするツール** です。  つまり、Python をインストールしていない Windows ユーザーでも、あなたの作った Python プログラムを実行できるようになります。

**PyInstaller の使い方**

1. まずは PyInstaller をインストールしましょう:

   ```bash
   pip install pyinstaller
   ```

2. インストールしたら、ターミナルで `pyinstaller` コマンドとあなたのスクリプトファイルの名前を指定します。 例えば、「my_script.py」という名前のプログラムを実行したい場合は、次のコマンドを入力します。

   ```bash
   pyinstaller my_script.py
   ```

3. これで PyInstaller は自動的に .exe ファイルを作成してくれます。通常はスクリプトと同じディレクトリに `.exe` ファイルが生成されます。


**実行方法**

作成された `.exe` ファイルをダブルクリックすると、Python のプログラムが実行されます。インストールが不要な点も大きな利点 ですね!

記事では PyInstaller を使うことで、.exe ファイルの容量を小さくする方法についても解説されているようですので、ぜひ読んでみてください。



**より詳しい情報:**
* **PyInstaller 公式サイト:** https://www.pyinstaller.org/

プログラム説明

langchain_community.document_loaders のWebBaseLoaderを使って、Webページを読み出ししています。
以下がその箇所になります。

URL = "https://niyanmemo.com/3713/"

    loader = WebBaseLoader(URL)
    docs = loader.load()
    print(docs[0].page_content)

まず、WebBaseLoaderにURLを設定して、インスタンスを取得します。
続いて、loadすれば、URLを呼び出しして、中身をロードしてくれます。

ページの内容確認するには、docs[0].page_contentとすれば中身が確認できます。
※画像などは空白になるので、改行だらけの文字列がこの中に入っています。
おそらく、page_contentの代わりにmeta_dataなどを読むようにすれば、画像とかもとれるんじゃないかんと思いますが、今回は見ていません。

ちなみに、docs[0]となっているのは、マルチページを読み出しすることも可能なようで、そのためにリスト型になてっいる模様です。

マルチページをロードする場合は、以下の通りすればできるようです。

loader = WebBaseLoader(URL1,URL2)

この後は、LLMに読み出しした値を入力すれば、要約した答えが返ってきますが、前回とほぼ同じ内容なので、今回は説明は記載しません。
ここが知りたい方は、前回の記事(https://niyanmemo.com/3762/)を確認してみてください。

まとめ

LangchainのAPIには、Webの他にjsonとか様々なAPIが標準で用意されているので、非常に簡単に処理ができることが確認できました。
みなさんも簡単なのでぜひ試してみてください!!
また、何かLangchainの制御系で試してみたものがあればシェアしていきますので興味あれば確認してみてください。


最後に、Pythonの基礎を学びたい方は以下がおすすめです。私も持っていてたまに眺めて勉強していますものですのでぜひ購入して学習してみてください。

langchainについて学びたいという方は,以下をちょっと見繕ってみましたので、参考にしてみてください。

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村