見出し画像

LangChain:初心者のためのガイド

Clip source: Getting Started with LangChain: A Beginner’s Guide! | by Pavan Belagatti | ITNEXT

LangChain初心者ガイド

Pavan BelagattiITNEXT
人工知能が世の中を変えていってる時代において、LangChainは大規模言語モデル(LLM)の能力を活用するために設計されたフレームワークとして登場しました。LangChainは、前例のない簡単さで複雑な生成AIアプリケーションを開発できるツールキットを提供しています。
この記事では、LangChainの複雑な部分に深く入り込み、AI駆動の言語ソリューションの構築プロセスをどのように簡素化するかを理解します。経験を問わず、LangChainのメカニズムを解読し、容易に生成AIアプリ開発ができるプラットホームを提供します。

LangChainとは何か?

2022年10月にHarrison Chaseによって開発され、LangChainはLLMなどの強力なアプリケーションを構築するためのオープンソースプラットフォームとしてデビューしました。ChatGPTのようなチャットボットやさまざまなカスタムアプリケーションを含むアプリケーションを構築するために設計されています。
LangChainは、データエンジニアがチャットボット、自動質問応答、テキスト要約などの多様なユースケースでLLMを利用するための包括的なツールキットを提供することを目指しています。
LangChainは図に示される、6つの主要モジュールで構成されています。

ByteByteGo

  1. LLMs:

    1. LangChainは、幅広いLLMとの相互作用を可能にする標準インターフェースとして機能します。

  2. Prompt construction:

    1. LangChainは、プロンプトの作成と処理を簡素化するために設計されたさまざまなクラスや関数を提供しています。

  3. Conversational memory:

    1. LangChainには、過去のチャット会話を管理および変更することができるメモリモジュールが組み込まれており、以前のやり取りを思い出す必要があるチャットボットにとって重要な機能となっています。

  4. Intelligent agents:

    1. LangChainは、エージェントに包括的なツールキットを提供しています。これらのエージェントは、ユーザーの入力に基づいてどのツールを利用するか選択することができます。

  5. Indexes:

    1. LangChainのインデックスは、LLMとの効果的な相互作用を促進する方法で文書を整理するための手法です。

  6. Chain:

    1. 単一のLLMを使用することはより単純なタスクには十分ですが、LangChainは、より複雑なアプリケーションのためにLLMを連鎖させるための標準インターフェースと一部の一般的に使用される実装を提供しています。これにより、LLM同士または他の専門モジュールとの間で連鎖させることができます。

LangChainの機能

上記の画像は、LangChainが情報を処理し、ユーザーのプロンプトに応答するための方法を示しています。最初に、システムは膨大なデータを含む大きなドキュメントから始めます。このドキュメントは、より小さな、より管理しやすいチャンクに分割されます。
これらのチャンクは後でベクトルに埋め込まれます。ベクトルとは、データをシステムが迅速かつ効率的に取得できる形式に変換するプロセスです。これらのベクトルは、ベクトル化されたデータを処理するために最適化されたデータベースであるベクトルストアに保存されます。
ユーザーがシステムにプロンプトを入力すると、LangChainはこのベクトルストアをクエリして、ユーザーのリクエストに密接に一致するか関連する情報を見つけます。システムは大規模なLLMを使用して、ユーザーのプロンプトの文脈と意図を理解し、ベクトルストアから適切な情報を取得します。
関連する情報が特定されると、LLMはそれを使用して、クエリに正確に対応する回答を生成または完成させます。この最終段階では、システムのデータ処理と言語生成能力の出力である、ユーザーに適した応答が提供されます。

LangChainチュートリアル:LangChainの始め方

このチュートリアルの開発環境として、SingleStoreのノートブック機能(無料で利用可能)を使用しましょう。

SingleStore Notebookは、Jupyter Notebookの機能を拡張して、データプロフェッショナルが簡単に作業や実験を行えるようにします。
このリンクは、SingleStoreDBのサインアップで、Notebooksを使用するためのものです。

SingleStoreとは?

SingleStoreは、高性能で高速なアプリケーション向けに設計された分散型のインメモリSQLデータベース管理システムです。リアルタイム分析を提供し、従来の運用データベースと分析データベースの機能を組み合わせ、トランザクションと分析を単一のシステムで実行できるようにします。
SingleStoreにサインアップして、ノートブックを使用しましょう。

SingleStoreにサインアップすると、$600相当の無料コンピューティングリソースも受け取れます。ぜひこの機会を活用しましょう。
「ノートブック」をクリックして、空白のノートブックから始めましょう。

「LangChain-Tutorial」など、お好きな名前で命名してください。

ノートブックを使い始めましょう。まず、このステップバイステップのガイドに従って、各ステップで示されたコードをノートブックに追加して実行してください。さあ、始めましょう!
Langchainを使用するために、まずpipコマンドでインストールしましょう。

!pip install -q langchain

LangChainと連携するには、OpenAIやHugging Faceのような1つ以上のモデルプロバイダとの統合が必要です。この例では、OpenAIのAPIを活用し、インストールは以下のように行うことができます。

!pip install -q openai

次に、playaroundをするために環境変数を設定する必要があります。
以下のように行うことができます。

import os
os.environ["OPENAI_API_KEY"] = "Your-API-Key"

Your-API-Keyを取得する方法を知る必要があります。ない場合は、このリンクにアクセスしてOpenAI APIキーを取得してください。[注意:APIキーを使用するためのクォータを引き続き持っていることを確認してください]
次に、OpenAIのようなLLMを取得し、このモデルで予測しましょう。
世界で最も人口の多い都市トップ5を私たちのモデルに尋ねましょう。

from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7)
text = "what are the 5 most populated cities in the world?"
print(llm(text))

ご覧の通り、私たちのモデルは予測を行い、世界で最も人口の多い都市5つを表示しました。

プロンプトのテンプレート

まず、プロンプトのテンプレートを定義しましょう。

from langchain.prompts import PromptTemplate
# Creating a prompt
prompt = PromptTemplate(
    input_variables=["input"],
    template="what are the 5 most {input} cities in the world?",
)

私たちはプロンプトを作成しました。予測を得るために、今度はフォーマットメソッドを呼び出して入力を渡しましょう。

チェーンの作成

これまで、LLMモデルの初期化方法と、このモデルを使用して予測を取得する方法を見てきました。さて、LLMChainクラスを使用してこれらのステップをチェーンさせてみましょう。

from langchain.chains import LLMChain
# Instancing a LLM model
llm = OpenAI(temperature=0.7)
# Creating a prompt
prompt = PromptTemplate(
  input_variables=["attribute"],
  template= "What is the largest {attribute} in the world?",
)

モデルの予測を見ることができます。

LangChain LLMを使用したアプリケーションの開発

再び、SingleStoreのノートブックを開発環境として使用し、非常にシンプルなチャットアプリケーションを開発しましょう。
空白のノートブックから始めて、ご希望の名前で名前を付けます。

  • まず、依存関係をインストールします。

pip install langchain openai
  • 次に、インストールされた依存関係をインポートします。

from langchain import ConversationChain, OpenAI, PromptTemplate, LLMChain
from langchain.memory import ConversationBufferWindowMemory
  • OpenAIのAPIキーを取得し、安全に保存してください。

  • LLMテンプレートを追加してカスタマイズします。

# Customize the LLM template 
template = """Assistant is a large language model trained by OpenAI.{history}
Human: {human_input}
Assistant:"""
prompt = PromptTemplate(input_variables=["history", "human_input"], template=template)


  • ChatGPTチェーンを安全に保存したAPIキーでロードしてください。人間の入力を「SingleStoreとは何ですか?」として追加します。入力は自由に変更できます。

chatgpt_chain = LLMChain(
llm=OpenAI(openai_api_key="YOUR-API-KEY",temperature=0),
           prompt=prompt,
           verbose=True,
           memory=ConversationBufferWindowMemory(k=2),
)
# Predict a sentence using the chatgpt chain
output = chatgpt_chain.predict(
       human_input="What is SingleStore?"
       )
# Display the model's response
print(output)

スクリプトは、OpenAI APIキーとプリセットのプロンプトを使用してLLMチェーンを初期化します。その後、ユーザーの入力を受け取り、その結果の出力を表示します。
期待される出力は以下の通りです。

人間の入力テキスト/コンテンツを変更して、これを使って遊んでみてください。
コード形式での完全な実行手順は、GitHubで利用可能です。

LangChainは、データエンジニアや開発者が大規模な言語モデルによって強化された最先端のアプリケーションを構築するためのフレームワークとして登場しています。従来のツールやプラットフォームとは異なり、LangChainは複雑なAIアプリケーションのための堅牢で多目的なフレームワークを提供しています。LangChainは開発者向けのただの別のツールではなく、AIによるアプリケーションの可能性を再定義する変革的なフレームワークです。

この記事が気に入ったらサポートをしてみませんか?