LangChain: 言語モデルの力を活用するための初心者ガイド
導入
2024 年、私たちは今、chatGPT やその他の LLM が私たちの生活にもたらした可能性を認識しており、また、chatGPT がどれほど強力であるかも知っています。 同じ目的を果たすために自分自身で何かを構築したい場合は、Langchain の力を活用することで簡単に実行できるようになりました。
Langchain は、Large Language Model (LLM) を使用したアプリケーションの開発に使用できるフレームワークです。 大規模言語モデルは、人間のような言語を理解して生成するために、コーパスとして知られる膨大な量のテキスト データでトレーニングされた高度な機械学習モデルです。例には、OpenAI によって開発された GPT-4 (Generative Pre-trained Transformer 4)、Google によって開発された BERT (Bidirectional Encoder Representations from Transformers)、再び Google によって開発された PaLM などが含まれます。リストは続きます。
LangChain は、テキスト要約、チャットボット、質問応答、その他多くの機能を含む、さまざまな目的のアプリケーションの作成に役立ちます。
前提条件
- Python の基本知識: Python の構文とライブラリに関する知識。
- API の理解: API の操作方法を認識します。
- AI/ML の入門概念: 言語モデル (GPT など) の基本的な知識。
- 環境セットアップ: Python は依存関係用に pip とともにインストールされます。
- IDE またはノートブック: VSCode、PyCharm、Jupyter Notebook などのツールにアクセスします。
ラングチェーンの紹介
LangChain は、言語モデルを活用したアプリケーションを作成するための堅牢なフレームワークとして機能します。これらのアプリケーションには次の機能があります。
コンテキスト認識の活用: 言語モデルを、プロンプトの指示、数ショットの例、コンテキスト コンテンツなどのさまざまなコンテキスト ソースとシームレスに統合します。これにより、アプリケーションは関連情報に基づいて応答を行うことができます。
推論を有効にする: 言語モデルの力を活用して推論プロセスに取り組み、提供されたコンテキストに基づいて適切な応答を決定できるようにします。これは、アプリケーションの機能内で実行するアクションについて情報に基づいた意思決定を行うことにも及びます。
ラングチェーンを使用する理由
これらの概念を初めて知ったときに私たちの頭に浮かんだ最大の疑問の 1 つは、なぜ Langchain を使用するのかということでした。信じられないほど強力な chatGPT がすでにあります。では、なぜ別のフレームワークが必要なのでしょうか?
この記事では、Langchain の概要と、Langchain を使用する必要がある状況について説明します。
LangChain は、さまざまな言語モデル モデル (LLM) 用の多用途インターフェイスであり、一元化された開発環境を提供します。そのモジュール型アプローチにより、開発者やデータ サイエンティストは、コードを大幅に書き直すことなく、プロンプトと基盤モデルを簡単に比較できます。この柔軟性により、ユーザー クエリの解釈に 1 つを使用し、応答の生成にもう 1 つを使用するなど、アプリケーション内で複数の LLM を統合できます。
OpenAI の GPT 3.5 LLM を使用するアプリケーションである ChatGPT は、一部のクエリを拒否する可能性のある方法で実行できる内容を制御します。多くの制限もあります。たとえば、トレーニング コーパスには最近のデータが含まれておらず、ありがたいことに当社の人事データにはアクセスできません。この結果、最近まで、特定のタスク用にカスタマイズされた chatGPT インスタンスを構築するのは非常に困難でした。
ただし、Langchain フレームワークを使用すると、独自のアプリケーションを構築してデプロイすることもできます。
LangChain は幅広い LLM をサポートしているため、API キーだけで LLM を簡単にインポートできます。 LLM クラスは、すべてのモデルの標準化されたインターフェイスを保証します。 LangChain 経由でこれらの LLM を使用するには、ユーザーは通常、プロバイダーでアカウントを作成して API キーを取得する必要がありますが、関連コスト、特に OpenAI などのプロバイダーからのコストがかかります。ここでは、HuggingFace API キーを使用して、LangChain を無料で使用します。そうは言っても、今後の記事では OpenAI の API キーを使用して、必要に応じてアプリケーションを構築することもできます。
ラングチェーンのデモ
この記事では、Hugging Face API を利用し、要約に Bart モデルを活用してテキスト サマライザーを構築するプロセスについて説明します。
1.必要なモジュールをインストールする
!pip install langchain
!pip install langchain openai tiktoken transformers accelerate cohere --quiet
!pip install -U huggingface_hub
2.Hugging Face Tokenを使用して環境変数を設定します
import os
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "your token"
トークンは通常、Hugging Face Web サイトでアカウントを作成し、アカウント設定から API トークンを生成することによって取得されます。これは、トークンを作成して表示するためのスクリーンショットです。
3.「ハグフェイスハブ」をインポートする
from langchain import HuggingFaceHub
4.Hugging Face Hubを使用してテキストサマライザーを初期化します。
summarizer = HuggingFaceHub(
repo_id="facebook/bart-large-cnn",
model_kwargs={"temperature":0, "max_length":180}
)
repo_id="facebook/bart-large-cnn"
: このパラメータは、使用するハグ顔モデルのリポジトリ ID を指定します。この場合、「facebook/bart-large-cnn」に設定されており、Facebook による BART (Bidirection and Auto-Regressive Transformers) モデルを示します。
5.短い記事を要約するためにモデルの使用を開始します。
ARTICLE = """ Seventy-five years on, it is crucial to remember the sacrifices of the millions who fought and perished during World War II. Memorials and museums worldwide stand as testaments to the enduring impact of the war on the collective human consciousness.
In retrospect, World War II serves as a stark reminder of the consequences of unchecked aggression and the importance of international collaboration. The lessons learned from this tumultuous period continue to shape global politics, emphasizing the imperative of maintaining peace and fostering understanding in our interconnected world
"""
#create the function to summarize any text
def summarize(llm, text) -> str:
return llm(f"Summarize this: {text}!")
summarize(summarizer, ARTICLE)
出力:-
'It is crucial to remember the sacrifices of the millions who fought and perished during World War II. Memorials and museums worldwide stand as testaments to the enduring impact of the war on the collective human consciousness. The lessons learned from this tumultuous period continue to shape global politics, emphasizing the imperative of maintaining peace and fostering understanding.'
「TypeError: issubclass() arg 1 must be a class」というエラーが発生した場合は、コード !pip install --force-reinstall testing-extensions==4.5.0 を使用して、カーネルを再起動してください。
定義
プロンプト
言語モデルのプロンプトは、モデルの応答をガイドするために設計された、ユーザーが提供する一連の指示または入力です。これは、質問への回答、文章の完成、会話への参加など、モデルがコンテキストを理解し、関連する出力を生成するのに役立ちます。
チャットモデル
ChatModel は LangChain で中心的な役割を果たします。 LangChain は、さまざまなモデルと連携するための標準化されたインターフェイスとして機能します。具体的には、このインターフェイスはメッセージのリストを入力として受け入れ、メッセージを出力します。
ChatModel クラスは、OpenAI、Cohere、Hugging Face などの複数のモデル プロバイダーにわたって一貫したインターフェイスを確立するように意図的に設計されています。
エージェント
エージェントはその中核として、言語モデルを活用して、実行する一連のアクションについて決定を下します。事前に定義された一連のアクションがコード内に直接ハードコーディングされているチェーンとは異なり、エージェントは llm を推論エンジンとして使用して、実行するアクションとその順序を決定します。
チェーン
チェーンは LangChain のワークフローのバックボーンを形成し、言語モデル モデル (LLM) を他のコンポーネントとシームレスに統合して、一連の機能の実行を通じてアプリケーションを構築します。
基本的なチェーンは LLMChain で、モデルとプロンプト テンプレートを直接呼び出します。たとえば、プロンプトを「ExamplePrompt 」として保存し、Flan-T5 で実行することを検討してください。 langchain.chains から LLMChain をインポートすると、LLMChain(llm=flan-t5, Prompt=ExamplePrompt) のようにchain_example を定義できます。指定された入力のチェーンを実行するのは、chain_example.run(“input ”) を呼び出すのと同じくらい簡単です。
1 つの関数の出力が次の関数の入力として機能する必要があるシナリオでは、SimpleSequentialChain が役に立ちます。このチェーン内の各機能は、特定の要件に応じて、多様なプロンプト、ツール、パラメーター、さらには異なるモデルを使用できます。
メモリ
まだベータ段階にある記憶は、会話において不可欠な要素です。これにより、過去の会話から情報を推測することができます。ユーザーには、すべての会話の完全な履歴の保存、進行中の会話の要約、最新の n 回のやり取りの保持など、さまざまなオプションがあります。
Langchain のメモリ プロセス (ソース)
結論
LangChain で作成されたアプリケーションは、単純な質問応答やテキスト生成タスクから、LLM を「推論エンジン」として使用するより複雑なソリューションまで、さまざまなユースケースに優れたユーティリティを提供します。 ” - IBM
Langchain は、チャットボット (最も有名)、テキスト サマライザー、質問応答などのアプリケーションを構築および展開するための素晴らしいプラットフォームを提供します。さらに、HuggingFace と LangChain のコラボレーションは、自然言語処理 (NLP) の画期的な進歩の舞台を整え、多数のアプリケーションや業界にわたって、より高度な言語モデルと強化された言語理解の可能性を提供します。
この記事は以上です!!将来的には、Langchain でさらに多くのデモとチュートリアルを提供する予定です。この記事は、この驚くべき広大なフレームワークについての簡単な紹介でした。
記事をお読みいただければ幸いです。
読んでいただきありがとうございます。