aitoolJapan
AIツールカテゴリーランキング
LangChain Agents icon

LangChain Agents

4.9312 評価0 収集
ツール概要:
LangChainのエージェントフレームワーク。AIモデルにツールへのアクセスを提供し、複雑なタスクを自律的に解決できるようにします。
収録日時:
2025/5/18
月間訪問:
120,000
SNSとメディア:
GitHubTwitter
AIエージェント

LangChain Agentsとは?

LangChain Agentsとは

LangChain Agentsは、LangChainフレームワークの一部として提供される、大規模言語モデル(LLM)を使用した自律型エージェントを構築するためのツールセットです。これらのエージェントは、与えられた目標に基づいて推論し、外部ツールを使用して、複雑なタスクを自律的に解決することができます。

主な特徴

  • ツール使用能力: エージェントは検索、計算、APIアクセスなど様々なツールを使用可能
  • 推論エンジン: ReAct、ReflexionなどのプロンプトフレームワークによるLLMの推論能力強化
  • 柔軟なアーキテクチャ: 様々なLLM(OpenAI、Anthropic、Hugging Faceなど)と互換性あり
  • メモリシステム: 会話履歴や重要情報を記憶する機能
  • エージェントタイプ: 単一ステップ、マルチステップ、プランと実行など様々なエージェントタイプ
  • ツールキット: 特定のドメイン向けに最適化されたツールセット
  • エコシステム: 広範なLangChainエコシステムとの統合

主なエージェントタイプ

  1. MRKL (Modular Reasoning, Knowledge and Language): 複数のモジュールを組み合わせて推論するエージェント
  2. ReAct (Reasoning + Acting): 推論と行動を交互に行うエージェント
  3. Plan-and-Execute Agent: 計画を立ててから実行するエージェント
  4. OpenAI Function Agent: OpenAIのFunction Callingを活用したエージェント
  5. XML Agent: XMLフォーマットを使用して構造化された出力を生成するエージェント

ユースケース

  1. 情報検索と分析: ウェブ検索、データベースクエリ、情報統合
  2. データ処理: データの取得、変換、分析、可視化
  3. タスク自動化: スケジュール管理、予約、リマインダー設定
  4. カスタマーサポート: 質問応答、トラブルシューティング、情報提供
  5. 研究支援: 文献調査、情報収集、仮説検証
  6. コンテンツ作成: 記事執筆、コード生成、クリエイティブ作業

LangChain Agentsは、特に複数のツールやデータソースを組み合わせる必要がある複雑なタスクや、ユーザーの意図に基づいて適切なツールを選択する必要があるタスクに適しています。

LangChain Agentsの使い方

LangChain Agentsの使い方

インストール

pip install langchain langchain-openai

基本的な使用例

from langchain_openai import ChatOpenAI
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.agents.agent_toolkits import create_python_agent
from langchain.tools.python.tool import PythonREPLTool

# LLMの初期化
llm = ChatOpenAI(model="gpt-4", temperature=0)

# 基本ツールの読み込み
tools = load_tools(["llm-math", "wikipedia"], llm=llm)

# エージェントの初期化
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    handle_parsing_errors=True
)

# エージェントの実行
response = agent.invoke({"input": "2019年のノーベル物理学賞受賞者は誰ですか?また、受賞理由を簡単に説明してください。"})
print(response["output"])

様々なエージェントタイプ

ReActエージェント

from langchain.agents import AgentType

# ReActエージェントの初期化
react_agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

OpenAI Functionsエージェント

from langchain.agents import AgentType

# OpenAI Functionsエージェントの初期化
functions_agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.OPENAI_FUNCTIONS,
    verbose=True
)

Plan-and-Executeエージェント

from langchain.agents import AgentExecutor
from langchain.agents.plan_and_execute.agent import PlanAndExecuteAgentExecutor
from langchain.agents.plan_and_execute.planners import load_chat_planner
from langchain.agents.plan_and_execute.executors import load_agent_executor

# プランナーとエグゼキューターの初期化
planner = load_chat_planner(llm)
executor = load_agent_executor(llm, tools, verbose=True)

# Plan-and-Executeエージェントの初期化
plan_agent = PlanAndExecuteAgentExecutor(
    planner=planner,
    executor=executor,
    verbose=True
)

# エージェントの実行
response = plan_agent.invoke({"input": "東京と大阪の人口を調べて、その差を計算してください。"})

カスタムツールの作成

from langchain.tools import BaseTool, StructuredTool, tool
from typing import Optional, Type
from pydantic import BaseModel, Field

# デコレータを使用した簡単なツール作成
@tool
def search_weather(location: str) -> str:
    """指定された場所の天気を検索します。"""
    # 実際には天気APIを呼び出す処理を実装
    return f"{location}の天気は晴れです。気温は25度です。"

# Pydanticモデルを使用した構造化ツール
class CalculatorInput(BaseModel):
    operation: str = Field(description="実行する数学演算(加算、減算、乗算、除算)")
    a: float = Field(description="最初の数値")
    b: float = Field(description="2番目の数値")

class Calculator(BaseTool):
    name = "calculator"
    description = "数学的な計算を実行するツール"
    args_schema: Type[BaseModel] = CalculatorInput
    
    def _run(self, operation: str, a: float, b: float) -> float:
        if operation == "加算":
            return a + b
        elif operation == "減算":
            return a - b
        elif operation == "乗算":
            return a * b
        elif operation == "除算":
            return a / b
        else:
            raise ValueError(f"サポートされていない演算: {operation}")
    
    def _arun(self, operation: str, a: float, b: float):
        raise NotImplementedError("このツールは非同期実行をサポートしていません")

# カスタムツールをエージェントに追加
tools = load_tools(["wikipedia"])
tools.extend([search_weather, Calculator()])

agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.OPENAI_FUNCTIONS,
    verbose=True
)

メモリの追加

from langchain.memory import ConversationBufferMemory

# メモリの初期化
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# メモリを持つエージェントの初期化
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.OPENAI_FUNCTIONS,
    memory=memory,
    verbose=True
)

# 会話の実行
agent.invoke({"input": "私の名前は田中です。"})
agent.invoke({"input": "私の名前は何ですか?"})

ベストプラクティス

  1. 適切なエージェントタイプの選択: タスクの性質に合わせて最適なエージェントタイプを選択
  2. エラーハンドリング: handle_parsing_errors=Trueを設定して、エージェントのエラーを適切に処理
  3. ツールの説明: ツールの説明は明確かつ詳細に記述し、LLMが適切に選択できるようにする
  4. 入力検証: ユーザー入力やツールの入出力を適切に検証し、エラーを防止
  5. モデル選択: 複雑なタスクにはGPT-4などの高性能モデルを使用
  6. デバッグ: verbose=Trueを設定して、エージェントの思考プロセスを確認
  7. コンテキスト管理: 長い会話ではメモリを適切に管理し、コンテキストウィンドウの制限に注意
LangChain Agentsのスクリーンショット

© 2025 aitoolJapan. All rights reserved.

プライバシーポリシー利用規約お問い合わせ