Shikata Ga Nai

Private? There is no such things.

LangChainのチェーン、エージェント、メモリ、ツールについてまとめてみた

Hello there, ('ω')ノ

 

LangChainは、大規模言語モデル(LLM)を活用して複雑なアプリケーションを構築するためのフレームワークです。

このフレームワークは、チェーン、エージェント、メモリ、ツールという四つの主要なコンポーネントで構成されています。

以下にそれぞれのコンポーネントの役割と具体例を示します。

 

1. チェーン(Chains)

役割:

チェーンは一連のタスクを順序付けて実行するプロセスを表します。各チェーンは特定の問題を解決するためのステップを定義し、それに従ってLLMを活用します。

 

具体例:

例えば、ユーザーがレストランの予約に関する質問をした場合、以下のステップを持つチェーンを構築することが考えられます:

 

・ユーザの質問を受け取る。

・必要に応じてユーザーに追加情報を求める。

・受け取った情報をもとにレストランの予約システムを確認。

・予約可能なオプションをユーザに提示。


from langchain.chains import SingleTurn

 

チェーンを使用して質問に回答

reservation_chain = SingleTurn(llm=llm)
response = reservation_chain.run("Table for two at 7 pm?")

 

2. エージェント(Agents)

役割:

エージェントは複数のチェーンやツールを統合し、それらを協調させて特定の目的を達成します。エージェントは、ユーザーからの入力に基づいて適切なチェーンを選択し、プロセス全体を管理します。

 

具体例:

カスタマーサポートのエージェントは、製品に関する問い合わせ、注文状況の確認、返品手続きなど、異なるカテゴリの問い合わせに対応するために複数のチェーンを使用することができます。

 

from langchain.agents import Agent

 

# エージェントが問い合わせタイプに応じて適切なチェーンを選択

support_agent = Agent(chains=[product_info_chain, order_status_chain, return_process_chain])

 

3. メモリ(Memory)

役割:

メモリは、アプリケーションが過去のインタラクションや重要な情報を保持し、それを将来の決定に利用する機能です。これにより、コンテキストを維持し、より一貫性のある応答を提供することが可能になります。

 

具体例:

顧客対応のチャットボットが、顧客の過去の購入履歴や以前の問い合わせを記憶しており、それに基づいてパーソナライズされたサポートを提供するシナリオです。


from langchain.memories import Memory

 

# メモリを利用して顧客情報を保持

customer_memory = Memory()
customer_memory.save(customer_id, {"previous_inquiries": inquiry_history})

 

4. ツール(Tools)

役割:

ツールは外部データベースやAPIと連携するためのインターフェースを提供し、アプリケーションが外部の情報やサービスにアクセスする手段を提供します。

 

具体例:

在庫管理システムのAPIと連携して、リアルタイムでの在庫情報をチェックするチェーン内で使用するツールです。


from langchain.tools import WebTool

 

# 在庫情報を確認するツール

inventory_tool = WebTool(base_url="https://api.inventorysystem.com")
product_stock = inventory_tool.get(f"/stock/{product_id}")

 

これらのコンポーネントを組み合わせることで、LangChainは複雑なビジネスロジックとシームレスなユーザーインタラクションを可能にし、LLMの潜在能力を最大限に引き出します。

 

Best regards, (^^ゞ