⛳
chatGPTに大量の文章を要約させたい時に使えるLangChainとは
chatGPTの文章の要約能力は非常に便利ですね。
この能力は非常に便利なのですが、例えば論文の要約をさせたい時、1つ1つの論文をchatGPTのAPIに投げているとリクエスト数も処理時間もかかってしまいます。
これをなんとか1度に行うことができないかを調べていた中で、LangChainというフレームワークに出会いました。LangChainを使うことで、上記の問題を解決することができそうです。
それではLangChainの説明です。
LangChainは、言語モデルを活用したアプリケーションを開発するためのフレームワークです。LangChainは、以下の6つのメインモジュールに対応しています。
- Models: LangChainがサポートする様々なモデルタイプとモデル統合
- Prompts: プロンプトの管理、最適化、シリアル化を含む
- Memory: チェーン/エージェントの呼び出し間で状態を保持する概念であり、LangChainは、標準インターフェースを提供し、メモリ実装のコレクション、およびメモリを使用するチェーン/エージェントの例を提供します。
- Indexes: 言語モデルは、自分自身のテキストデータと組み合わせることでより強力になることがあります。このモジュールでは、そのためのベストプラクティスをカバーしています。
- Chains: LangChainは、LLMまたは別のユーティリティへの単一の呼び出しを超えて、呼び出しのシーケンスであるチェーンを提供します。LangChainは、標準インターフェース、他のツールとの多数の統合、および一般的なアプリケーションのためのエンドツーエンドチェーンを提供します。
- Agents: エージェントには、Actionを選択し、そのActionを実行し、Observationを見て、それを繰り返すLLMが含まれます。LangChainは、標準インターフェース、選択可能なエージェントの数、およびエンドツーエンドエージェントの例を提供します。
公式ドキュメントはこちら。
データの準備
from langchain import OpenAI, PromptTemplate, LLMChain
from langchain.chains.mapreduce import MapReduceChain
from langchain.prompts import PromptTemplate
# 要約に使用したいモデルを定義
llm = OpenAI(temperature=0)
long_text = "(要約したい長文)"
from langchain.text_splitter import CharacterTextSplitter
# 長文を分割するオブジェクトを定義
text_splitter = CharacterTextSplitter()
# 要約したい長文の分割
texts = text_splitter.split_text(long_text)
from langchain.docstore.document import Document
# 分割した長文を書く文章ごとにDocumentオブジェクト化
docs = [Document(page_content=t) for t in texts]
要約の実行
from langchain.chains.summarize import load_summarize_chain
chain = load_summarize_chain(llm=llm,
chain_type="map_reduce", # 要約の仕方 stuff, map_reduce, refineから選ぶ
return_intermediate_steps=True # 分割された文章ごとの要約結果を返すか
)
# 要約の実行
chain.run(docs)
このフレームワークを使うことで、大量文章を一度に要約することが可能になりそうです。
もちろん、株式会社piponでも技術でお困りのことがある方はオンライン相談が可能です。
こちらから会社概要資料をDLできます!
お問い合わせ内容に「オンライン相談希望」とご記載ください。
株式会社piponでは定期的に技術勉強会を開催しています。
ChatGPT・AI・データサイエンスについてご興味がある方は是非、ご参加ください。
株式会社piponではChatGPT・AI・データサイエンスについて業界ごとの事例を紹介しています。ご興味ある方はこちらのオウンドメディアをご覧ください。
Discussion