Open7

LangChainについてまとめとく

がくがく

概要

  • LLMを使ったアプリケーション開発のフレームワーク
  • pythonやjs/tsで実装されている

ユースケース

  • 文書の要約
  • チャットボット
  • ドキュメントへのQ&A など
がくがく

LangChainのモジュール

Models > Prompts > Chains > Indexes > Memory > Agents の6つ。

Models

Langchainで使用する機械学習のモデル。

LLMS:

  • OpenAIのCompletions API(text-davinci-003)などの大規模言語モデル

Chat Models:

  • Open AIのChat API(gpt-4やgpt-3.5-turbo)のためのモジュール

Text Embedding Models:

  • テキストをベクトル化するモデル

Completions API 実装例:

from langchain.llms import OpenAI

llm = OpenAI(model_name="text-davinci-003", temperature=0)
result = llm.predict("自己紹介しなさい")
print(result)

Chat API実装例:

from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

result = chat.predict("自己紹介しなさい")
print(result)
がくがく

Prompts

モデルへの入力を組み立てるためのモジュール。

4つの要素がある。

  • Prompt Templates
  • Chat Prompt Templates
  • Example Selectors
  • Output Parsers

Prompt Templates 実装例:

from langchain.prompts import PromptTemplate

template = """
次のコマンドを説明してください。

コマンド: {command}
"""

prompt = PromptTemplate(
  input_variables=["command"],
  template=template
)

result = prompt.format(command="ls")
print(result)
がくがく

Chains

モジュールの(Models、 Templates、Chainsなど)を連結する。

Chains実装例:

import langchain
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate

langchain.verbose = True

chat = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

template = """
次のコマンドを説明してください。

コマンド: {command}
"""
prompt = PromptTemplate(
  input_variables=["command"],
  template=template
)

chain = LLMChain(llm=chat, prompt=prompt)

result = chain.run("ls")
print(result)
がくがく

Retrieval(Indexes)

外部のデータを用いて回答を生成する。

種類

  • Document Loaders: いろんなリソースからドキュメントをロードする。PDFやCSVなどのデータを読み込むための機能。
  • Document Transformers: 読み込まれたドキュメントやテキストデータを大規模言語モデルが扱いやすい形に変換する機能。
  • Text Embeding Models: 自然言語の文章や単語を数値のベクトルに変換するモデル。
  • Vector Stores: ベクトル化されたデータを管理するための機能。
  • Retrievers: ドキュメント検索するための機能。
  • Indexing: 大量のテキストデータを効率よく検索できるように整理・構造化する機能。
がくがく

Memory

プロンプトに履歴を残すことによって過去の会話を踏まえた応答ができるようになる。

種類

  • Chat Message History
    • Chatの履歴データを管理するための機能
  • Simple Memory
    • Chain上で最初に設定できる共有メモリの機能
  • Buffer memory
    • ChainsやAgents間で履歴データを共有するためのメモリ機能

BufferMemory実装例

import langchain
from langchain.chains import ConversationChain
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory

langchain.verbose = True

chat = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo", max_tokens=100)
conversation = ConversationChain(llm=chat, memory=ConversationBufferMemory())

while True:
  user_message = input("You: ")
  ai_message = conversation.predict(input=user_message)
  print(f"AI: {ai_message}")
がくがく

Agents

LLMが様々なツールを選択して使用しながら動作する。

ツールの例

  • Bash
  • Google Search
  • Wikipedia API